Creación nativa automática de PDFs XFA

Unit: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF crea un PDF nativo fresco directamente desde bytes XDP y una fuente TrueType suministrada por la aplicación, sin un PDF de entrada ni slots de campos preparados

El adapter consume los callbacks existentes de binding XFA, instancias repetidas y layout de paginación, y construye grafos nativos de objetos de páginas y AcroForm con streams de apariencias de fuentes realmente embebidas

Se consumen los campos de texto, numéricos, de fecha y de contraseña, los push buttons, las opciones combo y list, los grupos checkbox y radio, el texto estático y los draws de rectangle, line, arc e imágenes inline PNG o JPEG; las firmas y consumidores de draw adicionales requieren más integración del adapter

La creación de choices y booleanos preserva valores de display y export separados, el comportamiento editable y multi-select, los estados nativos de apariencia y los grupos radio repetidos independientes

Los estilos booleanos y captions consumen marcadores vectoriales reales, size, colores y grosor de outline, regiones de captions Unicode y terceros estados de checkbox

Los gráficos e imágenes nativas consumen vector paths reales, formatos de muestras PNG y transparencia, JPEG baseline o progressive, aspecto físico y colocación afín

Las contraseñas usan una apariencia enmascarada mientras retienen el valor nativo del campo; el Editable de todo el documento y el acceso readOnly efectivo de XFA determinan los flags nativos de campos

Las coordenadas de punto XFA usan un origen arriba a la izquierda y se convierten una vez en rectángulos nativos de widgets y traslaciones de draw; las ocurrencias repetidas separadas reciben nombres nativos de campos distintos del layout engine

Los recursos nativos /AP, /DR y /DA se generan con la fuente suministrada y el size, color y alineación efectivos; la face suministrada se usa para cada campo, así que la selección de typeface y las múltiples faces de estilo son responsabilidad de la aplicación en esta etapa

Usa TXFAWidgetRuntime para ejecutar eventos de ciclo de vida o interacción y guardar el XDP resultante antes de la creación cuando el documento requiere esos eventos; las ScriptOptions del adapter controlan el procesamiento de calculate y validate del engine de flatten

Preparación y límites

TXFAHeadlessPDFOptions acota los bytes de XDP y de fuentes, los bytes de salida y objetos, los conteos de objetos y páginas, los campos y las unidades agregadas de glifos UTF-16

Los presupuestos de objetos, páginas y glifos se verifican antes de sus asignaciones correspondientes; las verificaciones de embebido acotan los streams agregados de fuentes e imágenes, los decoders de imágenes acotan sus buffers de trabajo, y la serialización nativa aplica los límites de objetos y de bytes del candidato completo

La cancelación se comprueba a lo largo de la creación del grafo, la generación de apariencias y la serialización; todos los fallos de preparación dejan la posición, longitud y bytes existentes del stream de destino sin cambios

El candidato completo se prepara en memoria antes de una llamada WriteBuffer al destino; los errores de I/O del destino se propagan y pueden dejar escrituras parciales según el comportamiento del stream del llamador

La salida es un documento nuevo sin firmar; preservar el cifrado importado, las firmas existentes y las revisiones de origen pertenece a las APIs nativas de importación de documentos y revisiones

Aceptación

Tests/Linux/XFAHeadlessCreationTests.pas produce documentos reales repetidos, paginados y globalmente de solo lectura, un documento XDP guardado mutado por eventos y un documento de draw Unicode con estilo, sin abrir una UI de lector

Tests/Linux/Verify-XFAHeadlessCreation.py verifica de forma independiente los valores nativos, los flags de campos, la propiedad de páginas, los recursos /AP y de fuentes embebidas con pypdf, y el texto real y los píxeles de apariencias renderizadas con MuPDF

Tests/Linux/XFAHeadlessChoiceTests.pas y Verify-XFAHeadlessChoice.py agregan valores y flags reales de choices, padres radio e identidades de ámbitos repetidos, estados de export reservados, guardado/recarga y rollback en runtime, y píxeles de selección renderizados

TXFAHeadlessPDFResult reporta el grafo nativo real y los conteos de serialización