|
Registrerer en navngivet XFA (XML Forms Architecture) pakke til emission i dokumentets AcroForm/XFAindgang. PDF 1.7 §12.7.6 + §12.7.8 lader en AcroForm bære et/XFAarray sideløbende med (eller i stedet for) det statiske/Fieldsarray, hvilket muliggør hybride AcroForm + XFA arbejdsgange eller rene dynamiske XFA-formularer
Delphi-syntaks:
procedure AddXFAPacket(const PacketName: AnsiString;const XMLBytes: TBytes);
procedure ClearXFAPackets;
function XFAPacketCount: Integer;
Beskrivelse
Hvert kald tilAddXFAPacketregistrerer én navngivet pakke. Typiske navne (i henhold til XFA 3.3-specifikationen og PDF 1.7 §12.7.8 Tabel 234):
template- formularlayout + scripts (den største pakke i de fleste XFA-dokumenter)
datasets- databinding (den XML-nyttelast, som skabelonen gengives mod)
config- fremviserkonfiguration
connectionSet- eksterne dataforbindelser
localeSet- landespecifikke formateringsregler
stylesheet- XSLT- eller CSS-styling
xfdf- XFDF-formulardata-overlay
xmpmeta- XMP-metadata
signature- signaturrelaterede XFA-data
sourceSet- kildesidedatadefinitioner
At EndDocbliver hver registreret pakke til ét indirekte FlateDecode-komprimeret strømobjekt, og AcroForm/XFAarrayet skifter pakkenavns PDF-strenge med strømreferencer i registreringsrækkefølge, så layoutet er byte-deterministiskClearXFAPacketsfjerner alle registrerede pakker (nyttigt til at genbruge enTHotPDFinstans på tværs af flere dokumenter)XFAPacketCountreturnerer det aktuelle antal
Kun understøttelse på beholderniveau
HotPDF parserernotikke XFA XML, implementerernotikke den dynamiske XFA-layoutmotor, eksekverernotikke FormCalc eller JavaScript i XFA-skabelonen, og validerernotikke skabelonstrukturen. Kalderen skriver selv XFA XML (typisk via Adobe LiveCycle Designer eller manuelt mod XFA 3.3-specifikationen), og HotPDF udsender bytes ordret
Forbrugerlæsere med en XFA-motor (ældre Acrobat / Reader, FormsCentral, visse kioskelementer) gengiver formularen; læsere uden en XFA-motor (Adobe Reader DC fra 2017 og fremefter, de fleste open source-læsere) viser fallback AcroForm-felterne, hvis dokumentet er en hybrid AcroForm + XFA arbejdsgang
Overensstemmelsesporte for PDF/A og PDF/X
ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 tillader alle eksplicit ikke XFA-formularer (den dynamiske layoutmotor kan ikke arkiveres deterministisk). ISO 15930 prepress-arbejdsgange afviser interaktive formularer fuldstændigtAddXFAPacketrejser med det samme under enhver ikke-tomPDFACompliance or PDFXCompliancemed den relevante spec-reference. Dublerede pakkenavne rejser. TomPacketNameeller tomXMLBytes raiseRequirePDFVersion(pdf15)auto-bumps dokumentversionen
AcroForm-ordbogsemission
AcroForm-ordbogen udsendes, nåreither /Fieldshar mindst én indgangormindst én XFA-pakke er blevet registreret. Kaldere før v2.119.51, der ikke registrerer nogen pakker, beholder byte-identisk/AcroForm output
Typisk arbejdsgang (ren dynamisk XFA-formular)
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); { kalder-genereret XAdES }
PDF.AddXFAPacket('/xdp:xdp', BytesOf('</xdp:xdp>'));
PDF.EndDoc;
XDP-indpakning, enkelt-strøm, dynamisk og signeret XFA
Arrayet/XFAform skal åbne og lukke medxdp:xdpindpakningspakker, som eksemplet nu viser (ISO 32000-1 §12.7.8). Relaterede XFA-API'er:SetXFADocumentskriver hele XFA/XDP-dokumentet som en enkelt/XFAstrøm, gensidigt udelukkende medAddXFAPacket; XFANeedsRenderingindstiller Catalog/NeedsRenderingflaget (ISO 32000-1 §7.7.2), så en fremviser regenererer en dynamisk XFA-formular ved første åbning;AddXFASignaturePacketindlejrer en kalder-genereret XAdES / XML-DSig-signatur somsignaturepakken. HotPDF genererer eller parser aldrig signaturen - kalderen producerer den med et XML-kryptografisk bibliotek over XFA-datasættene
XFA-til-AcroForm fladgøring
ApplyXFAAsAcroFormkortlægger kalder-leverede XDP/XFA-bytes på den aktuelle side som indfødte AcroForm-widgets og simpel sidegrafikFlattenLoadedXFAudfører samme konvertering for en indlæst PDF, der allerede bærer en indlejret/XFApakke. OverførEditable=Falsefor at gøre genererede widgets skrivebeskyttede, og inspicerXFAFlattenWarningsfor elementer, der ikke kunne kortlægges
Se også: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField
|