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, language | Metadane aplikacji tylko do odczytu dostarczane przez aplikację osadzającą |
numPages | Rzeczywista liczba stron layoutu tylko do odczytu, łącznie z pozycjonowaną zawartością poza widgetami pól |
currentPage | Bieżąca strona oparta na zerze, sprawdzana względem numPages; sfokusowanie pola wybiera jego stronę |
title | Tytuł runtime Unicode, ograniczony przez MaxValueChars i publikowany z transakcją |
calculationsEnabled | Steruje automatycznymi skryptami obliczeń; default to true |
validationsEnabled | Steruje 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
| Metoda | Zachowanie |
|---|---|
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