I eventually got this working, using your trick for detecting the presence
of acroFields to switch to the dynamic-pdf code, and manipulating the
datasets objects produced by the getDatasetsSom() method of the XfaForm
object. This consists basically of setting the value of the text node child
of the field or adding a new text node.
Thanks for your help.
Erik.
On 11/21/07, Erik Pearson <[EMAIL PROTECTED]> wrote:
>
> On 11/20/07, Scott Dunbar <[EMAIL PROTECTED]> wrote:
> >
> > I was only able to do it by "fiddling with the dom". My requirements
> > are to support PDF 1.6 and PDF 1.7 dynamic and static forms and to take
> > XDP data from a submitted form and merge it into a PDF. The way I did that
> > was to handle either the "old" way with mergeXfaData() (PDF 1.6 dynamic
> > and static and PDF 1.7 static) or the "new" way (PDF 1.7 dynamic) by
> > handling the DOM myself. Unfortunately you have to do it in two different
> > ways - the "dom fiddling" does not seem to work with the older forms.
> >
>
> This is helpful. I'm not merging, but creating a custom pdf per-user
> based on information from a database. This requires, as far as I can tell,
> updating or adding a value + text node to a field. There is more to it,
> though, since I can do this, see the change in the pdf (via itextinspection),
> but the form neither shows nor submits this data.
>
> Hmm, your method may be a solution. I could build an XDP on the fly, then
> merge it into the document. Where is your xpd parser from? Is that yours? I
> know next to nothing about building an xml parser class.
>
> Do you detect the version and dynamic/static nature of the form with itext?
> When I use the isDynamicForm() method I'm always getting false. Ah, I see,
> you look for the presence of acrofields.
>
>
> XDPDOMParser is a class that handles all aspects of the parsing of the
> > XDP. It would not be hard to remove this but the key for me is to take the
> > xfa:datasets from a separate XDP and replace the data in an existing PDF.
> > This simply requires removing the old xfa:dataset Node and importing the
> > new xfa:dataset Node into the destination document - that is what the
> > copyDataSets method below does.
> >
> > My code looks like the below. If you have any questions, let me know.
> >
> > // pdfStamper is a PdfStamper using a PdfReader from my source PDF and a
> > temp output file
> > // inputDataElement is the xfa:data Node from the input XDP
> > // inputParser is a XDPDOMParser for my input XDP
> >
> >
> > if( pdfStamper.getAcroFields().getFields().size() != 0 ) // then use the
> > "old" way
> > {
> > AcroFields fields = pdfStamper.getAcroFields();
> > fields.mergeXfaData( inputDataElement );
> > }
> > else // then this is a pdf 1.7 dynamic
> > {
> > XfaForm xfaForm = new XfaForm( pdfStamper.getReader() );
> > XDPDOMParser xdpParser = new XDPDOMParser( xfaForm.getDomDocument()
> > );
> >
> > // copy from an existing xdp xfa:dataset into the xdpParser
> > xdpParser.copyDataSets( inputParser.getDocument() );
> > xfaForm.setChanged( true );
> >
> > xfaForm.setXfa( XfaForm.serializeDoc( xfaForm.getDomDocument() ),
> > pdfStamper.getReader(), pdfStamper.getWriter() );
> > }
> >
> >
> > Erik Pearson wrote:
> >
> > Hi,
> > I'm wondering if anyone could provide pointers or working examples of
> > using iText with a dynamic pdf 1.7 form produced by LiveCycle. I've
> > managed to stumble into updating the pdf the point where I've inserted a
> > value tag for an empty field, which I can see afterward in the new, modified
> > pdf, but the changes are not visible, nor are the values submitted with the
> > form.
> >
> >
> > Rather than fiddling with the dom document, Perhaps an xml/xfa merge
> > operation?
> >
> > Sigh, with static pdfs it was so easy with acroforms ...
> >
> > Thanks in advance,
> >
> > Erik.
> >
> > ------------------------------
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Microsoft
> > Defy all challenges. Microsoft(R) Visual Studio 2005.
> >
> > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> >
> > ------------------------------
> >
> > _______________________________________________
> > iText-questions mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/itext-questions
> > Buy the iText book: http://itext.ugent.be/itext-in-action/
> >
> >
> >
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Microsoft
> > Defy all challenges. Microsoft(R) Visual Studio 2005.
> > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> > _______________________________________________
> > iText-questions mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/itext-questions
> > Buy the iText book: http://itext.ugent.be/itext-in-action/
> >
> >
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/