Criação nativa automática de PDF XFA

Unit: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF cria um PDF nativo fresco diretamente de bytes XDP e uma fonte TrueType fornecida pela aplicação, sem PDF de entrada nem slots de campos preparados

O adapter consome os callbacks existentes de binding, layout de instâncias repetidas e paginação do XFA, e constrói grafos nativos de objetos de páginas e AcroForms com appearance streams reais de fontes embutidas

Campos text, numeric, date e password, push buttons, choices de combo e list, grupos de checkbox e radio, texto estático, draws de retângulo, linha, arco e imagens inline PNG ou JPEG são consumidos; assinaturas e consumers adicionais de draws exigem integração adicional do adapter

Criação de choices e booleanos preserva valores separados de display e export, comportamento editable e multi-select, estados nativos de aparências e grupos de radio repetidos independentes

Estilos e captions booleanos consomem marcas vetoriais reais, tamanho, cores e espessuras de contornos, regiões de captions Unicode e terceiros estados de checkboxes

Gráficos e imagens nativos consomem paths vetoriais reais, formatos de samples e transparência PNG, JPEG baseline ou progressivo, aspecto físico e placement afim

Senhas usam uma aparência mascarada, retendo o valor nativo do campo; Editable de todo o documento e o acesso readOnly efetivo do XFA determinam as flags nativas dos campos

Coordenadas em pontos do XFA usam origem no canto superior esquerdo e são convertidas uma vez em retângulos nativos de widgets e translações de draws; ocorrências repetidas separadas recebem nomes nativos distintos de campos do layout engine

Recursos nativos /AP, /DR e /DA são gerados com a fonte fornecida e o tamanho, cor e alinhamento efetivos; a face fornecida é usada para todo campo, então a seleção de typefaces e múltiplas faces de estilos são responsabilidades da aplicação nesta etapa

Use TXFAWidgetRuntime para executar eventos de lifecycle ou interação e salvar o XDP resultante antes da criação quando o documento exigir esses eventos; as ScriptOptions do adapter controlam o processamento de calculate e validate do engine de flatten

Preparação e limites

TXFAHeadlessPDFOptions delimita bytes XDP e de fontes, bytes de saída e objetos, contagens de objetos e páginas, campos e unidades agregadas de glyphs UTF-16

Orçamentos de objetos, páginas e glyphs são checados antes de suas alocações correspondentes; checagens de embutimento delimitam streams agregados de fontes e imagens, decoders de imagens delimitam seus buffers de trabalho, e a serialização nativa aplica os limites de bytes por objeto e do candidato completo

O cancelamento é checado durante toda a criação do grafo, geração de aparências e serialização; todas as falhas de preparação deixam a posição, o comprimento e os bytes existentes do stream de destino inalterados

O candidato completo é preparado em memória antes de uma única chamada WriteBuffer ao destino; erros de I/O no destino propagam e podem deixar escritas parciais conforme o comportamento do stream do chamador

A saída é um documento novo não assinado; preservar criptografia importada, assinaturas existentes e revisões da origem pertence às APIs nativas de import de documentos e revisões

Aceitação

Tests/Linux/XFAHeadlessCreationTests.pas produz documentos reais repetidos, paginados e globalmente read-only, um documento XDP salvo mutado por eventos e um documento de draws Unicode estilizado, sem abrir UI de reader

Tests/Linux/Verify-XFAHeadlessCreation.py verifica de forma independente valores nativos, flags de campos, posse de páginas, /AP e recursos de fontes embutidas com pypdf, e texto real e pixels de aparências renderizadas com MuPDF

Tests/Linux/XFAHeadlessChoiceTests.pas e Verify-XFAHeadlessChoice.py adicionam valores e flags reais de choices, pais de radio e identidades repetidas de escopos, estados de export reservados, save/reload e rollback de runtime, e pixels de seleção renderizados

TXFAHeadlessPDFResult reporta as contagens reais do grafo nativo e da serialização