Using iText (iTextSharp) to populate XFA form fields in PDF?

Jay Stevens picture Jay Stevens · Jun 25, 2009 · Viewed 17k times · Source

I need to populate XFA form fields in a PDF (created with Adobe LiveCycle Designer). We're attempting to use iText (actually iTextSharp with C#) to parse the PDF, populate the XFA fields and then save the modified PDF back out.

All the examples I can find with iText (very few iTextSharp examples) talk about modifying AcroForm fields. This PDF does NOT have AcroForm fields and uses XFA only.

Pointers to any non-standard resources would be helpful (I've already done the requisite Googling on the topic and haven't found anything useful).

Code examples here would be awesome from anyone who has actually done what I'm trying to do.

Answer

stevex picture stevex · Aug 6, 2009

If you can get a data packet into the PDF, the XFA runtime in Acrobat would populate those fields with the data in the data packet.

If you want to see what one of these looks like, create a form in LiveCycle Designer (comes with Acrobat Pro), add some fields to it, and save it as a dynamic PDF. Open the form in Acrobat and type some values into the fields and save it.

Open the PDF with a tool that lets you peer at the PDF data and you'll find /Catalog/AcroForm/XFA a stream that has an <xfa:datasets> packet with the values you typed. That's what you'll need to create yourself and insert into the PDF.

The XDP spec includes a description of the data packet and the merge algorithm. You can find it here:

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

Alternately, you buy the LiveCycle server from Adobe which lets you do all this programmatically in a number of ways including through web service calls.