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

FormatoConsumo nativo real
PNG grayscaleSamples de 1, 2, 4, 8 e 16 bits, com samples empacotados expandidos para 8 bits e a precisão de 16 bits retida
PNG RGBSamples 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 transparencySamples 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 interlaceTodos os cinco filters de linhas PNG e passadas Adam7, validados pelas implementações nativas compartilhadas de zlib e predictors
JPEGFrames 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