我需要在PDF中填充XFA表单字段(使用Adobe LiveCycle Designer创建).我们正在尝试使用iText(实际上是带有C#的iTextSharp)来解析PDF,填充XFA字段,然后将修改后的PDF保存回来.
我可以通过iText找到的所有示例(很少有iTextSharp示例)讨论修改AcroForm字段.此PDF没有AcroForm字段,仅使用XFA.
指向任何非标准资源的指针都会有所帮助(我已经完成了关于该主题的必要谷歌搜索并且没有找到任何有用的资源).
这里的代码示例对于任何实际完成我正在尝试的人来说都是非常棒的.
如果您可以将数据包导入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
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)