XFA form tree creation and editing

TXFAWidgetRuntime ondersteunt transactionele JavaScript-creatie, -klonen en -bewerking van de live formulier-boom via xfa.form en node-collecties

De live formulier-boom heeft onafhankelijke native identiteiten en kan als XDP-formulier-packet worden opgeslagen zonder de authored template te wijzigen

Een veld creëren en invoegen

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) geeft een gedetachte node terug, met een lege naam en de model-namespace wanneer de optionele argumenten worden weggelaten

De geaccepteerde klassen omvatten field, subform, draw, area, exclGroup en de property-klassen die het runtime-property-schema herkent

Een node creëren voegt die niet in het formulier in of creëert geen zichtbare widget totdat hij wordt gekoppeld met de vereiste UI- en value-properties

Collectie-operaties en klonen

OperatieGedrag
parent.nodes.append(node)Verplaatst een gedetachte of gekoppelde node naar het einde van de live kind-collectie van de ouder
parent.nodes.insert(node, before)Verplaatst de node direct vóór een bestaand kind van dezelfde ouder
parent.nodes.remove(node)Detacht een kind terwijl diens script-identiteit behouden blijft voor later hergebruik
node.clone(true)Geeft een gedetachte diepe kloon terug met aparte native en script-identiteiten
node.clone(false)Geeft een gedetachte shallow-kloon terug zonder kindnodes of een gekopieerde veldwaarde

Collectievolgorde, parent, property-opzoek en ondersteunde SOM-resolutie weerspiegelen geslaagde bewerkingen direct binnen het event

Referenties vastgehouden door script-objecten blijven diens eigen nodes aanspreken na een gecommitte bewerking of event-rollback, inclusief gedetachte diepe en shallow klonen

Een cyclus, een referentiekind van een andere ouder of een data-model-node doorgegeven aan een formulier-operatie raiset een exception voordat die ongeldige operatie de boom wijzigt

De formulier-model-wortel kan nieuw aangemaakte subforms en velden bevatten, maar de model-wortel zelf kan niet worden verplaatst of gekloond

Herhaalde scopes en initiële instances

Echte formulier-instances behouden aparte identiteiten zelfs wanneer diens authored namen gelijk zijn, diens data-contexten verschillen of er geen datasets-packet bestaat

Een lege merge gebruikt het expliciete occur.initial-aantal, of occur.min wanneer initial ontbreekt, en een afwezige max defaultt naar min

Voor een lege merge is een initieel aantal buiten minimum en maximum toegestaan, inclusief nul initiële kopieën

Nested en naamloze subforms behouden diens eigen occurrence-paden, en het materialiseren van deze instances synthetiseert geen datasets-packet

Deze occurrence-regels volgen XML Forms Architecture 3.3, gedrukte pagina's 339–345

Commit, rollback en uitvoer

Een geslaagd event past diens structurele journal toe, herbouwt native widgets en maakt de bewerkte formulier beschikbaar voor SaveToBytes en automatische native PDF-creatie

Een niet-gevangen script-exception, native commit-falen of overschreden event-budget herstelt het originele document, widget-identiteiten en vastgehouden scriptstatus, zodat een later event kan retryen

De bestaande operation-, node-, diepte-, byte-, widget- en elapsed-time-budgetten gelden ook voor structurele preparatie en commit

Opgeslagen formulier-instances kunnen worden herladen en worden doorgegeven aan HPDFXFAWriteHeadlessPDF om echte PDF-velden en -appearance-streams te maken met meegeleverde fontbytes

Bereik

Deze API's bewerken het live formulier-model en diens ondersteunde property-schema

Algemene xfa.template-bewerking, complete choice subform-set-verwerking, het volledige XFA-klassa-schema en willekeurige binding-selector-combinaties blijven aparte capabilities