THotPDF.AddXFAPacket Metodo (XFA forms container) THotPDF.AddXFAPacket Metodo (XFA forms container) THotPDF.AddXFAPacket Metodo (XFA forms container) THotPDF.AddXFAPacket Metodo (XFA forms container) THotPDF.AddXFAPacket Metodo (XFA forms container) THotPDF.AddXFAPacket Metodo (XFA forms container)

 

THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount

THotPDF XFA forms container (v2.119.51)

 

RegisterAcroFormFont  Supporto AcroForm

Registers a named XFA (XML Forms Architecture) packet for emission inside the document's AcroForm /XFA . PDF 1.7 §12.7.6 + §12.7.8 consente a un AcroForm di portare un /XFA array alongside (or instead of) the static /Fields , abilitando flussi ibridi AcroForm + XFA o moduli XFA puramente dinamici.

 

Sintassi Delphi:

procedure AddXFAPacket(const PacketName: AnsiString; const XMLBytes: TBytes);

procedure ClearXFAPackets;

function XFAPacketCount: Integer;

 

Descrizione

Ogni chiamata a AddXFAPacket registers one named packet. Typical names (per the XFA 3.3 specification and PDF 1.7 §12.7.8 Table 234):

 

template - form layout + scripts (the largest packet in most XFA documents).

datasets - data binding (the XML payload the template renders against).

config - configurazione del viewer.

connectionSet - connessioni dati esterne.

localeSet - regole di formattazione specifiche per locale.

stylesheet - stile XSLT o CSS.

xfdf - overlay di dati formulario XFDF.

xmpmeta - metadati XMP.

signature - dati XFA relativi alle firme.

sourceSet - definizioni dati lato sorgente.

 

At EndDoc ogni pacchetto registrato diventa un oggetto stream indiretto compresso FlateDecode, e l'AcroForm /XFA alterna stringhe PDF di nomi di pacchetto a riferimenti a stream in ordine di registrazione, così il layout è deterministico al byte. ClearXFAPackets removes all registered packets (useful for reusing a THotPDF tra più documenti). XFAPacketCount restituisce il conteggio corrente.

 

Solo supporto a livello di contenitore

HotPDF non analizza l'XML XFA, fa non implementino il motore di layout dinamico XFA, fa non eseguano FormCalc o JavaScript nel template XFA, e fa non validate template structure. The caller authors the XFA XML themselves (typically via Adobe LiveCycle Designer or hand-rolling against the XFA 3.3 specification) and HotPDF emits the bytes verbatim.

 

Consumer readers with an XFA engine (older Acrobat / Reader, FormsCentral, some kiosk products) render the form; readers without an XFA engine (Adobe Reader DC from 2017 onward, most open-source readers) display the fallback AcroForm fields if the document is a hybrid AcroForm + XFA workflow.

 

cancelli di conformità PDF/A e PDF/X

ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 vietano esplicitamente tutti i moduli XFA (il motore di layout dinamico non è archiviabile in modo deterministico). I flussi prepress ISO 15930 rifiutano del tutto i moduli interattivi. AddXFAPacket solleva immediatamente con qualsiasi non vuoto PDFACompliance oppure PDFXCompliance with the relevant spec reference. Duplicate packet names raise. Empty PacketName o vuoto XMLBytes sollevare. RequirePDFVersion(pdf15) alza automaticamente la versione del documento.

 

Emissione del dizionario AcroForm

Il dizionario AcroForm viene emesso quando either /Fields ha almeno una voce oppure almeno un pacchetto XFA è stato registrato. I chiamanti precedenti alla v2.119.51 che non registrano pacchetti mantengono identico al byte /AcroForm output.

 

Typical workflow (pure XFA dynamic form)

 

PDF.BeginDoc;

TemplateBytes := TFile.ReadAllBytes('form-template.xml');

DataBytes := TFile.ReadAllBytes('form-data.xml');

PDF.AddXFAPacket('xdp:xdp', BytesOf(''));

PDF.AddXFAPacket('template', TemplateBytes);

PDF.AddXFAPacket('datasets', DataBytes);

PDF.AddXFASignaturePacket(SigBytes); { caller-generated XAdES }

PDF.AddXFAPacket('/xdp:xdp', BytesOf(''));

PDF.EndDoc;

 

wrapper XDP, single-stream, XFA dinamica e firmata

L'array /XFA deve aprirsi e chiudersi con xdp:xdp wrapper packets, as the example now shows (ISO 32000-1 §12.7.8). Related XFA APIs: SetXFADocument scrive l'intero documento XFA/XDP come un singolo /XFA stream, mutualmente esclusivo con AddXFAPacket; XFANeedsRendering imposta nel Catalog la /NeedsRendering flag (ISO 32000-1 §7.7.2) so a viewer regenerates a dynamic XFA form on first open; AddXFASignaturePacket incorpora una firma XAdES / XML-DSig generata dal chiamante come signature . HotPDF non genera né analizza mai la firma - il chiamante la produce con una libreria crittografica XML sui dataset XFA.

 

appiattimento XFA-to-AcroForm

ApplyXFAAsAcroForm mappa i byte XDP/XFA forniti dal chiamante sulla pagina corrente come widget AcroForm nativi e semplici grafiche di pagina. FlattenLoadedXFA esegue la stessa conversione per un PDF caricato che porta già un /XFA . Passa Editable=False to make generated widgets read-only, and inspect XFAFlattenWarnings for elements that could not be mapped.

 

Vedi anche: Supporto AcroForm, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField