Перейти к содержимому
getnextpdf.com

Pro редакция

Form

NextPDF Pro читает и записывает данные интерактивных форм: значения полей AcroForm, файлы данных XFDF и данные, которые несут шаблоны XFA (XML Forms Architecture). Он дополняет модуль чтения форм Core с открытым исходным кодом привязкой данных, извлечением и сериализацией.

Эта возможность поставляется в составе NextPDF Pro (nextpdf/pro) и активируется лицензионным конвертом уровня Pro. Развёртывание без этого права не загружает классы данной возможности. Сравнить редакции и получить лицензию.

Form входит в редакцию Pro. Отдельного флага лицензии для каждой возможности нет.

Окно терминала
composer require nextpdf/pro:^3

Возможность Form требует действительной лицензии NextPDF Pro. См. Доступность и лицензирование.

Интерактивная форма PDF — иногда называемая AcroForm — хранит каждое поле в словаре поля, как определено в ISO 32000-2 §12.7. NextPDF Pro строится на модуле чтения форм Core, добавляя три возможности:

  • Круговая обработка AcroForm. FormDataExtractor читает пары имя/значение поля из разобранных полей формы и формирует объект XfdfData или простую карту name → value. XfdfWriter выполняет обратное, генерируя документ XFDF.
  • Чтение и запись XFDF. XFDF — это XML-формат обмена данными для значений форм, описанный в ISO 19444-1:2019. XfdfParser читает файл XFDF в структурированные данные; XfdfWriter сериализует значения полей в XFDF с необязательной ссылкой обратно на исходный PDF.
  • Извлечение данных XFA. XfaParser находит пакеты XFA в документе, объединяет фрагменты XML и разбирает пакеты template и datasets в структурированные данные полей.

Поддержка XFA в NextPDF Pro ориентирована на данные, а не является полным движком отрисовки или сценариев XFA. Парсер извлекает и структурирует пакеты template и datasets, чтобы вы могли читать определения и значения полей. Он не выполняет сценарии вычислений форм XFA, не отрисовывает динамические макеты XFA и не выполняет круговую обработку каждого типа пакета XFA. Проверьте парсер на ваших конкретных документах, прежде чем полагаться на него для определённого набора форм XFA. Весь разбор XML отключает загрузку внешних сущностей (защита от XXE).

Поддержка XFA намеренно ограничена данными, а не отрисовкой. ISO 32000-2 помечает запись XFA в словаре формы как устаревшую в PDF 2.0 (§12.7). Полный движок макета и сценариев XFA гнался бы за унаследованной поверхностью, которая большинству нагрузок больше не нужна. Вместо этого NextPDF Pro извлекает пакеты template и datasets, где хранятся долговечные данные полей, и отказывается от остального. Тот же подход определяет разбор с отключённым XXE и потолок сканирования, потому что ввод форм часто приходит от недоверенных сторон. Это сохраняет поверхность форм Pro тонким, предсказуемым расширением модели AcroForm из Core.

Справочный контекст проектирования: От заполняемой формы к замороженной записи: заполнение и сведение AcroForm.

КлассНазначение
FormDataExtractorИзвлекать значения полей AcroForm как XfdfData или массив.
XfdfParserРазбирать документ XFDF в структурированные данные.
XfdfWriterСериализовать значения полей в XFDF, необязательная ссылка на PDF.
XfaParserИзвлекать и разбирать пакеты template и datasets XFA.
FormDataBinderПривязывать карту данных обратно к полям формы.

Полный справочник на уровне методов находится в подробном справочнике Form.

use NextPDF\Pro\Form\FormDataExtractor;
use NextPDF\Pro\Form\XfdfWriter;
$values = FormDataExtractor::toArray($fields);
$xfdf = XfdfWriter::fromFields($fields, 'invoice.pdf');
use NextPDF\Pro\Form\XfaParser;
use NextPDF\Pro\Form\Exception\XfaParseException;
try {
$formData = (new XfaParser())->parse($pdfBytes);
$logger->info('xfa.parsed', ['fields' => count($formData->fields)]);
} catch (XfaParseException $e) {
$logger->warning('xfa.parse_failed', ['reason' => $e->getMessage()]);
}
  • XfaParser отклоняет ввод PDF больше своего потолка сканирования, а не читает неограниченные данные.
  • Документ может нести как интерактивные, так и неинтерактивные формы; извлечение нацелено на словари конечных полей.
  • XFDF выполняет круговую обработку плоских структур полей; глубоко вложенные иерархии полей могут потребовать явной обработки.

Извлечение и сериализация линейны по числу полей формы. Стоимость разбора XFA растёт с размером встроенных пакетов XML.

Весь разбор XML отключает разрешение внешних сущностей для предотвращения XXE. Относитесь к вводу XFDF и XFA из недоверенных источников как к враждебному и проверяйте разобранный набор полей перед его привязкой обратно в документ.

ПоведениеСсылкаСтатус
Модель интерактивной формы / словаря поляISO 32000-2 §12.7Согласовано (пересказ)
Формат обмена данными XFDFISO 19444-1:2019Согласовано

Эта таблица фиксирует спецификации, на которые ориентирован NextPDF Pro. Это не заявление о формальной сертификации.

  • FormDataExtractor читает пары имя/значение из разобранных словарей конечных полей и возвращает объект XfdfData или простой массив name → value.
  • XfdfParser разбирает документ XFDF в структурированные данные; XfdfWriter сериализует значения полей в XFDF с необязательной ссылкой обратно на исходный PDF.
  • XfaParser находит пакеты XFA, объединяет фрагменты XML и разбирает пакеты template и datasets в структурированные данные полей. Он отклоняет ввод PDF больше своего потолка сканирования, а не читает неограниченные данные.
  • Поддержка XFA ориентирована на данные: парсер извлекает и структурирует пакеты template и datasets. Он не выполняет сценарии вычислений форм XFA, не отрисовывает динамические макеты XFA и не выполняет круговую обработку каждого типа пакета XFA.
  • Весь разбор XML отключает разрешение внешних сущностей (защита от XXE).

Enterprise не меняет поведение Form. Enterprise добавляет комплаенс- и архивные возможности более высокого уровня, документированные отдельно; они не требуются для круговой обработки AcroForm, чтения/записи XFDF или извлечения данных XFA.

Модуль чтения форм NextPDF Core с открытым исходным кодом читает поля форм. Чтение/запись XFDF, извлечение данных XFA и привязка полей — это дополнения Pro. См. /modules/form/.

Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы тикетов вне области рассмотрения.

  • Interop — версионированные DTO данных форм для внешних систем.
  • Core Form module — модуль чтения форм с открытым исходным кодом.
  • Form — Deep Reference — справочник на уровне методов для классов форм Pro.