Модель хоста XFA

Включите TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, чтобы использовать модель xfa.host с состоянием через поставляемый движок QuickJS

Настройте метаданные приложения через TXFAWidgetRuntimeOptions.HostModel до создания рантайма и читайте текущее состояние через TXFAWidgetRuntime.HostModel

Свойства

СвойствоПоведение
name, version, appType, platform, variation, languageМетаданные приложения только для чтения, предоставленные встраивающим приложением
numPagesФактическое число страниц раскладки только для чтения, включая позиционированное содержимое за пределами виджетов полей
currentPageТекущая страница с нуля, проверяемая по numPages; фокус на поле выбирает его страницу
titleЗаголовок рантайма в Unicode, ограниченный MaxValueChars и публикуемый вместе с транзакцией
calculationsEnabledУправляет автоматическими скриптами вычислений; по умолчанию true
validationsEnabledУправляет скриптами валидации отредактированных значений; по умолчанию true

Версия приложения идентифицирует встраивающее приложение; библиотека не подставляет свой номер версии

Состояние хоста принадлежит рантайму; изменения заголовка и страницы не изменяют исходный граф объектов PDF и не кодируются в сохраняемые данные XDP

Навигация, focus и сброс данных

МетодПоведение
pageUp(), pageDown()Двигаются в пределах страниц и останавливаются на первой или последней странице
getFocus()Возвращает живое сфокусированное вхождение поля или null, когда focus отсутствует, удалён или скрыт
setFocus(fieldOrSOM)Запрашивает focus на видимом живом вхождении поля; null или пустой текст сбрасывает focus
resetData(paths="")Восстанавливает дефолтные значения шаблона для полей, выбранных списком SOM через запятую, или всех полей, когда paths пуст; число повторяющихся экземпляров и посторонние вхождения сохраняются

Сброшенные поля выходят из режима редактирования и возвращаются в корректное состояние взаимодействия, не давая устаревшему буферу правки перезаписать сброшенное значение

Reset и loadXML Data DOM могут выполняться в одном событии; их изменения разделяют транзакцию события, а упавший скрипт или исчерпанный бюджет восстанавливает значения данных, буферы правки, состояние хоста и лексическое состояние script-объектов до повторной попытки

Идентичности полей следуют за своим вхождением данных, когда instance manager переупорядочивает повторяющиеся subform, а восстановление снимка сохраняет эти логические идентичности

Жизненный цикл focus и транзакции

Изменения focus в рантайме фиксируют и валидируют ожидающую правку источника, выполняют exit-скрипты источника, выбирают новое поле и выполняют enter-скрипты цели до того, как вычисления и раскладка устаканятся

Запросы focus из enter- или exit-скриптов могут перенаправить цель; каждый цикл обработки focus допускает 64 перехода и разделяет бюджеты операций и времени скрипта

Скрипты видят активность через xfa.event.name; вычисления и валидация получают соответствующие имена контекстов

Публичные вызовы FocusWidget и enter/exit DispatchEvent используют тот же транзакционный жизненный цикл; ClearFocus отменяет текущий буфер правки до exit-цикла, сохраняя прежнее поведение отмены

OnFocusChanged публикует упорядоченные колбэки после фиксации; промежуточные перенаправления остаются внутри транзакции, а упавшие скрипты, валидация или бюджеты восстанавливают вместе состояние хоста, focus, буферы правки, значения документа и лексическое состояние скриптов

Options := TXFAWidgetRuntimeOptions.Default;
Options.ScriptOptions.EnableJavaScript := True;
Options.HostModel.Name := 'Application';
Options.HostModel.Version := '1.0';
Options.HostModel.Language := 'en-US';
Runtime := TXFAWidgetRuntime.Create(XDPBytes, 595, 842, Options);
xfa.host.title = "Order form";
xfa.host.setFocus("rows[1].quantity");
xfa.host.resetData("rows[1].quantity,rows[1].price");
xfa.host.calculationsEnabled = false;

Эффекты приложения и оставшееся покрытие

Диалоги, печать, внешняя навигация, импорт/экспорт и HTTP-эффекты используют явный транспорт хоста приложения и записанные ответы; сама модель состояния не запускает UI- или сетевых операций

Дополнительные API хостовых диалогов, каждое свойство хоста Acrobat, запросы динамического синхронного reflow и полные SOM-операторы остаются отдельными целями интеграции

Связанные API: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript и Интерактивный runtime виджетов динамического XFA