Bingo. Thanks Paulo.
Paulo Soares wrote:
> 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" <mlgsolutions@(protected)>
> To: <itext-questions@(protected)>
> 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@(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 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@(protected)
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/