我们正在使用通过 Adobe 生命周期设计器 9 生成的 PDF 动态表单。表单数据存储在 XFA 中,并由 iText 以及 Adobe Reader 中的用户交互设置(因此它是支持阅读器的 PDF 表单,并且签名仅锁定部分字段- 现场MDP)。
这是我们需要使用的场景,在此链接中您可以找到 PDF 的屏幕截图(https://onedrive.live.com/?cid=195541F2D86BFC76&id=195541f2d86bfc76%21107&v=3&authkey=%21AGtMASJ3wPHv1hU):
- iText 在 PDF 表单中填写 3 个字段(在我们的示例字段中标记为“被 S1 锁定 ...”)
- 用户更改先前字段之一中的值(标记为“由 S1 锁定”)并使用批准签名(通过字段 S1)签署文档,这将锁定前 3 个字段(标记为“由 S1 锁定...”)
- itext 填写其他没有被S1签名锁定的字段(标记为“Locked by S2 RO”)
- 用户显示 PDF 并验证签名 S1 后,Adobe Reader 显示字段 S1 中的签名无效的信息,因为尽管 iText 没有更改此字段值,但“被 S1 锁定”字段发生了更改。
以下是我在玩类似场景时的观察:
- 如果在第 2 步中用户没有对 iText 填写的字段(使用“Val3”)进行任何更改,而只是在字段 S1 中签署文档,则签名保持有效(在下面的链接中是文件:PDF_u1s1u2_validSig)
- 我们正在使用 iText 5.4.1,但是我们也尝试过 iText 5.5.5,结果相同
- 我们需要使用 Adobe Reader 11。但是,当我们在 Adobe Reader 9 中验证签名无效的 PDF 时,我们可以看到签名是有效的。我们尝试过的所有更高版本的 Adobe Reader 9.5、10、11 都显示签名无效。
- 如果我们在 Adobe Acrobat 中检查使签名无效的字段值,并将签名的修订版与签名无效的 PDF 进行比较,则该字段不会标记为已更改(两个版本中的值相同)所以我们不明白为什么它被标记为已更改。
无效和有效 PDF 的屏幕截图以及您可以在 URL 中找到的 PDF 表单:https ://onedrive.live.com/redir?resid=195541f2d86bfc76!108&authkey=!AGtMASJ3wPHv1hU&ithint=folder%2cpng
感谢您提供任何可以阐明为什么第一个签名无效的输入。