PDFKitのバグ: PDFDocumentが間違ったセキュリティ権限を返す

XCode 10.3, macOS 10.14で確認。
*iOS上では未確認。

症状

macOSのPDFKitでPDFDocumentインスタンスの以下の値を使用してPDFにセットされているセキュリティ権限を取得すると、正しく取得できない場合がある。

developer.apple.com

  • PDFに印刷権限(低解像度、高解像度どちらでも良い)がセットされていると、コピー権限が無くてもallowsCopying=YESが返ってくる。
  • PDFにコピー権限がセットされていると、印刷権限が無くてもallowsPrinting=YESが返ってくる。

*macOSのプレビューは上記の値を見て処理をしているようで、本来コピーが許可されていないPDFでも印刷権限があれば内容のコピーができる。また印刷が許可されていないPDFでもコピー権限があれば印刷できてしまう。

対応方法

PDFDocument.documentRefを使ってCGPDFDocumentAllowsCopying()とCGPDFDocumentsAllowPrinting()を取得する。こちらは正しい値が返ってきている。