THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount

THotPDF XFA forms container (v2.119.51)

 

RegisterAcroFormFont  AcroForm-støtte

Registrerer en navngitt XFA-pakke (XML Forms Architecture) for utsending i dokumentets AcroForm /XFA-oppføring. PDF 1.7 §12.7.6 + §12.7.8 lar en AcroForm bære en /XFA-tabell ved siden av, eller i stedet for, den statiske /Fields-tabellen, noe som muliggjør hybride AcroForm + XFA-arbeidsflyter eller rene dynamiske XFA-skjemaer

 

Delphi-syntaks:

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

procedure ClearXFAPackets;

function XFAPacketCount: Integer;

 

Beskrivelse

Hvert kall til AddXFAPacket registrerer én navngitt pakke. Typiske navn, i henhold til XFA 3.3-spesifikasjonen og PDF 1.7 §12.7.8 tabell 234:

 

template - skjemautforming + skript, den største pakken i de fleste XFA-dokumenter

datasets - databinding, altså XML-lastene malen rendrer mot

config - viserkonfigurasjon

connectionSet - eksterne datatilkoblinger

localeSet - lokalspesifikke formateringsregler

stylesheet - XSLT- eller CSS-styling

xfdf - overlegg for XFDF-skjemadata

xmpmeta - XMP-metadata

signature - signaturrelaterte XFA-data

sourceSet - datadefinisjoner på kildesiden

 

Ved EndDoc blir hver registrerte pakke til ett indirekte FlateDecode-komprimert strømobjekt, og AcroForm /XFA-tabellen veksler mellom PDF-strenger for pakkenavn og strømreferanser i registreringsrekkefølge, slik at oppsettet blir byte-deterministisk. ClearXFAPackets fjerner alle registrerte pakker, nyttig når en THotPDF-instans skal gjenbrukes på tvers av flere dokumenter. XFAPacketCount returnerer gjeldende antall

 

Kun støtte på beholdernivå

HotPDF parser ikke XFA-XML, implementerer ikke XFA-motoren for dynamisk oppsett, kjører ikke FormCalc eller JavaScript inne i XFA-malen og validerer ikke malstrukturen. Kalleren forfatter XFA-XML selv, vanligvis via Adobe LiveCycle Designer eller ved å bygge det manuelt mot XFA 3.3-spesifikasjonen, og HotPDF sender bytene uendret

 

Lesere med en XFA-motor, som eldre Acrobat / Reader, FormsCentral og enkelte kioskprodukter, rendrer skjemaet; lesere uten XFA-motor, som Adobe Reader DC fra 2017 og fremover og de fleste åpen kilde-lesere, viser de reservefeltene fra AcroForm hvis dokumentet er en hybrid AcroForm + XFA-arbeidsflyt

 

Samsvarskontroller for PDF/A og PDF/X

ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 forbyr uttrykkelig XFA-skjemaer, siden motoren for dynamisk oppsett ikke kan arkiveres deterministisk. ISO 15930-forhåndstrykk-arbeidsflyter avviser interaktive skjemaer fullstendig. AddXFAPacket utløser straks ved enhver ikke-tom PDFACompliance eller PDFXCompliance med relevant spesifikasjonsreferanse. Dupliserte pakkenavn utløser feil. Tom PacketName eller tom XMLBytes utløser feil. RequirePDFVersion(pdf15) hever dokumentversjonen automatisk

 

Utsending av AcroForm-ordboken

AcroForm-ordboken sendes ut når enten /Fields har minst én oppføring eller minst én XFA-pakke er registrert. Kallere før v2.119.51 som ikke registrerer noen pakker beholder byte-identisk /AcroForm-utdata

 

Typisk arbeidsflyt, rent dynamisk XFA-skjema

 

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-innpakning, énstrøms-, dynamisk og signert XFA

Arrayformen /XFA må åpne og lukke med innpakningspakkene xdp:xdp, slik eksemplet nå viser, i henhold til ISO 32000-1 §12.7.8. Relaterte XFA-API-er: SetXFADocument skriver hele XFA/XDP-dokumentet som én /XFA-strøm, gjensidig utelukkende med AddXFAPacket; XFANeedsRendering setter katalogflagget /NeedsRendering i ISO 32000-1 §7.7.2 slik at en visning regenererer et dynamisk XFA-skjema ved første åpning; AddXFASignaturePacket bygger inn en XAdES / XML-DSig-signatur laget av kalleren som signature-pakken. HotPDF genererer eller parser aldri signaturen - kalleren produserer den med et XML-kryptografibibliotek over XFA-datasettene

 

Utflating fra XFA til AcroForm

ApplyXFAAsAcroForm mapper XDP/XFA-byter som er levert av kalleren til gjeldende side som opprinnelige AcroForm-objekter og enkel sidetegning. FlattenLoadedXFA utfører samme konvertering for en innlastet PDF som allerede har en innebygd /XFA-pakke. Send Editable=False for å gjøre genererte objekter skrivebeskyttet, og undersøk XFAFlattenWarnings for elementer som ikke kunne mappes

 

Se også: AcroForm-støtte, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField