java - 使用 PDFBox 2.0.0 签署加密的 PDF 文档

标签 java pdf encryption pdfbox sign

我尝试签署允许签名的加密 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)

我不知道文件的通行证,但允许签名:

Document Restrictions Summary

我应该怎么做才能签署这份文件?

最佳答案

此问题已在 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/

相关文章:

java - 从命令行发送请求时出现 Http 404 错误

java - 带有选项卡和 ViewPager 的 AppBarLayout

c# - ASCII85解码和FlateDecoding连续解码时出错

shell - cryptsetup luks格式错误: Requested offset is beyond real size of device/dev/loop1

java - 全屏上的 Swing 布局边框边距

java - 从 gradle 项目中生成可执行文件

java - Itext PdfSmartCopy 获取空指针异常

asp.net - 需要对 ASP.Net 兼容的 HTML->PDF 库的建议

c# - 使用私钥签署程序集

java - JAVA中用于使用XML黑白两个系统进行数据交换的最佳加密解密算法