【发布时间】:2019-12-17 19:38:54
【问题描述】:
我正在尝试使用 PDFBOX 库签署 PDF(主要关注 CreateSignature 和 GitHub 中 example 包中的其他类)。
采用SignatureInterface 方法后,我将其提供给addSignature,但sign 方法未被调用。
相关代码sn-p:
private void signPDF(PDDocument document) throws Exception {
PDSignature signature = new PDSignature();
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setName("iSure");
signature.setLocation("IL");
signature.setReason("Security");
signature.setSignDate(Calendar.getInstance(TimeZone.getTimeZone("UTC")));
// this is the only 'foreign' call here, it looks exactly as in example
setMDPPermission(document, signature, 1);
document.addSignature(signature, new Signer());
}
在调用signPDF 之后,文档立即被保存到OutputStream。
PS:在 MDP 权限中,我需要删除“DigestMethod”条目,它未能通过 PDF/A 元数据验证 - 对吗?
【问题讨论】:
-
签名是在增量保存期间创建的。请按照
Create*Signature*示例进行操作,直至并包括该保存步骤。 -
是的,我自己在调试
COSWriter时发现了它,并在工作代码下方发布了(有一些设计问题:)),无论如何谢谢!