Criação automática de choices e booleanos no XFA

Unit: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF consome o layout XFA real e constrói campos choice, widgets de checkbox e pais e membros de radio sem slots PDF preparados

Campos choice

Campos combo e list usam dicionários nativos /FT /Ch; listas separadas de display e save do XFA viram pares export/display de /Opt, preservando Unicode, delimitadores, exports explicitamente vazios, items escalares tipados e whitespace de export nas bordas

Um combo editável retém seu valor de texto livre; um choice não editável exige que o export selecionado exista na lista de opções dele

Valores multi-select viram um array nativo /V ordenado e índices /I correspondentes na ordem das opções; entrada comum somente de valor usa exports separados por newlines e rejeita valores selecionados duplicados durante a preparação

O scripting de choice items preserva índices explícitos exatos para exports duplicados e vazios através do XDP salvo, de modo que seus arrays PDF /I, valores exportados /V e aparências de rótulos de display permaneçam não ambíguos

A validação de seleções duplicadas compara strings exatas sem reordenar a lista autorada de seleções; um heap sort de índices substitui comparações quadráticas de pares e checa o cancelamento durante toda a validação de unicidade

O texto de aparências de choices usa rótulos de display, enquanto /V usa export values; aparências de lists contêm uma janela visível medida com a primeira seleção, um índice /TI exato do topo e highlights relativos de linhas selecionadas, retendo o grafo completo de opções

As flags nativas de combo, edit, multi-select, selection-commit e readOnly usam tokens exatos de inteiros PDF para que um bit alto de flag não possa apagar o bit readOnly

Estados de checkboxes e radios

Checkboxes contêm Form XObjects reais de Off e estado on; estilos e captions booleanos consomem formas reais de marcas, tamanho, contornos de UI, cores de campos, captions Unicode escalares e terceiros estados de checkboxes sem depender de um caractere de checkmark na fonte fornecida

O /Opt nativo retém o export value do XFA; o export reservado Off e exports começando com XFAOn recebem aliases de estados ativos livres de colisões, enquanto suas strings reais de export permanecem inalteradas em /Opt

Membros de radio compartilham um pai nativo por path de exclusion-group de template e path nativo de contexto de dados; grupos repetidos recebem /Kids, /V, /Opt e estados /AS de widgets independentes mesmo quando os nomes exibidos dos grupos são idênticos

Exports iguais dentro de um grupo de radio definem RadiosInUnison e ativam cada membro correspondente; a política de edição de todo o documento e o acesso ao exclusion group determinam a flag readOnly do pai

Layout de exclusion groups tb e lr-tb é despachado com o escopo nativo atual de dados, e exclusion groups posicionados aplicam suas próprias origens x/y aos membros deles

Persistência de runtime e preparação

Leituras e atribuições de rawValue de exclusion groups participam da transação nativa existente de eventos, binding de células, sincronização formulário/dados e rollback; o XDP salvo de runtime pode ser passado diretamente ao criador automático

O fixture de aceitação muta o segundo combo, checkbox e exclusion group repetidos, lê o grupo pelo alias de dados dele imediatamente, salva o XDP e verifica de forma independente os valores, estados e aparências do PDF resultante, preservando a primeira instância

Todas as falhas de preparação do candidato preservam os bytes, comprimento e posição do destino; arrays de opções de choices, nomes de campos, exports booleanos, contagens de widgets, alocações de grafos e texto agregado de aparências retêm os limites existentes de recursos

Falha de I/O no destino retém a fronteira do stream do chamador descrita em Criação automática de XFA

Trabalho restante de consumers

Captions rich, dimensionamento de captions com wrapping, estilos de contornos por edge e preenchidos, commits posteriores de estados de widgets, scrolling interativo posterior de lists, ambiguidade somente de valor para exports contendo quebras de linha, layouts avançados de exclusion groups e campos de assinaturas permanecem trabalho de integração separado

Metadados de choices documentam as dicas aditivas de callbacks usadas por esses consumers nativos