XFA form tree creation and editing
TXFAWidgetRuntime wspiera transakcyjne tworzenie, klonowanie i edycję żywego drzewa formularzy JavaScript przez xfa.form i kolekcje węzłów
Żywe drzewo formularzy ma niezależne natywne tożsamości i może zostać zapisane jako pakiet formularzy XDP bez modyfikowania autorskiego szablonu
Creating and inserting a field
var row = xfa.resolveNode("row[1]");
var field = xfa.form.createNode("field", "additional");
row.nodes.append(field);
field.w = "160pt";
field.h = "24pt";
field.ui.getElement("textEdit");
field.font.typeface = "DejaVu Sans";
field.rawValue = "Additional value";
createNode(className, name, namespaceURI) zwraca odłączony węzeł, z pustą nazwą i przestrzenią nazw modelu używaną, gdy opcjonalne argumenty są pominięte
Akceptowane klasy obejmują field, subform, draw, area, exclGroup i klasy właściwości rozpoznawane przez schemat właściwości runtime
Utworzenie węzła nie wstawia go do formularza ani nie tworzy widocznego widgeta, dopóki nie zostanie dołączony z wymaganymi właściwościami UI i value
Collection operations and cloning
| Operacja | Zachowanie |
|---|---|
parent.nodes.append(node) | Przenosi odłączony albo dołączony węzeł na koniec żywej kolekcji potomków rodzica |
parent.nodes.insert(node, before) | Przenosi węzeł bezpośrednio przed istniejącego potomka tego samego rodzica |
parent.nodes.remove(node) | Odłącza potomka, zachowując jego tożsamość skryptową do późniejszego ponownego użycia |
node.clone(true) | Zwraca odłączony klon głęboki z odrębnymi natywnymi i skryptowymi tożsamościami |
node.clone(false) | Zwracza odłączony klon płytki bez potomków i skopiowanej wartości pola |
Kolejność kolekcji, parent, odpytanie właściwości i obsługiwane rozpoznawanie SOM odzwierciedlają udane edycje natychmiast wewnątrz zdarzenia
Referencje zachowane przez obiekty skryptowe nadal adresują swoje własne węzły po zacommitowanej edycji albo rollbacku zdarzenia, łącznie z odłączonymi klonami głębokimi i płytkimi
Cykl, potomek referencjonowany z innego rodzica albo węzeł modelu danych przekazany do operacji formularza podnosi wyjątek, zanim ta niepoprawna operacja zmieni drzewo
Korzeń modelu formularza może zawierać nowo utworzone subformy i pola, ale sam korzeń modelu nie może zostać przeniesiony ani sklonowany
Repeated scopes and initial instances
Rzeczywiste instancje formularza zachowują odrębne tożsamości nawet przy równych autorskich nazwach, różnych kontekstach danych albo braku pakietu datasets
Puste scalenie używa jawnego licznika occur.initial albo occur.min, gdy initial jest nieobecne, a nieobecne max domyślnie min
Dla pustego scalenia początkowa liczba poza minimum i maksimum jest dozwolona, łącznie z zerowymi początkowymi kopiami
Zagnieżdżone i nienazwane subformy zachowują własne ścieżki wystąpień, a materializowanie tych instancji nie syntetyzuje pakietu datasets
Te reguły wystąpień podążają za XML Forms Architecture 3.3, wydrukowane strony 339-345
Commit, rollback and output
Udane zdarzenie stosuje swój dziennik strukturalny, przebudowuje natywne widgety i udostępnia edytowany formularz SaveToBytes i automatycznemu natywnemu tworzeniu PDF
Nieprzechwycony wyjątek skryptu, natywna awaria commitu albo przekroczony budżet zdarzenia przywraca oryginalny dokument, tożsamości widgetów i zachowany stan skryptów, więc późniejsze zdarzenie może ponowić
Istniejące budżety operacji, węzłów, głębokości, bajtów, widgetów i upływu czasu też stosują się do strukturalnego przygotowania i commitu
Zapisane instancje formularza mogą zostać przeładowane i przekazane do HPDFXFAWriteHeadlessPDF, aby utworzyć rzeczywiste pola PDF i strumienie wyglądów z dostarczonymi bajtami fontów
Scope
Te API edytują żywy model formularza i jego obsługiwany schemat właściwości
Ogólna edycja xfa.template, kompletne przetwarzanie choice subform-set, pełny schemat klas XFA i dowolne kombinacje selektorów powiązań pozostają odrębnymi zdolnościami