2011-01-05 7 views
8

Мы используем iText для автоматического заполнения полей формы на нескольких документах и ​​последующего объединения этих документов в один полученный PDF-файл.Конкатенация PDF-файлов и сохранение расширенных функций в Acrobat Reader

Adobe представила функции расширения в программе Acrobat Reader, чтобы пользователи Acrobat Reader могли сохранять PDF-файлы с изменениями полей формы.

Это проприетарная функция Adobe, которая может работать только с iText.

Мне удалось выполнить работу для одного конкретного документа, используя класс PdfStamper в режиме добавления. Поскольку PDF-файлы содержат поля формы, мы используем класс PdfCopyFields для выполнения конкатенации. PdfCopyFields не имеет режима добавления.

Есть ли другой способ сделать дополнение PDF в существующий PDF с iText (любая версия)?

ответ

5

Возможно, но вам потребуется знать достаточно, чтобы изменить PdfCopyFields, чтобы он сохранялся в режиме добавления.

Вы можете дублировать функциональность и использовать ее поверх PdfStamper (в своем собственном классе или иначе), подкласса PdfCopyFields или напрямую изменять PdfCopyFields.

Big Stumbling Block Все поля с таким же именем в формате PDF имеют одинаковое значение. Если в полученном PDF-файле две копии одной и той же формы, у вас есть два представления одних и тех же данных.

Даже в разных формах, если вы столкнулись с столкновением имен (здесь может быть частью города, может быть частью текущего адреса, тогда как там может быть городом, в котором они родились), они будут глыбом вместе такое же значение.

Если у вас есть всеобъемлющая система, так что все ваши столкновения с именами будут преднамеренными, это здорово, идите на слом. Если «FirstName» всегда относится к одному и тому же человеку, и его изменение ДОЛЖНО изменить значение во всех формах, о которых идет речь, вы золотые. Если нет ... поэтому PdfStamper обладает способностью к сглаживанию.

Альтернатива становится «переименовывать все поля перед склеиванием форм вместе», чтобы избежать таких столкновений.

Даже с помощью комплексной системы я все же предлагаю взломать небольшой инструмент, который будет проходить через формы, которые вы предлагаете объединить, и искать столкновения. Возможно, перечислите их вместе со своими значениями в некоторых тестовых данных. Вы можете поймать что-то вроде линии «Fly: House, Common» и «Fly: Southwest Airlines».

Возможно, это не тот конкретный пример, но кто знает? ;)

+0

Thanks Mark. Для проблемы столкновения имени поля я просто добавляю постфикс в каждое поле, основанное на подсчете прилагаемого документа. Это работает для нас. –

Смежные вопросы