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
| Formato | Consumo nativo real |
|---|---|
| PNG escala de grises | Muestras 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 RGB | Muestras 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 transparencia | Muestras 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 interlace | Los cinco row filters de PNG y los passes Adam7, validados a través de las implementaciones nativas compartidas de zlib y predictors |
| JPEG | Frames 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