尝试在PDFBox中解密时出现异常

时间:2017-08-23 13:01:23

标签: java exception encryption spring-boot pdfbox

在尝试使用PDFBox解密加密的PDF时,我遇到了异常 -

java.lang.ArrayIndexOutOfBoundsException
 at java.lang.System.arraycopy(Native Method)
 at org.apache.pdfbox.pdfmodel.encryption.StandardSecurityHandler.computeEncryptedKey
 at org.apache.pdfbox.pdfmodel.encryption.StandardSecurityHandler.computeUserPassword

我正在使用的代码是

PDDocument doc = PDDocument.load(file);
if (doc.isEncrypted()) {
   StandardDecryptionMaterial dm = new StandardDecryptionMaterial(password);
   doc.openProtection(dm);
}

openProtection方法发生异常。 我也尝试了doc.decrypt方法,但结果相同。

我的maven包含

<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>pdfbox</artifactId>
  <version>1.8.13</version>
</dependency>
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcprov-jdk15</artifactId>
  <version>1.44</version>
</dependency>
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcmail-jdk15</artifactId>
  <version>1.44</version>
</dependency>

Java版本是1.7

我尝试了多个版本的PDFBox / bouncyCastle(1.8.7 / 1.46) - 但仍然存在此异常。

如果我尝试qpdf --decrypt来预先解密文件并且它运行正常。但是当我尝试使用代码解密时,它会因先前的异常而失败。

我在Spring Boot应用程序中使用它 - 这可能是一个原因吗?

如果有人能指出我可能的解决方案,我会非常感激。

1 个答案:

答案 0 :(得分:0)

谢谢Tilman Hausherr。

我尝试过PDFBox 2.0.7,它运行得很好。