Java 验证时如何将PDF批注与签名连接?
我试图验证pades签名,但带有警告,就像在AdobeReader中一样(有后续更改…)。我可以验证签名的完整性,但如何检查文档签名后是否添加了批注?我可以从pdf中列出注释,如: /注释[8 0 R 27 0 R 41 0 R] 它显示:签名(80R)、注释(270R)和另一个签名(410R) 如果我理解正确的话,第一个数字的顺序(8,27,41)表示它们在pdf中的排列顺序。也许我错了? 如果是真的,如何获取注释值及其属性?请查看我的书。图2.20显示了PDF经过多次签名后的外观: 以您为例,修订版1很可能包含以下注释:Java 验证时如何将PDF批注与签名连接?,java,itext,digital-signature,pdf-annotations,Java,Itext,Digital Signature,Pdf Annotations,我试图验证pades签名,但带有警告,就像在AdobeReader中一样(有后续更改…)。我可以验证签名的完整性,但如何检查文档签名后是否添加了批注?我可以从pdf中列出注释,如: /注释[8 0 R 27 0 R 41 0 R] 它显示:签名(80R)、注释(270R)和另一个签名(410R) 如果我理解正确的话,第一个数字的顺序(8,27,41)表示它们在pdf中的排列顺序。也许我错了? 如果是真的,如何获取注释值及其属性?请查看我的书。图2.20显示了PDF经过多次签名后的外观: 以您为
/Annots[8 0 R]
鉴于第2版包含:
/Annots[8 0 R 27 0 R]
/Annots[8 0 R 27 0 R 41 0 R]
第3版包括:
/Annots[8 0 R 27 0 R]
/Annots[8 0 R 27 0 R 41 0 R]
回答你的问题:它们在PDF中的排列顺序是这样的吗:可能不会总是这样(PDF是一种非常特殊的格式),但你的猜测是一个安全的假设
您希望检测在哪个签名之前或之后添加了哪些批注。要实现这一点,您必须提取每个PDF的不同版本
PDF总是以%%EOF
结尾,每个新签名都会在%%EOF
之后添加数据。返回上一版本意味着删除文件末尾的字节,直到到达下一个%%EOF
如果你想用iText来做这件事,你可以在我的书中找到一些例子