Creazione automatica di PDF nativi da XFA
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF crea un PDF nativo fresco direttamente dai byte XDP e da un font TrueType fornito dall'applicazione, senza un PDF di input né slot di campo preparati
L'adattatore consuma le callback di layout esistenti di binding XFA, istanze ripetute e paginazione e costruisce grafi di oggetti nativi di pagine e AcroForm con stream di aspetto con font realmente incorporato
Vengono consumati campi text, numeric, date e password, push button, choice combo e list, gruppi checkbox e radio, testo statico, draw rectangle, line, arc e immagini inline PNG o JPEG; firme e ulteriori consumatori di draw richiedono integrazione aggiuntiva dell'adattatore
La creazione di choice e boolean preserva valori separati di display ed export, comportamento editabile e multi-select, stati di aspetto nativi e gruppi radio ripetuti indipendenti
Stili e caption Boolean consumano marker vettoriali reali, dimensione, colori e spessore dell'outline, regioni caption Unicode e terzi stati delle checkbox
Grafica e immagini native consumano tracciati vettoriali reali, formati di campione PNG e trasparenza, JPEG baseline o progressivo, aspetto fisico e posizionamento affine
Le password usano un aspetto mascherato conservando il valore nativo del campo; l'Editable document-wide e l'accesso readOnly XFA effettivo determinano i flag nativi dei campi
Le coordinate in punti XFA usano un'origine in alto a sinistra e vengono convertite una volta in rettangoli nativi dei widget e traslazioni dei draw; le occorrenze ripetute separate ricevono nomi di campo nativi distinti dal layout engine
Le risorse native /AP, /DR e /DA vengono generate con il font fornito e dimensione, colore e allineamento effettivi; la faccia fornita è usata per ogni campo, quindi la selezione del typeface e facce multiple di stile sono responsabilità dell'applicazione in questa fase
Usa TXFAWidgetRuntime per eseguire eventi di lifecycle o interazione e salvare l'XDP risultante prima della creazione quando il documento richiede quegli eventi; le ScriptOptions dell'adattatore controllano l'elaborazione calculate e validate del motore di flatten
Preparazione e limiti
TXFAHeadlessPDFOptions delimita byte XDP e font, byte di output e oggetti, conteggi di oggetti e pagine, campi e unità glifo UTF-16 aggregate
I budget su oggetti, pagine e glifi vengono controllati prima delle allocazioni corrispondenti; i controlli di incorporazione delimitano stream aggregati di font e immagini, i decoder delle immagini delimitano i loro buffer di lavoro, e la serializzazione nativa applica limiti di byte su oggetti e candidato completo
La cancellazione viene controllata durante tutta la creazione del grafo, la generazione degli aspetti e la serializzazione; tutti i fallimenti di preparazione lasciano posizione, lunghezza e byte esistenti dello stream di destinazione invariati
Il candidato completo viene preparato in memoria prima di una singola chiamata WriteBuffer verso la destinazione; gli errori I/O della destinazione si propagano e possono lasciare scritture parziali secondo il comportamento dello stream del chiamante
L'output è un nuovo documento non firmato; preservare crittografia importata, firme esistenti e revisioni della sorgente spetta alle API native di importazione documenti e revisioni
Collaudo
Tests/Linux/XFAHeadlessCreationTests.pas produce documenti reali ripetuti, paginati e read-only globali, un documento saved-XDP mutato da eventi e un documento draw Unicode con stili senza aprire una UI di reader
Tests/Linux/Verify-XFAHeadlessCreation.py verifica in modo indipendente valori nativi, flag dei campi, appartenenza delle pagine, risorse /AP e font incorporati con pypdf, e testo reale e pixel degli aspetti renderizzati con MuPDF
Tests/Linux/XFAHeadlessChoiceTests.pas e Verify-XFAHeadlessChoice.py aggiungono valori e flag choice reali, parent radio e identità di scope ripetuti, stati di export riservati, save/reload e rollback runtime, e pixel di selezione renderizzati
TXFAHeadlessPDFResult riporta i conteggi reali del grafo nativo e della serializzazione