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