I use iTextSharp to populate a form with data. I just learned [/question/how-format-field-percentage](how to format a field as a percentage). Now I need to learn how to format numbers. This is what I've tried:
Stream os = new FileStream(PDFPath, FileMode.CreateNew); PdfReader reader = new PdfReader(memIO); PdfStamper stamper = new PdfStamper(reader, os, '9', true); AcroFields fields = stamper.AcroFields; fields.SetField("Pgo", "1.0", "100%"); // Works fine fields.SetField("value", "1217000.000000", "$1,217,000"); // Drops Dollar sign and comma
Please take a look at the FormatFields example. In that example, I took an ordinary form with a couple of ordinary fields, and I filled these fields in the exact same way as you did.
The result looks as expected:
iText has created two appearances (the
/AP entry of the widget annotation) based on the
display parameter we passed to the
setField() method. One field shows "100$", the other field shows "$1,217,000". As you can see (and check for yourself here), the dollar sign and the commas are there.
However, the moment you click one of those fields, the appearance that was created by iText disappears and it's replaced by an appearance created by Adobe Reader (or any other PDF viewer) based on the value of the field (the
/V entry of the field dictionary): "1.0" or "1217000.000000". This is expected behavior.
value field. Maybe something else is at play, but in any case: the reason for the phenomenon you describe is buried somewhere in your form. It is not a problem caused by iText: my example proves that the answer to the question How to format a field as a percentage? also works for currency values.