当前位置: 首页 > 知识库问答 >
问题:

为什么这两个itext7签名和验证文档中的一个对Adobe DC阅读器无效?

许庆
2023-03-14

我有两个经过认证的pdf文档(使用基于Itext 7的相同机制签名和验证),当我使用adobe reader DC检查它们的有效性时,只有一个有绿色标记。

好的一个:https://1drv.ms/b/s!AKF6T4TAVWMVGWAIDLUQVPVHH1R

坏消息:https://1drv.ms/b/s!AkF6t4TavwMvgxQCMdGY61S1EvUh

问候

大卫·L

共有2个答案

楚德辉
2023-03-14

由于多个其他工具可以毫无问题地验证这两个文档......我们可能认为这是一个adobe阅读器错误。

特别是因为Adobe Acrobat本身就被撕裂了:

师博
2023-03-14

这不是Adobe的bug,而是一个功能。(还有一个iText bug)

当Adobe执行加密验证时,它还将执行其他检查,以查看签名是否受到攻击。它分析了几个嫌疑犯,如果分析结果是否定的,Adobe将向您显示一条错误消息。这是Adobe对分析和有效性的歪曲。然而,对于这些隐藏的需求有一个解决方案。

不幸的是,在特定情况下,当iText 7在非附加模式下使用时,会引入规范不允许的更改。问题是,iText引入了小节。规范允许您这样做,但第一次修订明确不允许这样做:

第7.5.4节交叉引用表[…]对于从未进行增量更新的文件,交叉引用部分应仅包含一个子部分,其对象编号从0开始。[...]

这将在计划于7月底发布的7.0.4版本中得到修复。

 类似资料:
  • 以同样的方式创建2个PdfSignatureFormFields,我在Adobe Reader中以不同的方式显示了2个字段:一个带有指示签名字段的小图片,另一个没有指示。 我使用细胞setNextRenader调用来创建这些字段,如下一个摘录所示:

  • 使用DocuSign API可以构建一个工作流,在该工作流中,我们将一个文档发送给两个(或更多)签名者,只要其中一个签名者签名,文档信封就被标记为“完整”...例如,我们将一个文档发送给a和B,一旦a签名,DocuSign就将信封标记为完整,而B不再需要签名。干杯!

  • 我需要将一个使用iText5进行PDF签名验证/创建的Java程序移植到iText7。 旧代码显然不能按原样工作,因为iText的大部分内容都经过了重组。 我找到的所有关于如何做到这一点的例子和教程都是针对iText5的。(非常好的)白皮书也是如此。它们依赖于通过方法返回的列表,在该方法上执行所有与签名相关的操作。 在iText7中,不再具有该方法。 有人知道iText7的例子/文档吗?

  • 一个示例用例: 错误:无法取消应用scalaz的类型验证为类型为的类型构造函数,该类型构造函数由类型类 的实例造成的 我可以为自己做一个,比如: 但是为什么还没有呢?毕竟,已经定义了方法。 此外,我不能有和在一起了(这花了我很长时间才弄清楚...),因为另一个复杂的错误... 模糊的隐式值:类似于(我的实例)和trait中的方法...两者都匹配一些... 我应该修改scaraz的源代码吗?或者我完

  • 然而,我想使用相同的文件,这意味着我不再假装复制PDF了。我要抓取文档,签名,并覆盖原来的。 由于我了解到让FileInputStream和FileOutputStream指向同一个文件不是一个好主意,所以我只是尝试使用file类。 我尝试了以下操作:

  • 我正在编写一个接收PKCS7数据(从签名的PDF文档中提取)的服务,并需要对其进行验证。 我使用iText7 PdfPKCS7进行验证,但签名验证总是失败。我可以从PKCS7读取所有其他信息(证书、时间戳等,我也用OpenSSL验证了这一点)。只有签名显示为无效。 下面是测试案例: 输出总是: 我想我在进口方面做错了什么,但就是找不到什么... 顺便说一句,验证其他pdf工具(Adobe DC、P