Modelo host XFA
Activa TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript para usar el modelo con estado de xfa.host a través del engine QuickJS incluido
Configura los metadatos de la aplicación mediante TXFAWidgetRuntimeOptions.HostModel antes de crear el runtime, y lee el estado actual a través de TXFAWidgetRuntime.HostModel
Propiedades
| Propiedad | Comportamiento |
|---|---|
name, version, appType, platform, variation, language | Metadatos de aplicación de solo lectura suministrados por la aplicación que incrusta la librería |
numPages | Conteo real de páginas del layout, de solo lectura, incluido el contenido posicionado más allá de los widgets de campos |
currentPage | Página actual en base cero, verificada contra numPages; dar foco a un campo selecciona su página |
title | Título Unicode del runtime, limitado por MaxValueChars y publicado con la transacción |
calculationsEnabled | Controla los scripts automáticos de cálculo; el valor por defecto es true |
validationsEnabled | Controla los scripts de validación para valores editados; el valor por defecto es true |
La versión de la aplicación identifica a la aplicación que incrusta la librería; la librería no sustituye su propio número de release
El estado del host pertenece al runtime; los cambios de título y página no modifican el grafo original de objetos PDF ni se codifican en los datos XDP guardados
Navegación, foco y reset de datos
| Método | Comportamiento |
|---|---|
pageUp(), pageDown() | Se mueven dentro de los límites de páginas y se detienen en la primera o última página |
getFocus() | Devuelve la ocurrencia de campo enfocada en vivo, o null cuando el foco está ausente, eliminado o oculto |
setFocus(fieldOrSOM) | Solicita el foco sobre una ocurrencia de campo en vivo y visible; null o texto vacío limpia el foco |
resetData(paths="") | Restaura los valores por defecto de plantilla para los campos seleccionados por una lista SOM separada por comas, o todos los campos cuando paths está vacío; los conteos de instancias repetidas y las ocurrencias no relacionadas se preservan |
Los campos reseteados salen del modo de edición y recuperan un estado de interacción válido, evitando que un buffer de edición obsoleto sobrescriba el valor restaurado
El reset y el loadXML del Data DOM pueden ejecutarse en el mismo evento; sus cambios comparten la transacción del evento, y un script fallido o un presupuesto agotado restauran los valores de datos, los buffers de edición, el estado del host y el estado léxico de los objetos de scripts antes de un reintento
Las identidades de campos siguen su ocurrencia de datos cuando un instance manager reordena subforms repetidos, y la restauración de snapshots preserva esas identidades lógicas
Ciclo de vida del foco y transacciones
Los cambios de foco del runtime confirman y validan una edición de fuente pendiente, ejecutan los scripts exit de la fuente, seleccionan el nuevo campo y ejecutan los scripts enter del destino antes de que el cálculo y el layout se estabilicen
Las solicitudes de foco hechas por scripts enter o exit pueden redirigir el destino; cada drenaje de foco permite 64 transiciones y comparte los presupuestos de operaciones y tiempo transcurrido del script
Los scripts ven la actividad mediante xfa.event.name; cálculo y validación reciben sus nombres de contexto correspondientes
Las llamadas públicas FocusWidget y DispatchEvent de enter/exit usan el mismo ciclo de vida transaccional; ClearFocus cancela su buffer de edición actual antes del ciclo de vida de exit, preservando su comportamiento de cancelación previo
OnFocusChanged publica callbacks ordenados después de la confirmación; las redirecciones intermedias quedan dentro de la transacción, y los scripts fallidos, la validación o los presupuestos restauran en conjunto el estado del host, el foco, los buffers de edición, los valores del documento y el estado léxico de scripts
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;
Efectos de aplicación y cobertura restante
Los diálogos, la impresión, la navegación externa, la importación/exportación y los efectos HTTP usan el transporte explícito de host de la aplicación y respuestas grabadas; el modelo de estado mismo no lanza ninguna operación de UI o red
APIs adicionales de diálogos de host, cada propiedad del host de Acrobat, las consultas de reflow dinámico síncrono y los operadores SOM completos siguen siendo objetivos de integración separados
APIs relacionadas: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript y Interactive XFA Widget Runtime