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