Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iTextSharp PdfStamper.PartialFormFlattening flattening only some, not all, of the fields

Tags:

itext

The code below is correctly assigning the value "foo" to the named field, but the field is not being "flattened". I must be neglecting a step, but I don't know what it is. Please advise. Thanks.

public byte[] FlattenSpecifiedFormFields(byte[] b, List<string> fieldNames2Flatten)
    {
        PdfReader reader = new PdfReader(b);
        using (var ms = new MemoryStream())
        {
            var stamper = new iTextSharp.text.pdf.PdfStamper(reader, ms);               
            foreach (string name in fieldNames2Flatten)
            {

                stamper.AcroFields.SetField(name, "foo");
                stamper.PartialFormFlattening(name);
            }

            stamper.Close();
            return ms.ToArray();
        };
    }
like image 673
Tim Avatar asked Sep 11 '25 06:09

Tim


1 Answers

Even when partially flattening a form, the PdfStamper FormFlattening property must be set to true. I.e.:

var stamper = new PdfStamper(reader, ms);
stamper.FormFlattening = true;

foreach (string name in fieldNames2Flatten)
{
    stamper.AcroFields.SetField(name, "foo");
    stamper.PartialFormFlattening(name);
}
like image 128
kuujinbo Avatar answered Sep 13 '25 18:09

kuujinbo