XFA Host Model

Włącz TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, aby używać stanowego modelu xfa.host przez dostarczany silnik QuickJS

Skonfiguruj metadane aplikacji przez TXFAWidgetRuntimeOptions.HostModel przed utworzeniem runtime i czytaj bieżący stan przez TXFAWidgetRuntime.HostModel

Properties

WłaściwośćZachowanie
name, version, appType, platform, variation, languageMetadane aplikacji tylko do odczytu dostarczane przez aplikację osadzającą
numPagesRzeczywista liczba stron layoutu tylko do odczytu, łącznie z pozycjonowaną zawartością poza widgetami pól
currentPageBieżąca strona oparta na zerze, sprawdzana względem numPages; sfokusowanie pola wybiera jego stronę
titleTytuł runtime Unicode, ograniczony przez MaxValueChars i publikowany z transakcją
calculationsEnabledSteruje automatycznymi skryptami obliczeń; default to true
validationsEnabledSteruje skryptami walidacji edytowanych wartości; default to true

Wersja aplikacji identyfikuje aplikację osadzającą; biblioteka nie podstawia swojego numeru wydania

Stan hosta należy do runtime; zmiany tytułu i strony nie modyfikują oryginalnego grafu obiektów PDF i nie są kodowane do zapisanych danych XDP

Navigation, focus and data reset

MetodaZachowanie
pageUp(), pageDown()Przesuwa się w granicach stron i zatrzymuje na pierwszej albo ostatniej stronie
getFocus()Zwraca żywe sfokusowane wystąpienie pola albo null, gdy fokus jest nieobecny, usunięty albo ukryty
setFocus(fieldOrSOM)Żąda fokusu na widocznym żywym wystąpieniu pola; null albo pusty tekst czyści fokus
resetData(paths="")Przywraca defaultowe wartości szablonu dla pól wybranych przecinkami oddzieloną listą SOM, albo wszystkich pól, gdy paths jest puste; liczby powtarzalnych wystąpień i niepowiązane wystąpienia są zachowywane

Resetowane pola opuszczają tryb edycji i odzyskują poprawny stan interakcji, uniemożliwiając przestarzałemu buforowi edycji nadpisanie wartości resetowanej

Reset i loadXML Data DOM mogą działać w tym samym zdarzeniu; ich zmiany dzielą transakcję zdarzenia, a nieudany skrypt albo wyczerpany budżet przywraca wartości danych, bufory edycji, stan hosta i leksykalny stan skryptów przed ponowieniem

Tożsamości pól podążają za swoim wystąpieniem danych, gdy menedżer instancji przestawia powtarzalne subformy, a przywracanie snapshotu zachowuje te logiczne tożsamości

Focus lifecycle and transactions

Zmiany fokusu runtime commitują i walidują oczekującą edycję źródła, wykonują skrypty exit źródła, wybierają nowe pole i wykonują skrypty enter celu, zanim obliczenia i layout się ustabilizują

Żądania fokusu składane przez skrypty enter albo exit mogą przekierować cel; każdy odpływ fokusu dopuszcza 64 przejścia i dzieli budżety operacji skryptowych i upływu czasu

Skrypty widzą aktywność przez xfa.event.name; obliczenia i walidacja otrzymują swoje odpowiadające nazwy kontekstu

Publiczne wywołania FocusWidget i enter/exit DispatchEvent używają tego samego transakcyjnego cyklu życia; ClearFocus anuluje swój bieżący bufor edycji przed cyklem życia exit, zachowując wcześniejsze zachowanie anulowania

OnFocusChanged publikuje uporządkowane callbacki po commicie; pośrednie przekierowania pozostają wewnątrz transakcji, a nieudane skrypty, walidacja albo budżety przywracają stan hosta, fokus, bufory edycji, wartości dokumentu i leksykalny stan skryptów razem

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;

Application effects and remaining coverage

Dialogi, drukowanie, nawigacja zewnętrzna, import/eksport i efekty HTTP używają jawnego transportu hosta aplikacji i nagranych odpowiedzi; sam model stanu nie uruchamia żadnej operacji UI ani sieciowej

Dodatkowe API dialogów hosta, każda właściwość hosta Acrobat, dynamiczne synchroniczne zapytania reflow i kompletne operatory SOM pozostają odrębnymi celami integracji

Powiązane API: TXFAHostModelState, PXFAHostModelState, HPDFXFAHostModelJavaScript i Interactive XFA Widget Runtime