THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount

THotPDF XFA forms container (v2.119.51)

RegisterAcroFormFont AcroForm Support

Rekisteröi nimetyn XFA-paketin (XML Forms Architecture) tulostettavaksi dokumentin AcroForm-sanakirjan /XFA-merkintään. PDF 1.7 §12.7.6 + §12.7.8 sallii AcroFormin sisältää /XFA-taulukon staattisen /Fields-taulukon rinnalla (tai sen sijaan), mikä mahdollistaa hybridi-AcroForm + XFA -työnkulut tai puhtaat dynaamiset XFA-lomakkeet

Delphi syntax:

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

procedure ClearXFAPackets;

function XFAPacketCount: Integer;

Kuvaus

Jokainen kutsu metodiin AddXFAPacket rekisteröi yhden nimetyn paketin. Tyypillisiä nimiä (XFA 3.3 -määrityksen ja PDF 1.7 §12.7.8 Table 234 mukaan):

template – lomakkeen asettelu + skriptit (suurin paketti useimmissa XFA-dokumenteissa)

datasets – datansidonta (XML-hyötykuorma, jota vasten mallipohja renderöidään)

config - viewer configuration.

connectionSet - external data connections.

localeSet - locale-specific formatting rules.

stylesheet – XSLT- tai CSS-tyylit

xfdf - XFDF form data overlay.

xmpmeta - XMP metadata.

signature - signature-related XFA data.

sourceSet - source-side data definitions.

Vaiheessa EndDoc jokaisesta rekisteröidystä paketista tulee yksi epäsuora FlateDecode-pakattu virtakohde, ja AcroFormin /XFA-taulukko vuorottelee paketin nimen sisältäviä PDF-merkkijonoja virta-viitteiden kanssa rekisteröintijärjestyksessä, joten asettelu on tavutasolla deterministinen. Metodi ClearXFAPackets poistaa kaikki rekisteröidyt paketit (hyödyllistä, kun THotPDF-instanssia käytetään uudelleen useissa dokumenteissa). Ominaisuus XFAPacketCount palauttaa nykyisen määrän

Container-level support only

HotPDF ei jäsennä XFA XML -tietoa, ei toteuta dynaamista XFA-asettelumoottoria, ei suorita FormCalc- tai JavaScript-koodia XFA-mallipohjan sisällä eikä validoi mallipohjan rakennetta. Kutsuja laatii XFA XML -koodin itse (tyypillisesti Adobe LiveCycle Designerin kautta tai käsin kirjoittamalla XFA 3.3 -määrityksen mukaan) ja HotPDF tulostaa tavut sanatarkasti

Katseluohjelmat, joissa on XFA-moottori (vanhemmat Acrobat / Reader -ohjelmat, FormsCentral, jotkut kioskityökaluohjelmat), renderöivät lomakkeen; lukulaitteet ilman XFA-moottoria (Adobe Reader DC vuodesta 2017 eteenpäin, useimmat avoimen lähdekoodin lukulaitteet) näyttävät korvaavat AcroForm-kentät, jos dokumentti on hybridi AcroForm + XFA -työnkulku

PDF/A- ja PDF/X-yhteensopivuusportit

ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 kieltävät kaikki nimenomaisesti XFA-lomakkeet (dynaaminen asettelumoottori ei ole deterministisesti arkistoitavissa). ISO 15930 -painoalatyönkulut hylkäävät interaktiiviset lomakkeet kokonaan. Metodi AddXFAPacket aiheuttaa poikkeuksen heti minkä tahansa ei-tyhjän PDFACompliance- tai PDFXCompliance-määrityksen alla asianmukaisen määrittelyviitteen kera. Kaksoiskappaleet pakettien nimissä aiheuttavat virheen. Tyhjä PacketName tai tyhjä XMLBytes aiheuttaa virheen. RequirePDFVersion(pdf15) nostaa automaattisesti dokumentin versiota

AcroForm dictionary emission

AcroForm-sanakirja luodaan, kun joko merkinnässä /Fields on vähintään yksi syöte tai vähintään yksi XFA-paketti on rekisteröity. Ennen versiota v2.119.51 kutsujat, jotka eivät rekisteröi paketteja, säilyttävät tavutasolla identtisen /AcroForm-tulosteen

Tyypillinen työnkulku (puhdas dynaaminen XFA-lomake)

PDF.BeginDoc;

TemplateBytes := TFile.ReadAllBytes('form-template.xml');

DataBytes := TFile.ReadAllBytes('form-data.xml');

PDF.AddXFAPacket('xdp:xdp', BytesOf(''));

PDF.AddXFAPacket('template', TemplateBytes);

PDF.AddXFAPacket('datasets', DataBytes);

PDF.AddXFASignaturePacket(SigBytes); { kutsuntapäässä luotu XAdES }

PDF.AddXFAPacket('/xdp:xdp', BytesOf(''));

PDF.EndDoc;

XDP-kääre, yksivuinen, dynaaminen ja allekirjoitettu XFA

Taulukkomuotoisen /XFA-lomakkeen on alettava ja päätyttävä xdp:xdp-käärepaketteihin, kuten esimerkki nyt näyttää (ISO 32000-1 §12.7.8). Liittyvät XFA-rajapinnat: SetXFADocument kirjoittaa koko XFA/XDP-dokumentin yhtenä /XFA-vuona, mikä sulkee pois metodin AddXFAPacket; XFANeedsRendering asettaa Catalog-sanakirjan /NeedsRendering-lipun (ISO 32000-1 §7.7.2), jotta lukija luo dynaamisen XFA-lomakkeen uudelleen ensimmäisellä avaamiskerralla; AddXFASignaturePacket upottaa kutsujan luoman XAdES- / XML-DSig-allekirjoituksen signature-pakettina. HotPDF ei koskaan luo tai jäsennä allekirjoitusta - kutsuja tuottaa sen XML-salauskirjaston avulla XFA-tietojoukkojen päälle

XFA-to-AcroForm-tasaus

ApplyXFAAsAcroForm kartoittaa kutsujan toimittamat XDP-/XFA-tavut nykyiselle sivulle natiiveiksi AcroForm-elementeiksi ja yksinkertaiseksi sivugrafiikaksi. FlattenLoadedXFA suorittaa saman muunnoksen ladatulle PDF-tiedostolle, joka jo sisältää upotetun /XFA-paketin. Välitä parametri Editable=False tehdäksesi luoduista elementeistä vain luku -muotoisia, ja tarkista XFAFlattenWarnings niiden elementtien osalta, joita ei voitu kartoittaa

Katso myös: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField