Pdf XFA动态表单-iText填充解锁字段无效签名

Pdf XFA动态表单-iText填充解锁字段无效签名,pdf,itext,digital-signature,invalidation,xfa,Pdf,Itext,Digital Signature,Invalidation,Xfa,我们使用的是通过Adobe生命周期设计器9生成的PDF动态表单。表单数据存储在XFA中,由iText以及AdobeReader中的用户交互进行设置,因此它支持阅读器的PDF表单和签名只锁定了一些字段——FieldMDP 这是我们需要使用的场景,在该链接中,您可以找到PDF的屏幕截图: iText在示例字段中以PDF格式填写3个字段,标记为S1锁定。。。 用户更改先前标记为S1锁定的其中一个字段中的值,并通过字段S1使用批准签名对文档进行签名,该字段将锁定先前标记为S1锁定的3个字段。。。 ite

我们使用的是通过Adobe生命周期设计器9生成的PDF动态表单。表单数据存储在XFA中,由iText以及AdobeReader中的用户交互进行设置,因此它支持阅读器的PDF表单和签名只锁定了一些字段——FieldMDP

这是我们需要使用的场景,在该链接中,您可以找到PDF的屏幕截图:

iText在示例字段中以PDF格式填写3个字段,标记为S1锁定。。。 用户更改先前标记为S1锁定的其中一个字段中的值,并通过字段S1使用批准签名对文档进行签名,该字段将锁定先前标记为S1锁定的3个字段。。。 itext填写另一个字段,该字段未被标记为已被S2锁定的S1签名锁定 在用户显示PDF并验证签名S1后,Adobe Reader会显示字段S1中的签名无效的信息,因为字段S1已锁定,但iText未更改此字段值。 以下是我在处理类似场景时的观察结果:

如果在步骤2中,用户没有对iText用“Val3”填写的字段进行任何更改,只是在字段S1中对文档进行了签名,则签名在文件下方的链接中仍然有效:PDF_u1s1u2_validSig 我们使用的是iText 5.4.1,但是我们也尝试了同样的结果 我们需要使用AdobeReader11。然而,当我们在AdobeReader9中验证带有无效签名的PDF时,我们可以看到签名是有效的。我们尝试过的所有更高版本的Adobe Reader 9.5、10、11都显示签名无效。 如果我们在Adobe Acrobat中检查使签名无效的字段值,并将签名版本与签名无效的PDF进行比较,则此字段不会被标记为已更改,因为两个版本中的值相同,因此我们不理解为什么会将其标记为已更改。 无效和有效PDF的屏幕截图,以及您可以在URL中找到的PDF表单:


感谢您提供的任何可以澄清第一个签名无效原因的信息。

您应该包括调用iText的代码。您使用的是追加模式吗?正如@Egl所说,请提供代码。据说。。。您在附加模式下使用PdfStamper填充字段,是吗?是的,我们在PdfStamper中使用附加节点。我们的代码:{public final byte[]setPdfDatafinal byte[]pdf,final byte[]data抛出异常{ByteArrayOutputStream baos=new ByteArrayOutputStream;PdfReader=new PdfReaderpdf;PdfStamper stamper=new pdfstampereder,baos,'\0',true;AcroFields form=stamper.getAcroFields;XfaForm xfa=form.getXfa;xfa.fillXfaFormnew ByteArrayInputStreamdata;stamper.close;返回baos.toByteArray;}}我无法从当前计算机访问您在邮件中包含的URL。这些URL中是否有PDF样本?如果没有,请提供PDF样本?您好,有,有PDF样本、PDF签名文档的截图以及读者签名验证结果。