THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount

THotPDF XFA forms container (v2.119.51)

 

RegisterAcroFormFont  AcroForm Support

Registruje imenovani XFA (XML Forms Architecture) paket za emitovanje unutar AcroForm /XFA unosa dokumenta PDF 1.7 §12.7.6 + §12.7.8 dozvoljava da AcroForm nosi /XFA niz zajedno sa statičkim /Fields nizom ili umesto njega, što omogućava hibridne AcroForm + XFA tokove rada ili čisto dinamičke XFA forme

 

Delphi syntax:

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

procedure ClearXFAPackets;

function XFAPacketCount: Integer;

 

Opis

Svaki poziv AddXFAPacket registruje jedan imenovani paket. Tipična imena (prema XFA 3.3 specifikaciji i PDF 1.7 §12.7.8 Tabela 234):

 

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.

 

Pri EndDoc svaki registrovani paket postaje jedan indirektni FlateDecode-komprimovani stream objekat, a AcroForm /XFA niz naizmenično upisuje PDF stringove imena paketa i reference na tokove u redosledu registracije, tako da je raspored byte-deterministic ClearXFAPackets uklanja sve registrovane pakete (korisno pri ponovnoj upotrebi THotPDF instance kroz više dokumenata) XFAPacketCount vraća trenutni broj

 

Container-level support only

HotPDF ne parsira XFA XML, ne implementira XFA dynamic-layout engine, ne izvršava FormCalc ili JavaScript unutar XFA šablona i ne validira strukturu šablona Pozivalac sam izrađuje XFA XML (obično preko Adobe LiveCycle Designer-a ili ručnim pisanjem prema XFA 3.3 specifikaciji) i HotPDF emituje bajtove verbatim

 

Čitači sa XFA engine-om (stariji Acrobat / Reader, FormsCentral, neki kiosk proizvodi) prikazuju formu; čitači bez XFA engine-a (Adobe Reader DC od 2017 nadalje, većina open-source čitača) prikazuju rezervna AcroForm polja ako je dokument hibridni AcroForm + XFA tok rada

 

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 izričito zabranjuju XFA forme (dynamic-layout engine nije deterministički arhivski). ISO 15930 prepress tokovi rada u potpunosti odbacuju interaktivne forme. AddXFAPacket odmah prijavljuje izuzetak pod bilo kojim nenultim PDFACompliance ili PDFXCompliance uz odgovarajuću referencu specifikacije. Duplikat imena paketa prijavljuje izuzetak. Prazan PacketName ili prazan XMLBytes prijavljuje izuzetak. RequirePDFVersion(pdf15) automatski podiže verziju dokumenta

 

AcroForm dictionary emission

AcroForm dict se ispisuje kada /Fields ima bar jedan unos ili kada je registrovan bar jedan XFA paket. Pozivaoci pre v2.119.51 koji ne registruju nijedan paket zadržavaju byte-identičan /AcroForm izlaz

 

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

Niz /XFA obrasca mora da se otvara i zatvara sa xdp:xdp wrapper paketima, kao što primer sada pokazuje (ISO 32000-1 §12.7.8). Povezani XFA API-ji: SetXFADocument upisuje ceo XFA/XDP dokument kao jedan /XFA tok, uzajamno isključiv sa AddXFAPacket; XFANeedsRendering postavlja Catalog /NeedsRendering zastavicu (ISO 32000-1 §7.7.2) tako da čitač regeneriše dinamički XFA obrazac pri prvom otvaranju; AddXFASignaturePacket ugrađuje XAdES / XML-DSig potpis koji je kreirao pozivalac kao paket potpisa. HotPDF nikada ne generiše niti parsira potpis - pozivalac ga proizvodi pomoću XML kriptografske biblioteke nad XFA skupovima podataka

 

XFA-to-AcroForm flattening

ApplyXFAAsAcroForm mapira XDP/XFA bajtove koje je prosledio pozivalac na trenutnu stranicu kao nativne AcroForm widgete i jednostavnu grafiku stranice. FlattenLoadedXFA vrši istu konverziju za učitani PDF koji već nosi ugrađeni /XFA paket. Prosledite Editable=False da bi generisani widgeti bili samo za čitanje, i pregledajte XFAFlattenWarnings za elemente koji nisu mogli da budu mapirani

 

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