Для решения, не требующего беспорядка, используйте iText, чтобы просто добавить текст в PDF. Например, вы можете сделать следующее, чтобы добавить текст в документ PDF после загрузки:
PdfContentByte cb= ...;
cb.BeginText();
cb.SetFontAndSize(font, fontSize);
float x = ...;
float y = ...;
cb.SetTextMatrix(x, y);
cb.ShowText(fieldValue);
cb.EndText();
С этого момента сохраните его как другой файл и распечатайте.
Однако я обнаружил, что поля форм - это способ создания документов PDF из шаблонов.
Если у вас есть шаблон с полями формы (добавленный с помощью Adobe Acrobat), у вас есть один из двух вариантов:
- Создайте файл FDF, который по сути представляет собой список значений для полей в форме. FDF - это простой текстовый документ, который ссылается на исходный документ, поэтому при открытии PDF-документа документ загружается со значениями полей, предоставленными FDF.
- Либо загрузите шаблон с помощью библиотеки, такой как iText / iTextSharp, заполните поля формы вручную и сохраните в виде отдельного файла PDF.
Пример файла FDF выглядит следующим образом (украдено у Planet PDF ):
%FDF-1.2
%âãÏÓ
1 0 obj
<<<
/F(Example PDF Form.pdf)
/Fields[
<<
/T(myTextField)
/V(myTextField default value)
>>
]
>>
>> endobj trailer
<>
%%EOF
Из-за простого формата и небольшого размера FDF этот подход является предпочтительным, и этот подход должен хорошо работать на любом языке.
Что касается программного заполнения полей, вы можете использовать iText следующим образом:
PdfAcroForm acroForm = writer.AcroForm;
acroForm.Put(new PdfName(fieldInfo.Name), new PdfString(fieldInfo.Value));