THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount

THotPDF XFA forms container (v2.119.51)

 

RegisterAcroFormFont  AcroForm Support

Registrira imenovani XFA (XML Forms Architecture) paket za emitiranje unutar dokumentova AcroForm /XFA unosa. PDF 1.7 §12.7.6 + §12.7.8 dopušta da AcroForm nosi /XFA polje uz statičko /Fields polje ili umjesto njega, što omogućuje hibridne AcroForm + XFA tijekove rada ili čisto dinamičke XFA obrasce

 

Delphi syntax:

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

procedure ClearXFAPackets;

function XFAPacketCount: Integer;

 

Opis

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

 

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

datasets - povezivanje podataka (XML korisni teret prema kojem se predložak prikazuje)

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.

 

Na EndDoc svaki registrirani paket postaje jedan neizravni FlateDecode komprimirani objekt toka, a AcroForm /XFA polje naizmjenično sadrži PDF nizove imena paketa i reference na tokove u redoslijedu registracije, pa je raspored bajtno determinističan. ClearXFAPackets uklanja sve registrirane pakete (korisno pri ponovnoj uporabi instance THotPDF kroz više dokumenata). XFAPacketCount vraća trenutačni broj

 

Container-level support only

HotPDF ne parsira XFA XML, ne implementira XFA dinamički layout engine, ne izvršava FormCalc ili JavaScript unutar XFA predloška i ne provjerava strukturu predloška. Pozivatelj sam izrađuje XFA XML (najčešće putem Adobe LiveCycle Designera ili ručno prema specifikaciji XFA 3.3), a HotPDF emitira bajtove doslovno

 

Korisnički čitači s XFA engineom (stariji Acrobat / Reader, FormsCentral, neki kiosk proizvodi) prikazuju obrazac; čitači bez XFA enginea (Adobe Reader DC od 2017. nadalje, većina open-source čitača) prikazuju rezervna AcroForm polja ako je dokument hibridni AcroForm + XFA tijek 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 obrasce (dinamički layout engine nije deterministički arhivabilan). ISO 15930 prepress tijekovi rada potpuno odbacuju interaktivne obrasce. AddXFAPacket odmah podiže iznimku pri bilo kojem ne-praznom PDFACompliance ili PDFXCompliance s odgovarajućom referencom specifikacije. Duplicirana imena paketa podižu iznimku. Prazan PacketName ili prazan XMLBytes podižu iznimku. RequirePDFVersion(pdf15) automatski podiže verziju dokumenta

 

AcroForm dictionary emission

AcroForm dict emitira se kada ili /Fields ima barem jedan unos ili je registriran barem jedan XFA paket Pozivatelji prije v2.119.51 koji ne registriraju pakete 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 omotač, single-stream, dinamički i potpisani XFA

Obrazac niza /XFA mora se otvarati i zatvarati xdp:xdp wrapper paketima, kao što primjer sada pokazuje (ISO 32000-1 §12.7.8) Povezani XFA API-jevi: SetXFADocument zapisuje cijeli XFA/XDP dokument kao jedan /XFA stream, međusobno isključiv s AddXFAPacket; XFANeedsRendering postavlja Catalog zastavicu /NeedsRendering (ISO 32000-1 §7.7.2) tako da preglednik regenerira dinamički XFA obrazac pri prvom otvaranju; AddXFASignaturePacket ugrađuje XAdES / XML-DSig potpis koji je izradio pozivatelj kao signature paket HotPDF nikada ne generira niti parsira potpis - pozivatelj ga proizvodi XML kriptografskom bibliotekom nad XFA skupovima podataka

 

XFA-to-AcroForm flattening

ApplyXFAAsAcroForm preslikava XDP/XFA bajtove koje je dostavio pozivatelj na trenutačnu stranicu kao nativne AcroForm widgete i jednostavnu grafiku stranice. FlattenLoadedXFA izvodi istu pretvorbu za učitani PDF koji već nosi ugrađeni /XFA paket. Proslijedite Editable=False kako bi generirani widgeti bili samo za čitanje i provjerite XFAFlattenWarnings za elemente koje nije bilo moguće preslikati

 

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