我正在使用.p12证书(成功)签署PDF。
问题是,签署PDF后,文件无法再修改。
我知道对PDF的任何修改都会破坏签名,但我仍然希望允许修改,以便客户端可以进行修改和编辑文本。
以下是我的有效签名的最小复制(我从Apache PDfBox的CreateSignature示例开始):
public void signDetached(PDDocument document, OutputStream output)
throws IOException {
PDSignature signature = new PDSignature();
signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE);
signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED);
signature.setName("Testing User");
signature.setLocation("Los Angeles, CA");
signature.setReason("Testing");
signature.setSignDate(Calendar.getInstance());
document.addSignature(signature, this);
document.saveIncremental(output);
}
这段代码向PDF添加了一个数字签名字典,但它似乎没有创建允许对文档进行进一步修改的批准签名。
我做错了什么?是否可以使用Apache PDFBox创建一个不可见的批准签名,允许修改并在修改发生时失效?
提前感谢您提供的任何帮助或见解!
1条答案
按热度按时间fslejnso1#
这段代码向PDF添加了一个数字签名字典,但它似乎没有创建允许对文档进行进一步修改的批准签名。
以下是您的基本误解,* 批准签名不允许进一步修改 *。
诚然,PDF规范没有提到如果只有批准签名,则允许更改的限制。另一方面,Adobe Acrobat多年来一直对此类文档施加限制,这些限制与具有MDPP值为3的认证签名的文档几乎相同,参见。this answer。此外,Adobe Acrobat确实强制执行这一点,它不允许其用户将其认为不允许的更改应用于PDF。
因此,
我知道对PDF的任何修改都会破坏签名,但我仍然希望允许修改,以便客户端可以进行修改和编辑文本。
Adobe Acrobat不支持此功能。其他PDF编辑器可能支持或不支持不允许的签名PDF操作。