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, language | Métadonnées d'application en lecture seule fournies par l'application hôte |
numPages | Nombre réel de pages de mise en page en lecture seule, y compris le contenu positionné au-delà des widgets de champs |
currentPage | Page courante à base zéro, vérifiée par rapport à numPages ; donner le focus à un champ sélectionne sa page |
title | Titre de runtime Unicode, limité par MaxValueChars et publié avec la transaction |
calculationsEnabled | Contrôle les scripts de calcul automatiques ; la valeur par défaut est true |
validationsEnabled | Contrô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éthode | Comportement |
|---|---|
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