|
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
|