Введение

XFA (также известный как формы XFA) означает XML Forms Architecture, семейство запатентованных спецификаций XML, предложенных и разработанных JetForm для улучшения обработки веб-форм. Его также можно использовать в PDF-файлах, начиная со спецификации PDF 1.5. Спецификация XFA приводится в качестве внешней спецификации, необходимой для полного применения спецификации ISO 32000 1 (PDF 1.7). Архитектура XML-форм не была стандартизована как стандарт ISO и устарела в PDF 2.0. Предложение XFA было представлено в W3C в мае 1999 года. В 2002 году корпорация JetForm была приобретена Adobe Systems, и последняя представила формы XFA с PDF 1.5 и последующими версиями Acrobat (6 и 7) в 2003 году. Формы XFA хранятся внутри PDF-файлов или в виде файлов XDP (пакет данных XML), которые можно открыть в программном обеспечении Adobe LiveCycle Designer. XDP может упаковывать PDF-файл вместе с данными формы и шаблона в формате XML. XDP предоставляет механизм для упаковки компонентов формы в окружающий контейнер XML. Хотя XFA может использовать PDF, XFA не привязан к какому-либо конкретному языку описания страниц. Спецификация XFA включает в себя приложение, в котором обсуждаются детали реализации XFA, специфичной для Adobe, и поведение продуктов Adobe, отклоняющееся от спецификации XFA. Данные, введенные в форму XFA, могут быть отправлены на сервер с использованием операции HTTP POST в формате XDP, PDF, XFDF, XML 1.0 или в формате, закодированном по URL. XFA поддерживает использование XSLT для преобразования XML-данных перед загрузкой в XFA Data DOM или после выгрузки из XFA Data DOM. Один из подходов XFA к постраничной разбивке дублирует логику постраничной разметки и большую часть синтаксиса XSL FO. Формы XFA являются синонимом SmartForms в правительстве Австралии.

Статические и динамические формы

XFA определяет статические формы (начиная с XFA 2.0 и ранее) и динамические формы (начиная с XFA 2.1 или 2.2). В статической форме внешний вид и макет фиксированы, независимо от содержимого полей. Все незаполненные поля присутствуют в форме. По умолчанию статические формы не требуют повторной отрисовки. XFA выделяет два типа статических форм: "статические формы старого образца" (использующие "полный XFA") и XFAF (подмножество полного XFA, определенное начиная с XFA 2.5). Динамические формы (определенные начиная с XFA 2.1 или 2.2) могут изменять свой внешний вид различными способами в ответ на изменения данных. Динамическая форма требует отрисовки содержимого при открытии файла. Динамические формы также могут быть спроектированы так, чтобы изменять свою структуру для адаптации к изменениям в структуре данных, передаваемых в форму. Например, страница формы может быть пропущена, если для нее отсутствуют данные. Другой пример – поле, которое может занимать переменное количество места на странице, изменяя свой размер для оптимального размещения содержимого. Динамическая форма не может опираться на PDF-представление своего макета, поскольку позиционирование и расположение элементов макета изменяются при увеличении или уменьшении полей, а также при добавлении или исключении подформ.

Использование с портативным форматом документов

PDF 1.7 поддерживает два различных метода интеграции данных и PDF-форм. AcroForms (также известные как формы Acrobat), были представлены и включены в спецификацию формата PDF 1.2. Формы Adobe XML Forms Architecture (XFA) были представлены в спецификации формата PDF 1.5 как необязательная функция (спецификация XFA не входит в состав спецификации PDF, она лишь упоминается). Формы Adobe XFA несовместимы с AcroForms. При упаковке XFA в PDF-файл, он размещается в словаре ресурсов документов AcroForm ("Shell PDF") или ссылается на запись AcroForm в каталоге документа. Для создания форм XFA, предназначенных для использования в Adobe Reader, требуется Adobe LiveCycle Designer. Adobe Reader содержит "отключенные функции" для работы с формами XFA, которые активируются только при открытии PDF-документа, созданного с использованием технологий, доступных только от Adobe. Формы XFA несовместимы с версиями Adobe Reader до 6-й.

Упаковка

Формы XFA могут создаваться и использоваться как файлы PDF версий 1.5 и 1.7, или как XDP (пакет данных XML). Формат ресурса XFA в PDF описан в спецификации пакета данных XML.

Богатое текстовое сопровождение

Богатый текст может встречаться в данных, передаваемых в формы XFA, в шаблонах XFA в качестве значений по умолчанию, в качестве подписей полей или в качестве типового содержимого (графических элементов). Начиная с PDF 1.5 (XFA 2.02), текстовое содержимое переменных полей формы, а также аннотации могут включать информацию о форматировании (стиле). Эти строки с богатым текстом представляют собой XML-документы, соответствующие соглашениям для богатого текста, определенным в спецификации XML Forms Architecture, которая, в свою очередь, является подмножеством спецификации XHTML 1.0, дополненной ограниченным набором атрибутов стиля CSS2. В PDF 1.6 PDF поддерживает элементы и атрибуты богатого текста, указанные в спецификации XML Forms Architecture (XFA) 2.2. В PDF 1.7 PDF поддерживает элементы и атрибуты богатого текста, указанные в спецификации XML Forms Architecture (XFA) 2.4. В 2017 году комитет ISO признал XFA устаревшим для PDF 2.0.

