|
THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount THotPDF XFA forms container (v2.119.51)
|
RegisterAcroFormFont AcroForm Support |
|
Registruoja vardinį XFA (XML Forms Architecture) paketą dokumento AcroForm
Delphi syntax: procedure AddXFAPacket(const PacketName: AnsiString; const XMLBytes: TBytes); procedure ClearXFAPackets; function XFAPacketCount: Integer;
Aprašas Kiekvienas AddXFAPacket kvietimas registruoja vieną pavadintą paketą. Tipiniai pavadinimai (pagal XFA 3.3 specifikaciją ir PDF 1.7 §12.7.8 234 lentelę):
Container-level support only HotPDF ne analizuoja XFA XML, ne įgyvendina XFA dinaminio išdėstymo variklį, ne vykdo FormCalc ar JavaScript iš XFA šablono, ir ne tikrina šablono struktūrą. Kūrėjas pats pateikia XFA XML (dažniausiai per Adobe LiveCycle Designer arba rankiniu būdu pagal XFA 3.3 specifikaciją) ir HotPDF įrašo baitus nepakitus
Vartotojo skaitytuvai su XFA varikliu (senesni Acrobat / Reader, FormsCentral, kai kurie kiosk produktai) pateikia formą; skaitytuvai be XFA variklio (Adobe Reader DC nuo 2017 m., dauguma atviro kodo skaitytuvų) rodo atsarginį AcroForm laukų vaizdą, jei dokumentas yra hibridinis AcroForm + XFA darbas
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 aiškiai neleidžia XFA formas, nes dinaminio išdėstymo variklis nėra nuosekliai archyvuojamas. ISO 15930 prepress procesai visiškai atmeta interaktyvius formas.
AcroForm dictionary emission AcroForm dict išvedamas tada, kai arba /Fields turi bent vieną įrašą, arba yra registruotas bent vienas XFA paketas. Iki v2.119.51 paketų neregistruojantys kūrėjai išsaugo baitais identišką /AcroForm išvestį
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
XFA-to-AcroForm flattening ApplyXFAAsAcroForm susieja kviestinės pusės pateiktus XDP/XFA baitus su dabartiniu puslapiu kaip natūralius AcroForm widgetus ir paprastą puslapio grafiką. FlattenLoadedXFA atlieka tą pačią konversiją įkeltam PDF, kuris jau turi įterptą /XFA paketą. Paduokite Editable=False, kad sugeneruoti widgetai būtų tik skaitymui, ir tikrinkite XFAFlattenWarnings elementams, kurių nepavyko susieti
See also: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField |