相关疑难解决方法(0)

pdfbox:尝试解密PDF

根据这个答案,我正在尝试使用pdfbox解密pdf文档:

PDDocument pd = PDDocument.load(path);
if(pd.isEncrypted()){
    try {
        pd.decrypt("");
        pd.setAllSecurityToBeRemoved(true);
    } catch (Exception e) {
        throw new Exception("The document is encrypted, and we can't decrypt it.");
    }
Run Code Online (Sandbox Code Playgroud)

这导致

Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
at org.apache.pdfbox.pdmodel.PDDocument.openProtection(PDDocument.java:1601)
at org.apache.pdfbox.pdmodel.PDDocument.decrypt(PDDocument.java:948)
...
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
...
Run Code Online (Sandbox Code Playgroud)

路径是正确的,所以我不知道发生了什么.此外,如果我查看PDDocument.decrypt(String pw)方法,我会发现: 这将解密文档.仅出于兼容性原因提供此方法.用户应该使用新的安全层,尤其是openProtection方法.

这是什么意思?有人可以举例说明如何使用pdfbox正确解密pdf文档吗?

java encryption pdfbox

9
推荐指数
2
解决办法
7864
查看次数

标签 统计

encryption ×1

java ×1

pdfbox ×1