Gráficos e imágenes nativas XFA automáticos

Unit: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF consume los callbacks de draw de rectangle, line, arc e inline image directamente del XDP, junto con los consumidores existentes de texto y widgets

Cada draw produce un Form XObject nativo colocado en la página real del layout; los draws de imagen contienen Image XObjects reales y soft masks de alpha cuando se necesitan

Vector paths

Los rectangles usan paths de rectángulo nativos de PDF, las lines preservan la pendiente slash o backslash, y los arcos elípticos usan segmentos cúbicos de como máximo 90 grados

El primer edge efectivo suministra el color de trazo RGB y el grosor, incluidos los anchos subpunto; los bounds de la apariencia del trazo incluyen la mitad del grosor para que el form no recorte su propio borde

Los arcos consumen startAngle y sweepAngle con signo, con una revolución completa por defecto y un barrido absoluto máximo de 360 grados

Las pistas de rotación, escala y traslación del draw se aplican una vez en una colocación afín finita alrededor del centro del draw, con rotación positiva antihoraria; las coordenadas XFA de arriba a la izquierda se convierten una vez al origen nativo del PDF

PNG y JPEG

FormatoConsumo nativo real
PNG escala de grisesMuestras de 1, 2, 4, 8 y 16 bits, con las muestras empaquetadas expandidas a 8 bits y la precisión de 16 bits retenida
PNG RGBMuestras de color de 8 y 16 bits
PNG de color indexadoÍndices de 1, 2, 4 y 8 bits expandidos a través de la paleta en muestras RGB
PNG transparenciaMuestras transparentes de escala de grises y RGB, alpha de paleta, y grayscale-alpha y RGBA de 8 o 16 bits; los streams /SMask reales preservan la precisión de alpha
PNG filtrado e interlaceLos cinco row filters de PNG y los passes Adam7, validados a través de las implementaciones nativas compartidas de zlib y predictors
JPEGFrames grayscale, RGB y CMYK baseline y progressive de 8 bits, validados con el decoder JPEG nativo compartido antes de preservar el stream /DCTDecode original

Los checksums de chunks de PNG, el ordenamiento, las dimensiones, los índices de paleta, los rangos de muestras transparentes y la longitud exacta descomprimida se verifican antes de confirmar un candidato; datos comprimidos truncados o en exceso hacen fallar la preparación

Las dimensiones del frame JPEG deben coincidir con la decodificación nativa real, y la inversión CMYK de Adobe se declara explícitamente en el diccionario de la imagen

JPEG requiere el runtime nativo existente de TurboJPEG; HOTPDF_TURBOJPEG_LIBRARY puede identificar una ruta absoluta de librería, con las librerías dependientes descubribles por el sistema operativo

El aspect de las imágenes soporta fit, none, width, height y actual; el pHYs de PNG y la densidad JFIF de JPEG determinan el tamaño físico del píxel, usando 96 dpi cuando no existe densidad utilizable

Las imágenes escaladas se centran y recortan al rectángulo de draw de XFA; la composición de alpha sigue siendo una operación del lector PDF nativo

Bounds y transacción

Los bytes de imágenes codificadas, los buffers de trabajo decodificados y los streams crudos de imagen o alpha se acotan antes de la asignación; los límites nativos de objetos y los límites agregados de streams de imágenes y fuentes siguen activos

La cancelación se comprueba mientras se parsean chunks, se infla data, se decodifican filas y se colocan objetos nativos; el decoder JPEG nativo existente recibe el token del llamador

Los fallos de preparación preservan la posición, longitud y bytes del destino; el WriteBuffer final del destino sigue la semántica de I/O propia del stream del llamador

Límites actuales

Las figuras rellenas, el estilo de corners, los bordes específicos por edge, los dash patterns, los códigos de barras, el transporte externo de imágenes, los widgets imageEdit, los formatos de imagen alternativos, los perfiles de color embebidos y la orientación Exif todavía requieren integración adicional de consumidores

El PNG animado se consume como su imagen estática por defecto; el exData de XML externo sigue siendo una función separada, y este adapter de draw no ejecuta objetos embebidos arbitrarios

Aceptación

Tests/Linux/Build-XFAHeadlessGraphicFixtures.py produce fixtures deterministas de row filters, Adam7, precisión de muestras, transparencia, aspecto físico, JPEG y protocolos malformados

Tests/Linux/XFAHeadlessGraphicsTests.pas escribe y reabre PDFs nativos reales y verifica la preservación del llamador ante fallos; Verify-XFAHeadlessGraphics.py comprueba de forma independiente las muestras decodificadas de imágenes, la precisión de /SMask, los operadores vectoriales, la colocación y los píxeles renderizados con pypdf y MuPDF

La creación nativa automática de PDFs XFA describe los consumidores existentes de campos y texto y las APIs públicas de opciones y resultados