Forms Data Format (FDF) это формат для обработки форм в PDF-документах. Вам
необходимо прочесть документацию
http://partners.adobe.com/asn/developer/acrosdk/forms.html, чтобы узнать больше о том, что такое FDF и как его использовать.
Общая идея FDF напоминает HTML-формы. Разница в основном в формате передачи
данных на сервер при нажатии копки submit (это формат Form Data Format) и в
формате самой формы (которая имеет формат Portable Document Format, PDF).
Процессинг FDF-данных является одной из возможностей, предоставляемой fdf-функциями.
Но есть и ещё кое-что. Можно также взять существующую PDF-форму и заполнить поля ввода (input)
данными без модификации самой формы. Тогда можно будет создать FDF-документ
(fdf_create()), установить значения каждого поля ввода
(fdf_set_value()) и ассоциировать его с PDF-формой
(fdf_set_file()). Наконец, он отправляется браузеру с MimeType application/vnd.fdf. Компонент Acrobat
reader вашего браузера распозн́ает MimeType, прочитает
ассоциированную PDF-форму и заполнит её данными из FDF-документа.
Если вы просмотрите FDF-документ в текстовом редакторе, вы увидите объект catalogue с именем FDF. Такой объект может содержать количество вхождений
Fields, F, Status etc. Чаще всего используются вхождения Fields,
которое указывает на список input-полей, и F, которое содержитfilename PDF-документа, которому принадлежат эти данные. Эти вхождения
называются в FDF-документации как /F-Key или /Status-Key.
Модификация этих вхождений выполняется функциями вроде fdf_set_file() и
fdf_set_status(). Поля модифицируются функциями вроде
fdf_set_value(), fdf_set_opt() etc.
Вы обязаны скомпилировать PHP с--with-fdftk[=DIR].
Примечание: если у вас появляются проблемы с конфигурированием PHP с поддержкой fdftk,
проверьте, находятся ли header-файл FdfTk.h и библиотека libFdfTk.so в
соответствующих местах. Они должны быть в каталогах fdftk-dir/include и в
fdftk-dir/lib. Этих директорий не будет, если вы просто распакуете дистрибутив FdfTk.
Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.
В следующем примере показано простое вычисление данных формы.
Пример 1. Обсчёт FDF-документа
<?php
// сохранить FDF-данные во временном файле
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);
// открыть временный файл и обсчитать данные
// pdf-форма содержала несколько полей ввода текста с именами:
// volume, date, comment, publisher, preparer, и два переключателя/checkbox:
// show_publisher и show_preparer
$fdf = fdf_open("test.fdf");
$volume = fdf_get_value($fdf, "volume");
echo "The volume field has the value ’<B>$volume</B>’<BR>";
$date = fdf_get_value($fdf, "date");
echo "The date field has the value ’<B>$date</B>’<BR>";
$comment = fdf_get_value($fdf, "comment");
echo "The comment field has the value ’<B>$comment</B>’<BR>";
if(fdf_get_value($fdf, "show_publisher") == "On") {
$publisher = fdf_get_value($fdf, "publisher");
echo "The publisher field has the value ’<B>$publisher</B>’<BR>";
} else
echo "Publisher shall not be shown.<BR>";
if(fdf_get_value($fdf, "show_preparer") == "On") {
$preparer = fdf_get_value($fdf, "preparer");
echo "The preparer field has the value ’<B>$preparer</B>’<BR>";
} else
echo "Preparer shall not be shown.<BR>";
fdf_close($fdf);
?>