如何检查PDF是否受密码保护

我正在尝试使用iText的PdfReader来检查给定的PDF文件是否受密码保护,但我得到这个例外:

线程 “Main Thread” java.lang.NoClassDefFoundError:org/bouncycastle/asn1/ASN1OctetString 中的异常

但是,当针对非密码保护的文件测试相同的代码时,它运行良好。以下是完整的代码:

try {
    PdfReader pdf = new PdfReader("C:\\abc.pdf");
} catch (IOException e) {
    e.printStackTrace();
}

答案 1

在旧版本的 PDFBox 中

try
{
    InputStream fis = new ByteArrayInputStream(pdfBytes);                       
    PDDocument doc = PDDocument.load(fis);

    if(doc.isEncrypted())
    {
      //Then the pdf file is encrypeted.
    }
}

在较新版本的 PDFBox 中(例如 2.0.4)

    InputStream fis = new ByteArrayInputStream(pdfBytes);
    boolean encrypted = false;
    try {
        PDDocument doc = PDDocument.load(fis);
        if(doc.isEncrypted())
            encrypted=true;
        doc.close();
    }
    catch(InvalidPasswordException e) {
        encrypted = true;
    }
    return encrypted;

答案 2

从这里使用Apache PDFBox - Java PDF库:
示例代码:

try
{
    document = PDDocument.load( "C:\\abc.pdf");

    if(document.isEncrypted())
    {
      //Then the pdf file is encrypeted.
    }
}

推荐