我有一个静态XFA PDF,我希望以编程方式填写。我可以使用Xfa.FillXfaForm()方法,这适用于更新XFA数据集DOM。但是,它不会更新相应的Acroform字段注释(静态XFA表单中包含XFA表单和Acroform)。符合XFA标准的渲染器将拾取并读取XML数据集Dom,但是,许多渲染器(如Google Chrome和Firefox)会忽略XFA字典,这意味着表单不会显示在那里。有没有办法让iText同步静态表单的Acroform和XFA值部分?我正在使用iTextSharp 5.
答案 0 :(得分:1)
我的回答和最好的建议是......不要!
如果您正在使用静态XFA 和 ,那么您的主要关注点是在非Adobe视图 和 你可以访问像iText这样的体面的图书馆工具,你最好从PDF中剥离XFA字典并处理AcroForm字段。一旦您获得了非XFA感知和XFA感知的观看者触摸PDF,确定哪组数据是正确的设置是有问题的,字段值与外观可能会不同步。任何FormCalc脚本和扩展字段都不会由非XFA查看器正确处理,因此完全没有XFA部分的优势。
在此过程中,您可以在XML输入和AcroForm字段名称之间构建一个映射,并将其存储在文档元数据中,这样您的应用程序就可以轻松地填充表单,就好像它仍然是XFA但您不需要担心在同一PDF中将数据与两种完全不同且不兼容的表单技术同步。 (老实说,我很想知道谁认为这首先是一个好主意)