iTextSharp 生成的 Adob​​e Livecycle (XFA) 表单在 Acrobat 和 Reader 中呈现不同

Adobe Livecycle (XFA) forms generated by iTextSharp render differently in Acrobat and Reader

编辑:Link 测试下面的文件。

作为项目的一部分,我在 LiveCycle Designer 11.0 中创建了动态 PDF 表单。在转发给开发人员之前,这些表单在 Acrobat 中设置为 reader 启用。然后,他使用 iTextSharp 5.5.6 填充 PDF。

此表单有许多动态属性,包括隐藏字段、动态子表单等

当生成的表单在 Adob​​e Reader 11.0.12(我的版本,但其他版本受到影响)中打开时,表单是 a) 只读和 b) 甚至不显示所有动态字段尽管已经满足显示它们的标准并且它们已经填充了数据。显示了一些。

在 Adob​​e Acrobat 11.0.9 中打开时,表单按预期呈现。根据表单的逻辑,部分和字段是 displayed/hidden。该表格也是可填写的,它不是只读的或扁平化的。

当我比较 Acrobat 中表单的安全设置与 Reader 时,Acrobat 中的 "Filling of form fields" 设置设置为 "Allowed",而它设置为 [=36] =] 在 Reader 的安全设置中。

这是一个 link 压缩包,包含以下内容: 1) 在 iTextSharp 中生成的动态 PDF 2) 为表单自动生成的 class 文件 3)数据映射Program.cs文件

Link to Test file showcasing the issue

在 Acrobat 中打开文件时,它按预期工作。当它在 Reader 中打开时,它变为只读并且同时显示 SignatureA 和 SignatureB,而根据在“签名测试”部分中选择的单选按钮只应显示一个。

我无权访问代码库,因此无法自行测试应用程序。 iTextSharp 中是否有任何设置可能导致此问题?

感谢您提供的任何帮助!

您的 PDF 未通过增量更新进行更新,这会破坏 "reader enabled" 功能(数字签名因完全重写而失效)。

您应以追加模式创建 PdfStamper 实例:

iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, ms, '[=10=]', true);