以下是我的代码,以了解我正在阅读的PDF是否受密码保护:
public static boolean isPasswordProtected(File document)
{
boolean ret = false;
try {
PDDocument originalPdfDoc = PDDocument.load(document);
ret = originalPdfDoc.isEncrypted();
originalPdfDoc.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ret;
}
但是对于某些PDF虽然没有密码保护,但它仍然是真的。这是了解pdf是否受密码保护的正确方法吗?
答案 0 :(得分:0)
这取决于你需要知道什么。某些PDF文件使用空用户密码加密,如果这些文件具有受限制的权限,则会执行此操作。如果你想接受这些,你应该尝试用openProtection()解锁它们:
doc.openProtection(new StandardDecryptionMaterial(""));
并且只有在失败的情况下(使用CryptographyException),返回true。
(此答案仅适用于1.8。*)
另见: How to distinguish between two encrypted / secured PDF files