Версии XFA

Версия XFA Год публикации Упомянуто в PDF версии Новые возможности Версия Adobe Acrobat Версия Adobe Designer 2.02 2003 1.5 XFA 2.0 поддерживает только статические формы 6.0 6 2.1 Набор соединений DOM, Данные соединения DOM, Описание данных DOM, DOM макета, Набор соединений DOM, Данные соединения DOM, Описание данных DOM, DOM макета, Специальные объектные модели, Расширена функциональность элемента группы исключений, Скрытие/отображение контейнеров в зависимости от релевантности, Растягиваемые контейнеры, Форматирование абзацев, Форматирование штрих-кодов, Соотношение сторон изображения, Неинтерактивные поля, Поддержка веб-сервисов (SOAP операции 'doc literal' через HTTP; WSDL веб-сервиса определяет операции привязки SOAP), Отправка частей формы в целевой URI, Подформы могут включать вычисления, Вычисления могут указывать условия переопределения, Скрипты указывают, должны ли они выполняться на клиенте, сервере или обоих, Переменные документа, Проверки валидации по специфическим шаблонам, Источник события включен как атрибут события, Использование описания данных при записи XML, Динамические формы, Повторяющиеся подформы, Явные ссылки на данные, Наборы подформ, Обработка записей, Глобальные поля, Элемент описания данных, Привязка данных по умолчанию для включения атрибутивных данных, Опция области подформы, Автоматическое разбиение макета, Динамический макет, Стратегия текучего макета, Поддержка текучего макета для таблиц и строк таблиц, Богатый текст: Встроенные объекты, Поддержка верхних и нижних индексов, Новые типы виджетов, Поддержка представлений азиатских языков, Объектная модель скриптов: Обращение к объектам по их именам классов, FormCalc: Новые функции для доступа к локали 2.2 2004 1.6 Набор соединений DOM, Данные соединения DOM, Событие для заполнения виджетов списка выбора, W3C XML цифровые подписи, Уникальная идентификация шаблонов, Переменные документа, используемые как именованные объекты скриптов 7.0 7 2.4 2006 1.7 и ISO 32000 1 Фрагменты форм, Шифрование штрих-кодов, Кодировка символов штрих-кодов, Опция кодирования URL для отправки, События входа и выхода из списка выбора, Проявляется как переменные скриптов, Сложная привязка, Условная привязка, Поддержка текста справа налево, Условное разбиение, Вложенные таблицы, Подписи могут отличаться в разных представлениях 7.0 7.1 2.5 2007 1.7 Уровень расширения Adobe 1 Безопасная отправка, Событие изменения индекса, XFA Foreground (XFAF), Изменение выбора начальной страницы, Явный контроль пагинации принтера, Функциональность виджетов: Управление прокруткой, Формы флажков, Подсветка кнопок, Явный контроль количества ячеек в выпадающих списках, Безопасность и контроль: Цифровые подписи документов MDP+ 8.0 8 2.6 2008 1.7 Уровень расширения Adobe 2 Документировано Adobe XMP, Документирован синтаксис конфигурации Adobe, Контроль версий шаблонов, Документированы устаревшие флаги Adobe (для обратной совместимости), Хранение изображений в PDF (изображения хранятся как ресурсы в контейнере PDF), Новые типы штрих-кодов (UPS Maxicode, Aztec, Data Matrix и семейство RSS14) 8.1, 8.1.1 ES 8.1 2.7 2008 1.7 Уровень расширения Adobe 3 Шрифты набора локали, Новый набор правил для выбора альтернативных шрифтов 8.1, 8.1.1 ES 8.1.2 2.8 2008 1.7 Уровень расширения Adobe 3 Новый набор данных переменных, Фрагменты форм, объявляющие обходы, Расширен доступ к свойству для подформ, Улучшен контроль над сиротами и вдовами, Свойство сохранения расширено для полей и рисунков, Политика аутентификации для веб-сервисов, Отправка через WSDL/SOAP, Стандартизированы события предварительной и последующей отправки, Добавлены события предварительной и последующей подписи, События предварительной отправки могут отменить связанное действие, Изменение поведения сохранения, Поддержка парного кернинга, Поддержка переносов, Богатый текст: Исходящие гиперссылки 9.0 ES 8.2 3.0 2009 1.7 Уровень расширения Adobe 5 Переопределение флага совместимости в LiveCycle, Неактивное присутствие, Распространение событий (вверх к их предковым объектам), Добавлены события валидации, Глобальный контроль обработки валидации 9.1 3.1 2009 1.7 Уровень расширения Adobe 6 Поддержка реляционных данных, Внедрение данных в описание данных, Расширенные и проиллюстрированные примеры штрих-кодов, Расширенные и исправленные примеры автоматизации, Управление дуплексной наложением, Рендеринг: Поддержка дуплексной печати длинным или коротким краем, Поддержка большего количества принтеров этикеток X (10) ES 2 3.3 2012 1.7 Уровень расширения Adobe 8 Поддержка маркированных списков, нумерованных списков и вложенных списков, Поддержка текучего контента справа налево для подформ и таблиц, Отказ от устаревшего рендеринга, Поддержка шифрования и расшифровки XML, Добавлен элемент autoSave, Добавлены элементы ADBE JSConsole и ADBE JSDebugger, Интеграция Flash (SWF) в XFA X (10) ES 3