iText (and iTextSharp) doesn't support dynamic fields. Paulo
----- Original Message ----- From: "leon breedt" <[EMAIL PROTECTED]> To: <itext-questions@lists.sourceforge.net> Sent: Wednesday, February 14, 2007 2:37 AM Subject: [iText-questions] Filling dynamic (repeating) form fields > Hi all > > I am quite new to PDF generation, therefore may not have all of my > terminology completely straight, please feel free to correct me. > > What I have at present (and working just fine), is a template PDF form, > using the PdfStamper to fill the values of static fields, then flatten the > form, and this is all working fine. > > Now where I have hit a slight snag, is populating form fields that are > intended to be repeating. Please excuse me if I have left something out > here, but I have spent quite some time researching this, and failing to > find > helpful documentation on Adobe's site, in their application, or on the > Internet about this scenario, I have decided to consult the mailing list. > > I'm not 100% sure on what is and is not possible with databinding and PDF > forms (for the classic dynamic "Purchase Order" scenario, with variable > numbers of line items). > > Now I understand iText has some support for XFA (at least, navigating > around > in the Xfa member of the AcroFields property of PdfStamper, I can see > there > is XML in there that resembles to a large extent what I get when I'm > looking > at the "XML Source" view in Adobe LiveCycle Designer). > > MergeXfaData() seemed to be what I'm after, but I have a hard time > understanding what the required input XML for this function should be, or > whether it even refers to form data, or whether it is just another way to > override the XFA associated with the document. > > Some interesting snippets when I looked at the "XML source" for this > document (before it was written out to PDF), it seems to be describing to > some extent the "schema" of allowable data to bind against the dynamic > field > over here (which I thought could be the input to MergeXfaData()): > > <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"> > <xfa:data xfa:dataNode="dataGroup"/> > <dd:dataDescription xmlns:dd=" http://ns.adobe.com/data-description/" > dd:name="LineItems"> > <LineItems> > <LineItem dd:maxOccur="-1"> > <Quantity/> > </LineItem> > </LineItems> > </dd:dataDescription> > </xfa:datasets> > > Then, we also see a <field> definition, which looks like what I can access > in iText when I look at the DOM nodes in DatasetsSom/TemplatesSom: > > <field name="ItemQuantity" y="6.35mm" w="19.05mm" h="9.525mm"> > <ui> > <textEdit> > <border> > <edge presence="hidden"/> > <edge presence="hidden"/> > <edge/> > <edge presence="hidden"/> > <?templateDesigner StyleID aped1?></border> > <margin/> > </textEdit> > </ui> > <font typeface="Arial"/> > <margin topInset="1mm" bottomInset="1mm" leftInset="1mm" > rightInset="1mm"/> > <para vAlign="middle"/> > <caption reserve="0in"> > <font typeface="Arial"/> > <para vAlign="middle"/> > </caption> > <bind match="dataRef" ref="$record.LineItem[*].Quantity"/> > > Is there some way (in iText) that I can indicate I have some XML to > "merge" > into the template, with iText consulting the <bind> member to determine > which component of incoming XML contains the data to bind, and then > assigning it to the form fields as necessary (creating new fields if so > required), or does iText not support this scenario of data binding yet? > > I tried inventing new "indices" for field names when doing a SetField(), > e.g > . > > LineItems[0].PurchaseOrderData[0].LineItems[0].ItemQuantity[1] > > But that obviously had no effect, and I'm not sure that it would do > anything. > > I hope I'm making sense here, and thanks in advance for any clarification > on > whether what I want to achieve is possible at this stage. > > (1) I am using iTextSharp, but as it has parity with (and is based on) > iText, I thought it was applicable to post here. > (2) I know that Adobe has something called XPAAJ which is supposed to > support this scenario, but I would prefer to use iText if possible. Worst > case, I may have to resort to writing a web service using XPAAJ that does > what I need, but I'd prefer to avoid that if possible :) > > Thanks! > Leon > -------------------------------------------------------------------------------- > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV -------------------------------------------------------------------------------- > _______________________________________________ > iText-questions mailing list > iText-questions@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/itext-questions > Buy the iText book: http://itext.ugent.be/itext-in-action/ > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://itext.ugent.be/itext-in-action/