【发布时间】: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 说:自认证以来对本文档所做的更改是认证方允许的,不会使签名无效。
我想问什么:
- 这真的是个问题吗? (对不起,我只是一个开发者,对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 签名示例中)。谢谢!
【问题讨论】:
标签: pdfbox