Учебник РНР (перевод Alexandr Pyramidin) Размещено на PHPClub.Net
НазадВперёд

XXXI. Функции Forms Data Format

Введение

Forms Data Format (FDF) это формат для обработки форм в PDF-документах. Вам необходимо прочесть документацию https://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.

Требования

Вы обязаны загрузить FDF toolkit с https://partners.adobe.com/asn/developer/acrosdk/forms.html

Установка

Вы обязаны скомпилировать PHP с--with-fdftk[=DIR].

Примечание: Если у вас появляются проблемы с конфигурированием PHP с поддержкой fdftk, проверьте, находятся ли header-файл FdfTk.h и библиотека libFdfTk.so в соответствующих местах. Они должны быть в каталогах fdftk-dir/include и в fdftk-dir/lib. Этих директорий не будет, если вы просто распакуете дистрибутив FdfTk.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FDFValue (integer)
FDFStatus (integer)
FDFFile (integer)
FDFID (integer)
FDFFf (integer)
FDFSetFf (integer)
FDFClearFf (integer)
FDFFlags (integer)
FDFSetF (integer)
FDFClrF (integer)
FDFAP (integer)
FDFAS (integer)
FDFAction (integer)
FDFAA (integer)
FDFAPRef (integer)
FDFIF (integer)
FDFEnter (integer)
FDFExit (integer)
FDFDown (integer)
FDFUp (integer)
FDFFormat (integer)
FDFValidate (integer)
FDFKeystroke (integer)
FDFCalculate (integer)

Примеры

В следующем примере показано простое вычисление данных формы.

Пример 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);
?>

Содержание
fdf_add_template - добавляет шаблон в FDF-документ
fdf_close - закрывает FDF-документ
fdf_create - создаёт новый FDF-документ
fdf_get_file - получает значение ключа /F
fdf_get_status - получает значение ключа /STATUS
fdf_get_value - получает значение поля
fdf_next_field_name - получает имя следующего поля
fdf_open - открывает FDF-документ
fdf_save - сохраняет FDF-документ
fdf_set_ap - устанавливает отображение поля
fdf_set_encoding - устанавливает FDF-кодировку символов FDF
fdf_set_file - устанавливает значение ключа /F key
fdf_set_flags - устанавливает флаг поля
fdf_set_javascript_action - устанавливает акцию javascript для поля
fdf_set_opt - устанавливает опцию поля
fdf_set_status - устанавливает значение ключа /STATUS
fdf_set_submit_form_action - устанавливает акцию submit form поля
fdf_set_value - устанавливает значение поля

Назад Оглавление Вперёд
unlink Вверх fdf_add_template