关于 Apache PDFBox 和 PDF 认证的问题
Posted
技术标签:
【中文标题】关于 Apache PDFBox 和 PDF 认证的问题【英文标题】:Question about Apache PDFBox and PDF Certification 【发布时间】:2020-12-24 04:59:22 【问题描述】:我们正在使用 Apache PDFBox 进行外部远程签名,源代码主要基于 Apache PDFBox 的官方示例。当我们尝试签署具有多个签名的文档时,我们注意到一些“问题”:它们是可见的签名。输入是具有一些签名持有者的文档。流程是: 未签名文档 -> 签名(graphic_signature1, cert1, unsigned_doc) -> signed_doc_1 -> 签名(graphic_signature2, cert2, signed_doc_1) -> signed_doc_2, .... 结果:
signed_doc_1:Adobe Acrobat 说:签名有效,无需修改 signed_doc_2 和后续的:Adobe Acrobat 说:自认证以来对本文档所做的更改是认证方允许的,不会使签名无效。我也读过这篇文章: https://help.adobe.com/en_US/livecycle/11.0/Services/WS92d06802c76abadb-3598a7d812dbeb3dcf3-7ff0.2.html
我想问什么:
这真的是个问题吗? (对不起,我只是一个开发者,对PDF认证的政策了解不多) 如果是问题,如何解决?签名时,已调用以下 saveIncrementalForExternalSigning: 签名选项=新签名选项(); signatureOptions.setVisualSignature(创建VisualSignatureTemplate(文档, signingRequest.getSignatureInfo().getPosition().getPageNumber(), rect, signature));
signatureOptions.setPage(signingRequest.getSignatureInfo().getPosition().getPageNumber());
doc.addSignature(signature, null, signatureOptions);
ExternalSigningSupport externalSigning = doc.saveIncrementalForExternalSigning(fos);
// invoke external signature service
byte[] cmsSignature = sign(externalSigning.getContent());
// set signature bytes received from the service and save the file
externalSigning.setSignature(cmsSignature);
已编辑:我能够通过注释调用 setMDPPermission(doc, signature, 2) 的代码行来“修复”该问题。 (在 Apache PDFBox 签名示例中)。谢谢!
【问题讨论】:
【参考方案1】:由 OP 发布:
我能够通过注释要调用的代码行来“修复”问题 setMDPPermission(文档,签名,2)。 (在 Apache PDFBox 签名中 样本)。谢谢!
【讨论】:
以上是关于关于 Apache PDFBox 和 PDF 认证的问题的主要内容,如果未能解决你的问题,请参考以下文章