在尝试使用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应用程序中使用它 - 这可能是一个原因吗?
如果有人能指出我可能的解决方案,我会非常感激。
答案 0 :(得分:0)
谢谢Tilman Hausherr。
我尝试过PDFBox 2.0.7,它运行得很好。