C# 使用iText(iTextSharp)在PDF中填充XFA表单字段?

C# 使用iText(iTextSharp)在PDF中填充XFA表单字段?,c#,pdf,itext,xfa,C#,Pdf,Itext,Xfa,我需要在PDF中填充XFA表单字段(使用Adobe LiveCycle Designer创建)。我们试图使用iText(实际上是带有C#的iTextSharp)来解析PDF,填充XFA字段,然后将修改后的PDF保存回原处 我能找到的所有关于iText的示例(很少有iTextSharp示例)都是关于修改AcroForm字段的。此PDF没有AcroForm字段,仅使用XFA 指向任何非标准资源的指针都会很有帮助(我已经在这个主题上做了必要的谷歌搜索,但没有发现任何有用的东西) 这里的代码示例对于任何

我需要在PDF中填充XFA表单字段(使用Adobe LiveCycle Designer创建)。我们试图使用iText(实际上是带有C#的iTextSharp)来解析PDF,填充XFA字段,然后将修改后的PDF保存回原处

我能找到的所有关于iText的示例(很少有iTextSharp示例)都是关于修改AcroForm字段的。此PDF没有AcroForm字段,仅使用XFA

指向任何非标准资源的指针都会很有帮助(我已经在这个主题上做了必要的谷歌搜索,但没有发现任何有用的东西)


这里的代码示例对于任何真正做过我想做的事情的人来说都是非常棒的。

书中提到了这一点,因为itext不这样做。你能转换你的PDF文件吗

如果可以将数据包放入PDF,Acrobat中的XFA运行时将使用数据包中的数据填充这些字段

如果您想查看其中一个表单的外观,请在LiveCycle Designer(Acrobat Pro附带)中创建一个表单,向其添加一些字段,然后将其另存为动态PDF。在Acrobat中打开表单,在字段中键入一些值并保存

使用一个工具打开PDF,可以查看PDF数据,您会发现/Catalog/AcroForm/XFA是一个流,其中包含一个包含您键入的值的数据包。这就是您需要自己创建并插入到PDF中的内容

XDP规范包括对数据包和合并算法的描述。你可以在这里找到它:


或者,您可以从Adobe购买LiveCycle服务器,该服务器允许您通过多种方式(包括通过web服务调用)以编程方式完成所有这些工作。

iTextSharp可以使用XFA。要消除所有疑问,请查看iText网站上的示例:


我也有同样的问题,我想我找到了解决办法。我正在使用Powershell检查pdf对象

加载iTextSharp DLL

Add-Type -Path "C:\Users\micah\Desktop\itextsharp.dll"
将PDF加载到变量中:

$PDF = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList "C:\Users\micah\Desktop\test.pdf"
检查此对象:

$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Get-Member
您应该看到,PDF上的所有字段都作为属性存在于该对象中。 您可以通过以下方式快速查看所有字段:

$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Select-Object -Property "*"

那应该是魔术票。此位置是原始表单和表单XFA部分的两个字段。

我只是在“iText in action”一书中查找了它,它的内容是“像这样的表单在本书中没有讨论过”,所以不要买这本书,希望得到答案。否。这是一个由政府生成的表单,我需要修改它,然后人们必须重新提交给政府。这本书已经过时了——自2006年以来,XFA已经提供了一些支持。例如,请参阅,这是@stevex的有用信息。非常感谢。在查看iTextSharp内部的对象时,我确实看到了xfa:datasets数据块(或者我认为与之对应的数据块)。这是一段很棒的代码,谢谢!您能给我们一个输入到FillXfaForm的XML格式的例子吗?谢谢
$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Select-Object -Property "*"