Заполнение полей PDF из базы данных - PullRequest
3 голосов
/ 29 марта 2011

У меня есть файл PDF (не созданный мной - я не контролирую дизайн и т. Д.), Который позволяет пользователям заполнять некоторые поля формы в Adobe Reader и сохранять результат. Я хочу автоматизировать процесс заполнения полей, используя следующие шаги:

  1. Извлечение данных из базы данных.
  2. Открыть шаблон PDF.
  3. Заполнить поля формы данными.
  4. Сохранить измененный файл в отдельном месте на диске.
  5. Блокировка измененного файла, чтобы поля формы больше не могли редактироваться.
  6. Отправить файл пользователю.

Я рад использовать PHP, Perl, Python или Java для выполнения шагов 2-5 (в порядке убывания предпочтений), но все, что я использую, должно работать в Linux (то есть не должно полагаться на библиотеки, которые например, доступно только в Windows).

Конечным результатом должен быть файл PDF, который средний пользователь может открывать и распечатывать, но не изменять (я уверен, что опытные пользователи могли бы найти способ сделать это, но я согласен, что не могу гарантировать полную защиту от изменений ). Я не хочу менять структуру PDF, просто заполняю поля формы.

Существует ли стандартное программное обеспечение для этого? Я видел упоминания о FDF Toolkit, но я не совсем уверен, что это именно то, что я хочу, и позволит ли мне впоследствии заблокировать файл, и соответствует ли то, что я хочу сделать, EULA.

Редактировать: Окончательный ответ - использовать iText (как это было предложено Марком Сторером), но реализовать его как веб-сервис, который позволяет передавать массив имен и значений полей формы и файл PDF «шаблона». Веб-сервис будет с открытым исходным кодом (и будет доступен на GitHub после того, как я его напишу), согласно AGPL, но все, что с ним связано, не должно быть.

1 Ответ

5 голосов
/ 30 марта 2011

Заполнение

Любое количество различных библиотек может заполнять значения полей. Я неравнодушен к iText (Java) или iTextSharp (C #). Я написал один на Яве несколько лет назад. Это не так сложно). Есть много. Ищите так, вы найдете их.

Замок

Существует несколько разных уровней "блокировки полей".

  • Каждое поле имеет флаг «только для чтения». Это в значительной степени любезно, поскольку другие библиотеки, способные устанавливать значения полей. На самом деле, обычно считается, что «пользовательский интерфейс не может вносить изменения». Сформировать скрипт можно независимо.
  • Сглаживание форм: Нарисуйте поля прямо на странице и уберите всю интерактивность.

У каждого есть свои плюсы и минусы.

Флаг : не слишком безопасный. Данные формы по-прежнему легко доступны. Поля прокрутки по-прежнему прокручиваются.
Сглаживание : Почти полная противоположность. Это сложнее изменить (хотя далеко не невозможно). Данные формы могут быть извлечены только посредством извлечения текста (что сложно, но становится все более распространенным). Списки и текстовые поля, которые содержат больше материала, чем видно, больше не будут прокручиваться.

Способность сглаживать формы встречается относительно редко. Опять же, iText может это сделать (как и iTextSharp), но я не знаю ни о каких других сторонних библиотеках, которые могут ... Я уверен, что они существуют, я просто не могу назвать их на макушке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...