THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount

THotPDF XFA forms container (v2.119.51)

 

RegisterAcroFormFont  AcroForm Support

Registrira poimenovani paket XFA (XML Forms Architecture) za izpis znotraj vnosa AcroForm /XFA v dokumentu. PDF 1.7 §12.7.6 + §12.7.8 omogoča, da AcroForm nosi polje /XFA poleg (ali namesto) statičnega polja /Fields, kar omogoča hibridne poteke AcroForm + XFA ali čiste dinamične obrazce XFA

 

Delphi syntax:

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

procedure ClearXFAPackets;

function XFAPacketCount: Integer;

 

Description

Vsak klic AddXFAPacket registrira en poimenovan paket. Tipična imena (po specifikaciji XFA 3.3 in tabeli 234 v PDF 1.7 §12.7.8):

 

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

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

config - viewer configuration.

connectionSet - external data connections.

localeSet - locale-specific formatting rules.

stylesheet - XSLT or CSS styling.

xfdf - XFDF form data overlay.

xmpmeta - XMP metadata.

signature - signature-related XFA data.

sourceSet - source-side data definitions.

 

Ob EndDoc vsak registrirani paket postane en posredni tok, stisnjen s FlateDecode, in polje AcroForm /XFA izmenično zapisuje imena paketov kot PDF nize ter sklice na tokove v vrstnem redu registracije, zato je postavitev bitno deterministična. ClearXFAPackets odstrani vse registrirane pakete (uporabno, kadar isti primerek THotPDF uporabljate za več dokumentov). XFAPacketCount vrne trenutno število

 

Container-level support only

HotPDF ne razčlenjuje XFA XML, ne implementira dinamičnega postavitvenega mehanizma XFA, ne izvaja FormCalc ali JavaScript znotraj predloge XFA in ne preverja strukture predloge. Klicatelj XFA XML pripravi sam (običajno z Adobe LiveCycle Designerjem ali ročnim pisanjem glede na specifikacijo XFA 3.3), HotPDF pa bajte izpiše nespremenjene

 

Bralniki potrošniki z mehanizmom XFA (starejši Acrobat / Reader, FormsCentral, nekateri kiosk izdelki) obrazec izrišejo; bralniki brez mehanizma XFA (Adobe Reader DC od leta 2017 naprej, večina odprtokodnih bralnikov) prikažejo rezervna polja AcroForm, če je dokument hibridni potek AcroForm + XFA

 

PDF/A and PDF/X compliance gates

ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 izrecno prepovedujejo obrazce XFA (dynamični mehanizem postavitve ni deterministično arhivirljiv). Poteki dela ISO 15930 za predpripravo zavrnejo interaktivne obrazce v celoti. AddXFAPacket ob kateri koli neprazni PDFACompliance ali PDFXCompliance skupaj z ustreznim sklicem na specifikacijo sproži takojšnji napaka. Podvojena imena paketov sprožijo napako. Prazno PacketName ali prazni XMLBytes sprožijo napako. RequirePDFVersion(pdf15) samodejno poviša različico dokumenta

 

AcroForm dictionary emission

Slovar AcroForm se izpiše, kadar ima ali /Fields vsaj en vnos ali pa je registriran vsaj en paket XFA. Klicatelji pred v2.119.51, ki ne registrirajo paketov, ohranijo bajtno identičen izhod /AcroForm

 

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('<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">'));

PDF.AddXFAPacket('template', TemplateBytes);

PDF.AddXFAPacket('datasets', DataBytes);

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

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

PDF.EndDoc;

 

XDP wrapper, single-stream, dynamic, and signed XFA

Polje /XFA se mora odpreti in zapreti z ovojnimi paketi xdp:xdp, kot kaže zgled (ISO 32000-1 §12.7.8). Sorodni XFA API-ji: SetXFADocument zapiše celoten dokument XFA/XDP kot en sam tok /XFA, kar je medsebojno izključeno z AddXFAPacket; XFANeedsRendering nastavi zastavico Catalog /NeedsRendering (ISO 32000-1 §7.7.2), da pregledovalnik ob prvem odpiranju znova ustvari dinamičen obrazec XFA; AddXFASignaturePacket vgradi podpis XAdES / XML-DSig, ki ga ustvari klicatelj, kot paket signature. HotPDF podpisa nikoli ne ustvari ali razčleni - klicatelj ga izdela z XML kriptografsko knjižnico nad nizi podatkov XFA

 

XFA-to-AcroForm flattening

ApplyXFAAsAcroForm preslika XDP/XFA bajte, ki jih poda klicatelj, na trenutno stran kot izvorne gradnike AcroForm in preprosto grafiko strani. FlattenLoadedXFA izvede isto pretvorbo za naložen PDF, ki že vsebuje vdelani paket /XFA. Pass Editable=False, da so ustvarjeni gradniki samo za branje, in XFAFlattenWarnings preglejte za elemente, ki jih ni bilo mogoče preslikati

 

See also: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField