原因是源 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 节“交叉引用表”)
通常这一点不会被注意到,Adobe Acrobat 在遇到导致 PDF 失效的小问题时通常相当宽松。
通常,也就是说,除非在签名修订后验证具有集成签名和增量更新的文档,在这种情况下,Adobe Acrobat 通常会认为此类问题可疑并且无法验证签名,即使在签名修订后验证相同的 PDF 时没有进行增量更新时它不会抱怨。
您的示例 PDF 根据其Info词典的制作者是Aspose.Pdf for Java 16.10.0
。事实上,众所周知,Aspose PDF 组件会创建此类无效的第一个交叉引用表,请参阅这个答案 https://stackoverflow.com/a/55939114/1729265和PDF/A-1 转换创建无效的外部参照表 https://forum.aspose.com/t/pdf-a-1-conversion-creates-invalid-xref-table/16903Aspose 免费支持论坛上的帖子。
iText 7 在其早期 7.0.x 版本中也生成了类似的损坏的交叉引用表,请参阅这个答案 https://stackoverflow.com/a/45163411/1729265.