我尝试签署允许签名的加密 PDF 文档。
本文档:Encrypted PDF document
使用 PDFBox 2.0.0 示例代码:CreateSignature.java
但是我遇到了这个异常:
Exception in thread "main" java.lang.NullPointerException
at org.apache.pdfbox.pdmodel.encryption.StandardSecurityHandler.computeRevisionNumber(StandardSecurityHandler.java:131)
at org.apache.pdfbox.pdmodel.encryption.StandardSecurityHandler.prepareDocumentForEncryption(StandardSecurityHandler.java:335)
at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1254)
at org.apache.pdfbox.pdmodel.PDDocument.saveIncremental(PDDocument.java:966)
at principal.CreateSignature.signDetached(CreateSignature.java:179)
at principal.CreateSignature.signDetached(CreateSignature.java:154)
at principal.CreateSignature.main(CreateSignature.java:334)
我不知道文件的通行证,但允许签名:
我应该怎么做才能签署这份文件?
最佳答案
此问题已在 PDFBox 2.0 RC3(今天发布)中修复,请尝试一下。
虽然 Gleb 的回答是善意的,但由于我在问题中所写的原因,它是不正确的: https://issues.apache.org/jira/browse/PDFBOX-2729
解决方案存在先读取并保存文件的问题,因此与签名前不再相同。另一个问题是我们必须使用与最初相同的方法和相同的加密 key 进行加密。对于 AES256,此(内部)加密 key 具有随机成分,即使用户向 API 提供相同的 key 也是如此。
关于java - 使用 PDFBox 2.0.0 签署加密的 PDF 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232684/