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/