Распространение PDF-форм

Преобразуйте данные в формат FDF для объединения их с PDF-формой программами Adobe Acrobat или Adobe Reader. Как было показано в разделе «Сопровождение заполненных PDF-форм», можно распространять заполненные формы в интернете, используя FDF-данные, которые содержат URL PDF-формы. После получения FDF-данных программа Acrobat (или Reader) откроет форму, а затем заполнит ее. Следующая проблема — насколько просто создать FDF-данные на сетевом сервере.

Справочник по формату PDF описывает формат FDF в мельчайших подробностях, a Adobe предлагает бесплатный FDF-инструментарий (http://partners.adobe.com/asn/acrobat/forms.jsp). FDF-данные несложно создать с помощью языка сетевого программирования.

Здесь предлагается сценарий, написанный на языке РНР. Он конвертирует данные формы в FDF-файл, подходящий для заполнения PDF-формы.

Для создания или анализа FDF-данных в Java используйте классы FdfWriter и FdfReader в iText (http://www.lowagie.com/iText/).

Сложные формы могут потребовать высокоуровневого Adobe PDF-инструментария. Большинство форм требует простого приведения данных полей в соответствие с FDF-синтаксисом. Используйте для этой цели сценарий forge_fdf. В примере раздела «Сопровождение заполненных PDF-форм» показан образец простого FDF-файла.

Вместо использования универсальной FDF-функции или библиотеки можно применить экспорт FDF-файла из формы, а затем преобразовать его в шаблон. Замените значения формы переменными или другими метками-заполнителями. Используйте этот шаблон в своей форме после заполнения его переменными с пользовательскими данными. Сценарий forge_fdf содержит функции для кодирования PDF-строк и имен, которые могут быть полезными при заполнении шаблона.

Создание FDF-файла с помощью сценария forge_fdf

Передайте данные формы и ее URL сценарию forge_fdf, и он возвратит соответствующий ей FDF-код как строку. Создайте с ее помощью FDF-файл или используйте ее непосредственно в браузере клиента с заголовком Content-type: application/vnd.fdf. Соответствующий пример будет приведен ниже.

Необходимо помнить некоторые характерные особенности формата FDF при передаче параметров сценарию forge_fdf.

$pdf_form_url

Обеспечивает URL PDF-формы (или имя файла), если не планируется передавать эти FDF-данные как часть большего URL, который уже ссылается на PDF-форму. Например, если FDF-данные будут использоваться пользователем следующим образом:

http://localhost/fine_form.pdf#FDF=http://localhost/fine_data.fdf,

то в качестве параметра $pdf_form_url передается пустая строка. Чтобы выйти из PDF-формы и заменить ее HTML-страницей в браузере пользователя, используйте настройку параметра $pdf_form_url для URL своей HTML-страницы.

$fdf_data_strings

Загружает текст и данные полей со списком в эту строку. Это должен быть массив строковых имен полей, отображенных в их значениях. Если хотите, чтобы поле формы было скрыто или предназначалось только для чтения, добавьте его имя к параметрам $fields_hidden или $fields_readonly.

$fdf_data_names

Загружает в строку данные переключателя и кнопки выбора. Это должен быть массив строковых имен полей, отображенных в их значениях. Часто значения true и false соответствуют чувствительным к регистру строкам Yes и Off. Если хотите, чтобы поле формы было скрыто или предназначалось только для чтения, добавьте его имя к параметрам $fields_hidden или $fields_readonly.

$fields_hidden

Добавьте имя поля к этой строке, если хотите скрыть его. Любое поле, перечисленное здесь, также должно быть указано в параметрах $fdf_data_strings или $fdf_data_names.

$fields_readonly

Добавьте имя поля к этой строке, если не хотите, чтобы пользователь вносил изменения в его данные. Любое поле, перечисленное здесь, также должно быть указано в параметрах $fdf_data_strings или $fdf_data_names.

Следующий сценарий использует forge_fdf для обработки FDF-данных, которые должны заставить браузер пользователя открыть http://localhostfform.pdf и настроить его поля.

Посетите веб-страницу http//www.pdfhacks.com/form_session/, чтобы увидеть более сложный пример работы сценария forge_fdf. Исправьте сетевой пример или загрузите исходный PHP-код с этой веб-страницы.

Если сценарий forge заполняет форму неправильно, экспортируйте FDF-данные из нее, чтобы точно увидеть, в каком виде форма ожидает данные. Протестируйте свою программу с помощью примеров PDF-файлов.

Код

Скопируйте этот код в файл, названный forge_fdf.php, и включите его в свои PHP-сценарии. Или адаптируйте этот алгоритм под свой любимый язык. Посетите веб-страницу http://www.pdfhacks.com/forge_fdf/, чтобы загрузить последнюю версию.