Gráficos e imagens nativos automáticos de XFA

Unidade: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF consome callbacks de desenhos de retângulos, linhas, arcos e imagens inline diretamente de XDP, a par dos consumidores existentes de texto e de widgets

Cada desenho produz um Form XObject nativo colocado na página real do layout; desenhos de imagens contêm Image XObjects reais e soft masks alfa quando necessário

Caminhos vetoriais

Retângulos usam caminhos nativos PDF de retângulos, linhas preservam inclinação de barra ou de barra invertida, e arcos elípticos usam segmentos cúbicos de no máximo 90 graus

A primeira borda efetiva fornece cor e espessura de strokes RGB, incluindo larguras abaixo de um ponto; os bounds de aparências de strokes incluem metade da espessura, para que o form não corte o contorno próprio dele

Arcos consomem startAngle e sweepAngle com sinal, com uma revolução completa por defeito e uma varredura máxima absoluta de 360 graus

Dicas de rotação, escala e translation de draws são aplicadas uma vez num posicionamento afim finito em torno do centro do desenho, com rotação positiva anti-horária; coordenadas XFA de topo-esquerda são convertidas uma vez para a origem nativa PDF

PNG e JPEG

FormatoConsumo nativo real
PNG em tons de cinzentoAmostras de 1, 2, 4, 8 e 16 bits, com amostras empacotadas expandidas para 8 bits e precisão de 16 bits retida
PNG RGBAmostras de cor de 8 e 16 bits
PNG indexadoÍndices de 1, 2, 4 e 8 bits expandidos através da paleta para amostras RGB
Transparência PNGAmostras transparentes em tons de cinzento e RGB, alfa de paletas, e grayscale-alpha e RGBA de 8 ou 16 bits; streams reais de /SMask preservam a precisão alfa
Filtragem e interlaçamento PNGTodos os cinco filtros de linhas PNG e passagens Adam7, validados através das implementações partilhadas nativas de zlib e de preditores
JPEGFrames baseline e progressivos de 8 bits em tons de cinzento, RGB e CMYK, validados com o descodificador nativo partilhado de JPEG antes de preservar a stream original de /DCTDecode

Somtas de verificação de chunks PNG, ordenação, dimensões, índices de paletas, intervalos transparentes de amostras e comprimento exato descomprimido são verificados antes de confirmar um candidato; dados comprimidos truncados ou excessivos fazem falhar a preparação

As dimensões de frames JPEG têm de concordar com a descodificação nativa real, e a inversão CMYK Adobe é declarada explicitamente no dicionário de imagens

JPEG exige o runtime nativo existente TurboJPEG; HOTPDF_TURBOJPEG_LIBRARY pode identificar um caminho absoluto de bibliotecas, com bibliotecas dependentes descobertas pelo sistema operativo

A proporção de imagens suporta fit, none, width, height e actual; pHYs de PNGs e densidade JFIF de JPEGs determinam o tamanho físico de píxeis, com 96 dpi usado quando não há densidade utilizável

Imagens dimensionadas são centradas e cortadas ao retângulo de draws XFA; a composição alfa permanece uma operação de leitores PDF nativos

Limites e transações

Bytes codificados de imagens, buffers de trabalho descodificados e streams brutas de imagens ou de alfa são delimitados antes da alocação; os limites nativos de objetos e os limites agregados de streams de imagens e de tipos de letra permanecem ativos

O cancelamento é verificado enquanto se analisam chunks, se expandem dados, se descodificam linhas e se posicionam objetos nativos; o descodificador nativo existente de JPEGs recebe o token de quem chama

Falhas de preparação preservam posição, comprimento e bytes do destino; o WriteBuffer final no destino segue a semântica própria de I/O da stream de quem chama

Fronteiras atuais

Formas preenchidas, estilos de cantos, bordas específicas por borda, padrões de traços, códigos de barras, transport externo de imagens, widgets imageEdit, formatos alternativos de imagens, perfis de cores incorporados e orientação Exif ainda exigem mais integração de consumidores

PNG animado é consumido como a imagem estática default dele; exData XML estrangeiro continua a ser uma funcionalidade separada, e este adaptador de draws não executa objetos incorporados arbitrários

Aceitação

Tests/Linux/Build-XFAHeadlessGraphicFixtures.py produz fixtures determinísticas de filtros de linhas, Adam7, precisão de amostras, transparência, proporção física, JPEG e protocolos malformados

Tests/Linux/XFAHeadlessGraphicsTests.pas grava e reabre PDFs nativos reais e verifica a preservação de quem chama em falhas; Verify-XFAHeadlessGraphics.py verifica de forma independente amostras descodificadas de imagens, precisão de /SMask, operadores vetoriais, posicionamento e píxeis renderizados com pypdf e MuPDF

A criação nativa automática de PDFs XFA descreve os consumidores existentes de campos e de texto e as APIs públicas de opções e de resultados