Criação nativa automática de PDFs XFA
Unidade: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF cria um PDF nativo fresco diretamente a partir de bytes XDP e um tipo de letra TrueType fornecido pela aplicação, sem PDF de entrada nem slots preparados de campos
O adaptador consome os callbacks existentes de layout de bindings XFA, de instâncias repetidas e de paginação e constrói grafos nativos de objetos de páginas e de AcroForms com streams reais de aparências de tipos de letra incorporados
Campos de texto, numéricos, de datas e de palavras-passe, push buttons, escolhas de combos e de listas, grupos de checkboxes e radios, texto estático e desenhos de retângulos, linhas, arcos e imagens inline PNG ou JPEG são consumidos; assinaturas e consumidores adicionais de draws exigem mais integração de adaptadores
A criação de escolhas e Booleanos preserva valores separados de apresentação e exportação, comportamento editável e multiseleção, estados nativos de aparências e grupos independentes repetidos de radios
Os estilos e captions Booleanos consomem marcadores vetoriais reais, tamanho, cores e espessuras de contornos, regiões Unicode de captions e terceiros estados de checkboxes
Os gráficos e imagens nativos consomem caminhos vetoriais reais, formatos de amostras PNG e transparências, JPEG baseline ou progressivo, proporção física e posicionamento afim
Palavras-passe usam uma aparência mascarada mantendo o valor nativo do campo; Editable de documentos inteiros e o acesso efetivo readOnly de XFA determinam as flags nativas de campos
Coordenadas de pontos XFA usam uma origem superior esquerda e são convertidas uma vez em retângulos nativos de widgets e translations de desenhos; ocorrências repetidas separadas recebem nomes nativos distintos de campos do motor de layout
Recursos nativos /AP, /DR e /DA são gerados com o tipo de letra fornecido e tamanho, cor e alinhamento efetivos; a face fornecida é usada para todos os campos, pelo que a seleção de typefaces e múltiplas faces de estilos são responsabilidades de aplicações neste estádio
Use TXFAWidgetRuntime para executar eventos de ciclo de vida ou de interação e gravar o XDP resultante antes da criação quando o documento exigir esses eventos; as ScriptOptions do adaptador controlam o processamento calculate e validate do motor de flatten
Preparação e limites
TXFAHeadlessPDFOptions delimita bytes XDP e de tipos de letra, bytes de saída e de objetos, contagens de objetos e de páginas, campos e unidades agregadas de glyphs UTF-16
Orçamentos de objetos, páginas e glyphs são verificados antes das alocações correspondentes deles; verificações de embedding delimitam streams agregadas de tipos de letra e de imagens, descodificadores de imagens delimitam os buffers de trabalho deles, e a serialização nativa impõe limites de objetos e de bytes candidatos completos
O cancelamento é verificado ao longo da criação de grafos, da geração de aparências e da serialização; todas as falhas de preparação deixam a posição, o comprimento e os bytes existentes da stream de destino inalterados
O candidato completo é preparado em memória antes de uma chamada única de WriteBuffer ao destino; erros de I/O no destino propagam-se e podem deixar escritas parciais de acordo com o comportamento da stream de quem chama
A saída é um documento novo não assinado; preservar encriptação importada, assinaturas existentes e revisões de fontes pertence às APIs nativas de importação e de revisões de documentos
Aceitação
Tests/Linux/XFAHeadlessCreationTests.pas produz documentos reais repetidos, paginados e globalmente só de leitura, um documento de XDP guardado mutado por eventos e um documento de draws Unicode com estilo sem abrir UI de leitores
Tests/Linux/Verify-XFAHeadlessCreation.py verifica de forma independente valores nativos, flags de campos, propriedade de páginas, recursos /AP e de tipos de letra incorporados com pypdf, e texto real e píxeis renderizados de aparências com MuPDF
Tests/Linux/XFAHeadlessChoiceTests.pas e Verify-XFAHeadlessChoice.py acrescentam valores e flags reais de escolhas, pais de radios e identidades de âmbitos repetidos, estados reservados de exportações, gravação/recarregamento e rollback de runtimes, e píxeis renderizados de seleções
TXFAHeadlessPDFResult reporta as contagens reais nativas de grafos e de serializações