pdfbox" isEncrypted" API没有给出期望的结果

时间:2015-10-14 14:24:23

标签: java pdfbox

以下是我的代码,以了解我正在阅读的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是否受密码保护的正确方法吗?

1 个答案:

答案 0 :(得分:0)

这取决于你需要知道什么。某些PDF文件使用空用户密码加密,如果这些文件具有受限制的权限,则会执行此操作。如果你想接受这些,你应该尝试用openProtection()解锁它们:

doc.openProtection(new StandardDecryptionMaterial(""));

并且只有在失败的情况下(使用CryptographyException),返回true。

(此答案仅适用于1.8。*)

另见: How to distinguish between two encrypted / secured PDF files