アクセス許可は、暗号化によってドキュメントに統合されます。
Acrobat Reader で開いたときにパスワードを要求しない PDF ドキュメントでさえ、暗号化されている場合があります。それらは基本的に、デフォルトのパスワードを使用して暗号化されています。これは、PDF の場合です。
PDFBox は、暗号化された PDF のアクセス許可を復号化中にのみ決定しPDDocument
ます。したがって、ドキュメントが暗号化されている場合は、ドキュメントのプロパティを検査する前に、ドキュメントを復号化する必要があります。
あなたの場合:
PDDocument document = PDDocument.load("<path_to_pdf_file>");
if (document.isEncrypted())
{
document.decrypt("");
}
System.out.println(document.getCurrentAccessPermission().canPrint());
空の文字列""
はデフォルトのパスワードを表します。ファイルが別のパスワードを使用して暗号化されている場合、ここで例外が発生します。したがって、それに応じてキャッチします。
PS:問題のすべてのパスワードがわからない場合でも、PDFBox を使用して権限を確認できますが、より低レベルで作業する必要があります。
PDDocument document = PDDocument.load("<path_to_pdf_file>");
if (document.isEncrypted())
{
final int PRINT_BIT = 3;
PDEncryptionDictionary encryptionDictionary = document.getEncryptionDictionary();
int perms = encryptionDictionary.getPermissions();
boolean printAllowed = (perms & (1 << (PRINT_BIT-1))) != 0;
System.out.println("Document encrypted; printing allowed?" + printAllowed);
}
else
{
System.out.println("Document not encrypted; printing allowed? true");
}