我试图在数字签名的文档中添加LTV。在一些文件中,它工作得很好,但是在一些文件中,它不起作用。我随信附上所有文件以供参考。
我的LTV添加代码链接给出了下面的https://github.com/akr/pdftimestamp
成功输入和输出文件链接如下 inputFile:- com/EYn2S0SqxPBJi1f6qDPGBG0BPUj1uLkqj5aoerJOnIGlYg?e=1fqoZP outputFile:- JeTjnUB4-8ya7lcWyxhhgtvy1OkHQ?e=CYnX1r
输入和输出文件链接为失败的 inputFile:- com/Ecw0TtX8YzlPjZJT6OGJarYBx1yFBm2h1PvOSKPaKK1fuA?e=EC7Xsr com/Ecw0TtX8YzlPjZJT6OGJarYBx1yFBm2h1PvOSKPaKK1fuA?e=EC7Xsr com/ETf9smc-pkFPggRMXi1I1WsBJ6OZOzOj9lmvXPD25tgWiw?e=j24Ipe
请帮助我,为什么在某些文件中的签名被破坏使用相同的代码。
发布于 2021-05-21 16:55:30
原因是,源PDF和相应的第一次修订您的签名和扩展文件是坏的!
源PDF只有一个修订版,其交叉参考表如下所示:
xref
0 118
0000000000 65535 f
0000000018 00000 n
...
0000304213 00000 n
119 64
0000304499 00000 n
...
0000316209 00000 n
185 5
0000316253 00000 n
...
0000316837 00000 n
192 1
0000316969 00000 n
194 8
0000317581 00000 n
...
0000342232 00000 n( PDF的签署和扩展版本具有类似的第一修订版交叉参考表。)
如您所见,它由多个部分组成,并且有空白(例如,对象118没有条目)。
这是无效的:
对于从未增量更新的文件,交叉引用部分只应包含一个分段,其对象编号从0开始。
(ISO 32000-1和ISO 32000-2,在这两种情况下,第7.5.4节“交叉参考表”)
通常情况下,当遇到使PDF无效的小问题时,Acrobat通常是相当松懈的。
通常情况下,除了在签署修订后使用集成签名和增量更新对文档进行验证时,除外,在这种情况下,Acrobat经常认为此类问题可疑,并且无法验证签名,即使在签名修订后没有增量更新的情况下验证相同的PDF时它也不会抱怨。
根据其信息字典,您的示例PDF已由Aspose.Pdf for Java 16.10.0生成。事实上,众所周知,Aspose组件创建了这样的第一个无效的交叉参考表,请参阅这个答案和Aspose免费支持论坛上的PDF/A-1转换创建无效的XRef表线程。
iText 7还在其早期的7.0.x版本中生成了类似的破碎交叉引用表,参见这个答案。
https://stackoverflow.com/questions/67638405
复制相似问题