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

Jay*_*ens 16 c# pdf itext xfa

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

我可以通过iText找到的所有示例(很少有iTextSharp示例)讨论修改AcroForm字段.此PDF没有AcroForm字段,仅使用XFA.

指向任何非标准资源的指针都会有所帮助(我已经完成了关于该主题的必要谷歌搜索并且没有找到任何有用的资源).

这里的代码示例对于任何实际完成我正在尝试的人来说都是非常棒的.

ste*_*vex 5

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

如果要查看其中一个是什么样的,请在LiveCycle Designer(Acrobat Pro附带)中创建表单,向其中添加一些字段,并将其另存为动态PDF.在Acrobat中打开表单并在字段中键入一些值并保存.

使用可以查看PDF数据的工具打开PDF,您将找到/ Catalog/AcroForm/XFA一个包含您键入的值的<xfa:datasets>数据包的流.这就是您自己创建并插入PDF所需的内容.

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

http://partners.adobe.com/public/developer/xml/index_arch.html

或者,您从Adobe购买LiveCycle服务器,它允许您以多种方式以编程方式执行所有操作,包括通过Web服务调用.


小智 5

iTextSharp可以使用XFA.要消除所有疑虑,请在iText网站上查看示例:

http://itextpdf.com/examples/iia.php?id=165


小智 5

using (FileStream existingPdf = new FileStream("existing.pdf", FileMode.Open))
using (FileStream sourceXml = new FileStream("source.xml", FileMode.Open))
using (FileStream newPdf = new FileStream("new.pdf", FileMode.Create))
{
    // Open existing PDF  
    PdfReader pdfReader = new PdfReader(existingPdf);

    // PdfStamper, which will create  
    PdfStamper stamper = new PdfStamper(pdfReader, newPdf);
    stamper.AcroFields.Xfa.FillXfaForm(sourceXml);

    stamper.Close();
    pdfReader.Close();
}
Run Code Online (Sandbox Code Playgroud)

  • 这是很棒的代码,谢谢!您能给我们提供一个输入 FillXfaForm 的 XML 格式的示例吗?谢谢! (3认同)