For that to work you'll have to call 
AcroFields.setGenerateAppearances(false). Note that older Reader versions 
don't generate appearances.

Paulo

----- Original Message ----- 
From: "Michael Gonyea" <[EMAIL PROTECTED]>
To: <itext-questions@lists.sourceforge.net>
Sent: Friday, June 15, 2007 11:09 PM
Subject: [iText-questions] PDFStamper and AcroForm rich text (xml 
formatting)


> Hi all,
>
> I've been asked to dive into the iText source in order to allow for the
> flattening of rich text fields on our PDF forms (currently, iText simply
> stamps the XML code into the field).
>
> Now one solution I thought of would be to simply use
> partialFormFlattening(fieldName) on fields not containing the rich text
> formatting, and then setting the rich text fields to "read-only" (via
> AcroFields.setFieldProperty(...)); however, this doesn't work - it still
> stamps the actual XML code onto the field and the Reader will not render
> it as rich text in the stamped PDF.
>
> Please visit the code I've written below and feel free to point out any
> errors/omissions I have made when trying to accomplish this, or if I'm
> failing to understand the usage of the methods outlined in the
> Documentation.  (Please note, as suggested in some current iText archive
> articles, I've also attempted this with a call to setField(name,value)
> after the setFieldProperty() statement with the same results).  I'm
> using the most recent SVN version of the iText source compiled via
> Eclipse 3.2.2.
>
>           // Prepare FDF/PDF reader objects
>            FdfReader inFDF = new FdfReader(inFDFFilename);
>            PdfReader inPDF = new PdfReader(inPDFFilename);
>
>            // create our stamper instance
>            PdfStamper stp = new PdfStamper(inPDF, new
> FileOutputStream(outPDFFilename));
>
>            // set form flattening flag
>            stp.setFormFlattening(true);
>
>            // Merge the FDF data into the PDF
>            AcroFields af = stp.getAcroFields();
>            af.setFields(inFDF);
>
>            // Iterate through the list of fields
>            HashMap hm = af.getFields();
>            Iterator i = hm.keySet().iterator();
>            while (i.hasNext()) {
>                String fieldName = (String)i.next();
>                String fieldData = af.getField(fieldName);
>
>                if (fieldData.indexOf("<?xml") >= 0) {
>                    // System.out.println("xml data found in "+fieldName);
>                    // simply mark this field as "read-only" but keep
> everything intact
>                    // so that the client's Reader can render the
> XML/rich text formatting itself
>                    af.setFieldProperty(fieldName, "setfflags",
> PdfFormField.FF_READ_ONLY, null);
> //                    af.setField(fieldName, fieldData);
>                } else {
>                    // this field can be flattened
>                    stp.partialFormFlattening(fieldName);
>                }
>            }
>
>            // close the stamper
>            stp.close();
>
>
> Thanks!


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
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/

Reply via email to