THotPDF.RegisterAcroFormFont

THotPDF AcroForm /DR multi-font registration (v2.119.42)

 

AddXFAPacket  AcroForm-støtte  SetFormUnicodeFontDict

Registrerer en ekstra Unicode-font (Type 0 / CID-kodet) for bruk i AcroForm Default Resources-ordboken (/DR). Lar ett enkelt PDF-dokument eksponere flere Unicode-fonter til AcroForm-widgeter samtidig - typisk brukt for flerspråklige skjemaer som for eksempel trenger en latinsk font, en CJK-font og en arabisk font i samme skjema

 

Delphi-syntaks:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Beskrivelse

AcroForm-widgeter refererer til fonter gjennom en Default Resources-ordbok (/DR) på AcroForm-diktet, som fungerer som delt ressurslager for alle utseendestrømmer for skjemafelter. Før v2.119.42 eksponerte AcroForm /DR nøyaktig én Unicode-font (vanligvis Type 0-fonten satt opp av hjelperen og registrert via SetFormUnicodeFontDict), noe som begrenset flerspråklige skjema-arbeidsflyter fordi hver widget måtte rendres gjennom det samme fontprogrammet

 

Etter v2.119.42 kan kallere registrere ekstra Unicode-fonter med vilkårlige ressursnavn. Hver registrerte font blir en /DR /Font /<name> <indirect ref>-oppføring inne i AcroForm /DR-diktet ved EndDoc. Utseendestrømmer for widgeter kan deretter referere til hvilket som helst av de registrerte navnene gjennom sin egen /Tf <name> <size>-operator inne i utseendestrømmen

 

Parametere

FontResourceName - PDF-navnet som utseendestrømmens /Tf-operator refererer til. Konvensjon: en kort og stabil identifikator uten ledende skråstrek (for eksempel 'NotoSansArab', 'NotoSansCJK'). HotPDF skriver den ledende skråstreken ved serialisering

FontIndirectRef - en eksisterende indirekte Type 0-fontordbok (CID-kodet), vanligvis resultatet av CreateIndirectFontDict på en font som er registrert via RegisterUnicodeTTF

 

Typisk arbeidsflyt (flerspråklig skjema)

 

PDF.RegisterUnicodeTTF('NotoSansArab', 'NotoSansArabic-Regular.ttf');

PDF.RegisterUnicodeTTF('NotoSansJP'  , 'NotoSansJP-Regular.otf');

ArabRef := PDF.CreateIndirectFontDict('NotoSansArab');

JPRef   := PDF.CreateIndirectFontDict('NotoSansJP');

PDF.RegisterAcroFormFont('NotoSansArab', ArabRef);

PDF.RegisterAcroFormFont('NotoSansJP'  , JPRef);

 

Nå kan widgeter med arabisk innhold skrive utseendestrømmene sine med /NotoSansArab 12 Tf, mens widgeter med japansk innhold bruker /NotoSansJP 12 Tf, og begge deler samme dokumentomfattende AcroForm /DR-ressurspool

 

Sameksistens med SetFormUnicodeFontDict

Den eksisterende hjelpfunksjonen for én font (SetFormUnicodeFontDict) fortsetter å virke for prosjekter som bare trenger én Unicode-font i AcroForm /DR. RegisterAcroFormFont er additiv: kallere kan bruke den i tillegg til SetFormUnicodeFontDict, eller erstatte SetFormUnicodeFontDict helt når det trengs mer enn én Unicode-font

 

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