Modèle hôte XFA

Activez TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript pour utiliser le modèle xfa.host avec état via le moteur QuickJS embarqué

Configurez les métadonnées d'application via TXFAWidgetRuntimeOptions.HostModel avant de créer le runtime, et lisez l'état courant via TXFAWidgetRuntime.HostModel

Propriétés

PropriétéComportement
name, version, appType, platform, variation, languageMétadonnées d'application en lecture seule fournies par l'application hôte
numPagesNombre réel de pages de mise en page en lecture seule, y compris le contenu positionné au-delà des widgets de champs
currentPagePage courante à base zéro, vérifiée par rapport à numPages ; donner le focus à un champ sélectionne sa page
titleTitre de runtime Unicode, limité par MaxValueChars et publié avec la transaction
calculationsEnabledContrôle les scripts de calcul automatiques ; la valeur par défaut est true
validationsEnabledContrôle les scripts de validation des valeurs éditées ; la valeur par défaut est true

La version d'application identifie l'application hôte ; la bibliothèque ne substitue pas son numéro de version

L'état hôte appartient au runtime ; les changements de titre et de page ne modifient pas le graphe d'objets PDF d'origine et ne sont pas encodés dans les données XDP enregistrées

Navigation, focus et réinitialisation de données

MéthodeComportement
pageUp(), pageDown()Se déplacent dans les limites des pages et s'arrêtent à la première ou à la dernière page
getFocus()Retourne l'occurrence de champ focalisée dynamique ou null quand le focus est absent, supprimé ou masqué
setFocus(fieldOrSOM)Demande le focus sur une occurrence de champ dynamique visible ; null ou un texte vide efface le focus
resetData(paths="")Restaure les valeurs par défaut du template pour les champs sélectionnés par une liste SOM séparée par des virgules, ou tous les champs quand paths est vide ; les comptes d'instances répétées et les occurrences sans rapport sont préservés

Les champs réinitialisés quittent le mode d'édition et retrouvent un état d'interaction valide, empêchant un tampon d'édition périmé d'écraser la valeur réinitialisée

Reset et loadXML du Data DOM peuvent s'exécuter dans le même événement ; leurs changements partagent la transaction d'événement, et un script en échec ou un budget épuisé restaure les valeurs de données, les tampons d'édition, l'état hôte et l'état lexical des objets script avant une nouvelle tentative

Les identités de champs suivent leur occurrence de données quand un instance manager réordonne les subforms répétés, et la restauration de snapshot préserve ces identités logiques

Cycle de vie du focus et transactions

Les changements de focus du runtime valident et finalisent une édition source en attente, exécutent les scripts exit de la source, sélectionnent le nouveau champ et exécutent les scripts enter de la cible avant que le calcul et la mise en page ne se stabilisent

Les demandes de focus faites par des scripts enter ou exit peuvent rediriger la cible ; chaque drain de focus admet 64 transitions et partage les budgets d'opérations de script et de temps écoulé

Les scripts voient l'activité via xfa.event.name ; les calculs et la validation reçoivent leurs noms de contexte correspondants

Les appels publics FocusWidget et DispatchEvent enter/exit utilisent le même cycle de vie transactionnel ; ClearFocus annule son tampon d'édition courant avant le cycle de vie exit, préservant son comportement d'annulation précédent

OnFocusChanged publie des callbacks ordonnés après validation ; les redirections intermédiaires restent dans la transaction, et les scripts, validations ou budgets en échec restaurent ensemble l'état hôte, le focus, les tampons d'édition, les valeurs du document et l'état lexical des 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;

Effets applicatifs et couverture restante

Les dialogues, l'impression, la navigation externe, l'import/export et les effets HTTP utilisent le transport hôte applicatif explicite et les réponses enregistrées ; le modèle d'état lui-même ne lance aucune opération d'UI ou de réseau

Les APIs de dialogues hôtes supplémentaires, chaque propriété hôte Acrobat, les requêtes de reflow synchrones dynamiques et les opérateurs SOM complets restent des cibles d'intégration séparées

APIs associées : TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript et Runtime XFA dynamique interactif