Criação nativa de propriedades ausentes no XFA
Unit: HPDFXFAEventScript, integrada por HPDFXFARuntime e HPDFXFA
Acesso por eventos
Nós de formulários JavaScript expõem getElement(className, occurrence=0); uma propriedade suportada ausente é criada com os defaults de schema, e o acesso repetido retorna o mesmo handle vivo de propriedade
Acesso direto a propriedades, como field.font ou draw.para, cria a ocorrência zero quando o filho suportado está ausente
const label = xfa.form.resolveNode("main.row[1].label");
const font = label.getElement("font", 0);
font.typeface = "Helvetica";
font.size = "18pt";
font.fill.color.value = "0,128,255";
label.para.hAlign = "right";
label.border.getElement("edge", 3).thickness = "0.25pt";
O argument de ocorrência precisa ser um inteiro não negativo dentro da cardinalidade do schema; solicitar edge[3] cria as ocorrências de edges ausentes precedentes, cada uma com seus próprios defaults de schema
Paths de criação suportados
| Classe pai | Filhos suportados e ocorrências máximas |
|---|---|
| field | assist, bind, border, calculate, caption, desc, extras, font, format, keep, margin, para, traversal, ui, validate e value: um cada; items: dois |
| draw | assist, border, caption, desc, extras, font, keep, margin, para, traversal, ui e value: um cada |
| ui | extras e picture: um cada; uma escolha mutuamente exclusiva de widget como descrito em Overrides de propriedades de UI |
| passwordEdit, choiceList e checkButton | border, extras e margin: um cada |
| font | extras e fill: um cada |
| para | hyphenation: um |
| border | edge e corner: quatro cada; extras, fill e margin: um cada |
| caption | extras, font, margin, para e value: um cada |
| margin | extras: um |
| fill | color e extras: um cada; linear, pattern, radial, solid e stipple: um filho mutuamente exclusivo |
| textEdit | border, comb, extras e margin: um cada |
| edge e corner | color e extras: um cada |
Classes de filhos não listadas retornam null de getElement; ocorrências inválidas e filhos conflitantes de escolhas de fill fazem a transação do evento falhar
A criação de containers de metadados não executa scripts recém-armazenados; o comportamento de event, calculate e validate segue o modelo existente de execução do runtime
Persistência nativa e identidade
A criação e as escritas subsequentes publicam nós nativos reais de form packets sob a ocorrência repetida selecionada; o template e as demais ocorrências retêm seus valores originais
O evento seguinte reconstrói os bindings somente de formulários de propriedades a partir do packet nativo de formulários salvo, de modo que tanto o acesso direto quanto a resolução SOM observem a hierarquia criada
Referências retidas de objetos de script continuam endereçando a propriedade nativa após transações bem-sucedidas e inserção de instâncias; escrever numa referência depois que sua instância foi removida falha e restaura a transação
Clonar um prototype repetido também clona a estrutura somente de formulários de propriedades dele, usando defaults de schema para os novos atributos de propriedades, em vez dos overrides de outra ocorrência
Falhas do engine e falhas nativas de mutação restauram bytes nativos, nós de propriedades, datasets, estado de scripts e ordem de instâncias; a criação compartilha os orçamentos de nós, operações, profundidade, bytes e valores
Consumers efetivos e saída PDF salva
Consumers de campos e draws rich leem as propriedades criadas de fontes, fill/cor, parágrafos e bordas/edges durante o layout e o flattening reais; eventos subsequentes e reloads de XDP salvo preservam esses valores
Com THotPDF.AutoFormAppearances=True, os campos de texto XFA geram sua aparência nativa depois que o estilo efetivo é aplicado, incluindo famílias padrão suportadas de fontes, tamanho em pontos, cor do texto, alinhamento e cor e largura sólidas de bordas
AutoFormAppearances permanece uma opção explícita de documento; seu default False continua contando com a geração de aparências pelo reader
A criação e a cobertura de consumers de formatação são separadas: classes adicionais de filhos de valores e schemas de widgets, classes gerais de schema, remoção/reparenting de propriedades, texto de widgets mais rico e embutimento Unicode de aparências permanecem alvos ativos de implementação
APIs relacionadas
DOM nativo de propriedades XFA, Defaults do schema de propriedades XFA, TXFAEventAction e TXFAEventBinding