XFA-Host-Modell
Aktiviere TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, um das zustandsbehaftete xfa.host-Modell über die mitgelieferte QuickJS-Engine zu nutzen
Konfiguriere Anwendungsmetadaten über TXFAWidgetRuntimeOptions.HostModel, bevor die Runtime erzeugt wird, und lies den aktuellen Zustand über TXFAWidgetRuntime.HostModel
Properties
| Property | Verhalten |
|---|---|
name, version, appType, platform, variation, language | Schreibgeschützte Anwendungsmetadaten, geliefert von der einbettenden Anwendung |
numPages | Schreibgeschützte tatsächliche Layout-Seitenzahl, einschließlich positionierten Inhalts jenseits von Feld-Widgets |
currentPage | Aktuelle Seite nullbasiert, geprüft gegen numPages; der Fokus auf ein Feld wählt seine Seite |
title | Unicode-Runtime-Titel, begrenzt durch MaxValueChars und mit der Transaktion veröffentlicht |
calculationsEnabled | Steuert automatische Berechnungsskripte; der Default ist true |
validationsEnabled | Steuert Validierungsskripte für bearbeitete Werte; der Default ist true |
Die Anwendungsversion identifiziert die einbettende Anwendung; die Bibliothek setzt nicht ihre Release-Nummer ein
Der Host-Zustand gehört zur Runtime; Titel- und Seitenänderungen verändern den ursprünglichen PDF-Objektgraphen nicht und werden nicht in gespeicherte XDP-Daten kodiert
Navigation, Fokus und Daten-Reset
| Methode | Verhalten |
|---|---|
pageUp(), pageDown() | Bewegen innerhalb der Seitengrenzen und Stoppen an der ersten oder letzten Seite |
getFocus() | Liefert das Live-fokussierte Feldvorkommen oder null, wenn Fokus fehlt, entfernt oder verdeckt ist |
setFocus(fieldOrSOM) | Fordert Fokus auf ein sichtbares Live-Feldvorkommen an; null oder leerer Text löscht den Fokus |
resetData(paths="") | Stellt Template-Default-Werte für Felder wieder her, die eine kommagetrennte SOM-Liste wählt, oder für alle Felder, wenn paths leer ist; wiederholte Instanzzahlen und unabhängige Vorkommen bleiben erhalten |
Zurückgesetzte Felder verlassen den Bearbeitungsmodus und kehren in einen gültigen Interaktionszustand zurück, sodass ein alter Editierpuffer den Reset-Wert nicht überschreibt
Reset und Data-DOM-loadXML dürfen im selben Ereignis laufen; ihre Änderungen teilen sich die Ereignistransaktion, und ein fehlgeschlagener Script oder erschöpftes Budget stellt Datenwerte, Editierpuffer, Host-State und den lexikalischen Script-Objektzustand vor einem Retry wieder her
Feldidentitäten folgen ihrem Datenvorkommen, wenn ein Instance Manager wiederholte Subformulare umordnet, und die Snapshot-Wiederherstellung bewahrt diese logischen Identitäten
Fokus-Lebenszyklus und Transaktionen
Runtime-Fokusänderungen committen und validieren eine ausstehende Quellbearbeitung, führen Exit-Skripte der Quelle aus, wählen das neue Feld und führen Enter-Skripte des Ziels aus, bevor sich Berechnung und Layout festigen
Fokusanforderungen aus Enter- oder Exit-Skripten können das Ziel umleiten; jeder Fokusablauf erlaubt 64 Übergänge und teilt die Skript-Operations- und Ablaufzeit-Budgets
Skripte sehen die Activity über xfa.event.name; Berechnungen und Validierung erhalten ihre jeweiligen Kontextnamen
Öffentliche FocusWidget- und enter/exit-DispatchEvent-Aufrufe nutzen denselben transaktionalen Lebenszyklus; ClearFocus bricht seinen aktuellen Editierpuffer vor dem Exit-Lebenszyklus ab und bewahrt sein bisheriges Abbruchverhalten
OnFocusChanged veröffentlicht geordnete Callbacks nach dem Commit; Zwischen-Umleitungen bleiben innerhalb der Transaktion, und fehlgeschlagene Skripte, Validierung oder Budgets stellen Host-Zustand, Fokus, Editierpuffer, Dokumentwerte und lexikalischen Skriptzustand gemeinsam wieder her
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;
Anwendungseffekte und verbleibende Abdeckung
Dialoge, Drucken, externe Navigation, Import/Export und HTTP-Effekte nutzen expliziten Anwendungs-Host-Transport und aufgezeichnete Antworten; das Zustandsmodell selbst startet keine UI- oder Netzwerkoperation
Weitere Host-Dialog-APIs, jede Acrobat-Host-Property, dynamische synchrone Reflow-Abfragen und vollständige SOM-Operatoren bleiben separate Integrationsziele
Verwandte APIs: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript und Interactive XFA Widget Runtime