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
| Formato | Consumo nativo real |
|---|---|
| PNG em tons de cinzento | Amostras de 1, 2, 4, 8 e 16 bits, com amostras empacotadas expandidas para 8 bits e precisão de 16 bits retida |
| PNG RGB | Amostras 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 PNG | Amostras 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 PNG | Todos os cinco filtros de linhas PNG e passagens Adam7, validados através das implementações partilhadas nativas de zlib e de preditores |
| JPEG | Frames 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