Gráficos e imagens nativos automáticos no XFA
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF consome callbacks de draws de retângulos, linhas, arcos e imagens inline diretamente do XDP, junto dos consumers existentes de texto e widgets
Cada draw produz um Form XObject nativo posicionado na página real do layout; draws de imagens contêm Image XObjects reais e soft masks alfa quando necessário
Paths vetoriais
Retângulos usam paths nativos de retângulos PDF, linhas preservam o slope de barra ou barra invertida, e arcos elípticos usam segmentos cúbicos de no máximo 90 graus
O primeiro edge efetivo fornece a cor e espessura de stroke RGB, incluindo larguras abaixo de um ponto; os limites de aparência de strokes incluem metade da espessura, para que o form não clip a própria borda
Arcos consomem startAngle e sweepAngle com sinal, com default de revolução completa e sweep absoluto máximo de 360 graus
Dicas de rotação, escala e translação de draws são aplicadas uma vez num placement afim finito ao redor do centro do draw, com rotação positiva anti-horária; coordenadas XFA de canto superior esquerdo são convertidas uma vez para a origem nativa do PDF
PNG e JPEG
| Formato | Consumo nativo real |
|---|---|
| PNG grayscale | Samples de 1, 2, 4, 8 e 16 bits, com samples empacotados expandidos para 8 bits e a precisão de 16 bits retida |
| PNG RGB | Samples de cor de 8 e 16 bits |
| PNG indexed color | Índices de 1, 2, 4 e 8 bits expandidos pela paleta em samples RGB |
| PNG transparency | Samples transparentes grayscale e RGB, alfa de paleta, e grayscale-alpha e RGBA de 8 ou 16 bits; streams /SMask reais preservam a precisão alfa |
| PNG filtering and interlace | Todos os cinco filters de linhas PNG e passadas Adam7, validados pelas implementações nativas compartilhadas de zlib e predictors |
| JPEG | Frames grayscale, RGB e CMYK baseline e progressivos de 8 bits, validados pelo decoder nativo compartilhado de JPEG antes de preservar o stream /DCTDecode original |
Checksums de chunks PNG, ordenação, dimensões, índices de paletas, faixas de samples transparentes e comprimento exato descomprimido são checados antes de commitar um candidato; dados comprimidos truncados ou em excesso fazem a preparação falhar
As dimensões dos frames JPEG precisam concordar com a decodificação nativa real, e a inversão CMYK da Adobe é declarada explicitamente no dicionário da imagem
JPEG exige o runtime nativo existente TurboJPEG; HOTPDF_TURBOJPEG_LIBRARY pode identificar um caminho absoluto de biblioteca, com bibliotecas dependentes descobertas pelo sistema operacional
O aspecto de imagens suporta fit, none, width, height e actual; densidades pHYs do PNG e JFIF do JPEG determinam o tamanho físico dos pixels, com 96 dpi usado quando não existe densidade utilizável
Imagens escaladas são centralizadas e clipadas ao retângulo do draw XFA; a composição alfa permanece uma operação do reader PDF nativo
Limites e transação
Bytes codificados de imagens, buffers de trabalho decodificados e streams raw de imagens ou alfa são delimitados antes da alocação; os limites nativos de objetos e os limites agregados de streams de imagens e fontes permanecem ativos
O cancelamento é checado ao parsear chunks, inflar dados, decodificar linhas e posicionar objetos nativos; o decoder nativo existente de JPEG recebe o token do chamador
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 do stream do chamador
Fronteiras atuais
Formas preenchidas, estilos de corners, bordas específicas por edge, padrões de dash, barcodes, transporte externo de imagens, widgets imageEdit, formatos alternativos de imagens, profiles de cores embutidos e orientação Exif ainda exigem integração adicional de consumers
PNG animado é consumido como sua imagem estática default; exData de XML estrangeiro permanece uma feature separada, e este adapter de draws não executa objetos embutidos arbitrários
Aceitação
Tests/Linux/Build-XFAHeadlessGraphicFixtures.py produz fixtures determinísticos de row filters, Adam7, precisão de samples, transparência, aspecto físico, JPEG e protocolo malformado
Tests/Linux/XFAHeadlessGraphicsTests.pas grava e reabre PDFs nativos reais e verifica a preservação pelo chamador em falhas; Verify-XFAHeadlessGraphics.py checa de forma independente samples de imagens decodificadas, precisão de /SMask, operadores de vetores, placement e pixels renderizados com pypdf e MuPDF
Criação nativa automática de PDF XFA descreve os consumers existentes de campos e texto e as APIs públicas de opções e resultados