Учитывая существующий PDF, iTextSharp может заполнять значения полей (формы AcroForm или XFA / LiveCycle).
HOWEVER, тогда как iTextSharp (и iText) может обрабатывать любой старый AcroForm, он может только FLATTEN static liveCycle формы.
Кроме того, PDF-форма может представлять себя несколькими способами:
- FDF: диалект PDF.В основном пары имя / значение с некоторыми дополнительными элементами.
- в стиле HTML
- PDF: PDF-файлы могут отправлять себя (с данными формы) на URL-адрес.Вы можете просто открыть и распрямить, не нужно беспокоиться о заполнении формы во второй раз.Я считаю, что это ограничено формами «Reader Enabled» в Reader.
PdfStamper от iText (в режиме добавления!) Может заполнять значения полей, не нарушая PDF-Reader-Enabled-ness.
Ваш рабочий процесс становится следующим:
- Заполните форму с поддержкой чтения с помощью PdfStamper iText в режиме добавления и предоставьте этот PDF пользователю.
- Получите заполненный PDF отпользователь
- Свести PDF с помощью другого PdfStamper.Просто «open, setFormFlattens (true), close ()».
Вместо того, чтобы заполнять PDF, вы можете подавать FDF со значениями полей и ссылкой на шаблон PDF (который сновадля отправки полного PDF IIRC требуется Reader Enabling, от Acrobat).Это заметно эффективнее, чем анализ PDF и его обработка каждый раз.
FDF выглядит примерно так:
%FDF-1.2
%âãÏÓ
1 0 obj
<</F(http://www.mySite.com/myPDF.pdf)
/Fields[
<</T(Check1)/V/Off>>
<</T(Some Field)/V(A value)>>
<</T(AnotherFld)/V(1.0)>>
<</T(You get)/V(the idea)>>
]
>>/Type/Catalog>>
endobj
trailer
<</Root 1 0 R>>
%%EOF
<< и >> оборачивают «словари» (значение именипары).
(и) обернуть строки
[и] обернуть массивы
/ приводит "имена".Имена используются для ключей словаря, а иногда и для других вещей.
Вы должны экранировать некоторые символы в именах и строках:
Экраны строк начинаются с '\'.\ r, \ n, \ t, \ b, \ f, (,) и \.Вы также можете экранировать любое старое символьное значение IN OCTAL следующим образом: \ ooo, где 'o' - восьмеричные значения.
Имена экранируют совершенно иначе (grr).
Экранирование имени начинается с '#, за которым следует двузначное шестнадцатеричное число.HEX на этот раз не восьмеричный.Грр грр.Все, что не в аз AZ 0-9._;* @ должен быть экранирован.Вы МОЖЕТЕ избежать всего, это ужасно неэффективно.
Возможно, вам придется позаботиться о экранировании строк (в частности, о значениях полей и, возможно, о вашем пути / URL-адресе PDF), но вы почти наверняка выиграли't нужно беспокоиться о побегах имен.
Существуют различные библиотеки для написания FDF для вас, но я считаю, что проще просто выделять FDF с помощью простой конкатенации строк.
Примечаниечто FDF поддерживает гораздо больше, но многие библиотеки FDF этого не делают, поэтому вы должны собрать их самостоятельно, если вы пошли по проторенному пути.