Я боролся с этим на некоторое время, так понял, что я отправлю Вопрос & Ответ
Использование класса PdfStamper IText является ключевым. (Я думаю, это делает копию, но она намного чище, чем использование классов itext PdfCopy).
public void AddFormFieldToExistingPDF()
{
PdfReader reader = new PdfReader(@"c:\existing.pdf");
FileStream out = new FileStream(@"C:\existingPlusFields.pdf", FileMode.Create, FileAccess.Write);
PdfStamper stamp = new PdfStamper(reader, out);
PdfFormField field = PdfFormField.CreateTextField(stamp.Writer, false, false, 50);
// set a field w/some position and size
field.SetWidget(new iTextSharp.text.Rectangle(40, 500, 360, 530),
PdfAnnotation.HIGHLIGHT_INVERT);
field.SetFieldFlags(PdfAnnotation.FLAGS_PRINT);
field.FieldName = "some_field";
// add the field here, the second param is the page you want it on
stamp.AddAnnotation(field, 1);
stamp.Close();
}
Поля, добавленные с помощью AddAnotation, в любом случае не сглажены, см. Комментарий к свойству Formflattening в исходном коде itextsharp http://sourceforge.net/p/itextsharp/code/453/tree/trunk/src/core/iTextSharp/text /pdf/PdfStamper.cs –