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
| Operatie | Gedrag |
|---|---|
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