|
Înregistrează un font Unicode suplimentar (Type 0 / CID-keyed) pentru includere în dicționarul AcroForm Default Resources (/DR). Permite unui singur document PDF să expună simultan mai multe fonturi Unicode către widget-urile AcroForm, fiind folosit de obicei pentru formulare multilingve care au nevoie, de exemplu, de un font latin plus un font CJK plus un font arabic în același formular
Delphi syntax:
procedure RegisterAcroFormFont(const FontResourceName: AnsiString;
FontIndirectRef: THPDFObject);
Descriere
Widget-urile AcroForm referă fonturi printr-un dicționar Default Resources (/DR) din dicționarul AcroForm, care acționează ca bază comună de resurse pentru toate fluxurile de aparență ale câmpurilor de formular. Înainte de v2.119.42, /DR al AcroForm expunea exact un singur font Unicode, de obicei fontul Type 0 setat prin SetFormUnicodeFontDict, ceea ce limita fluxurile de lucru multilingve deoarece fiecare widget trebuia să se redea prin același program de font
După v2.119.42, apelanții pot înregistra fonturi Unicode suplimentare sub nume de resursă arbitrare. Fiecare font înregistrat devine o intrare /DR /Font /<name> <indirect ref> în dicționarul AcroForm /DR la EndDoc. Fluxurile de aparență ale widget-urilor pot apoi referi oricare dintre numele înregistrate prin propriul operator /Tf <name> <size> din fluxul de conținut al aparenței
Parametri
FontResourceName - numele PDF folosit de operatorul /Tf din fluxul de aparență pentru referință. Convenție: un identificator scurt și stabil, fără slash inițial, de exemplu 'NotoSansArab', 'NotoSansCJK'. HotPDF scrie slash-ul inițial la serializare
FontIndirectRef - un dicționar de font indirect de tip 0 (CID-keyed) existent, de obicei rezultatul CreateIndirectFontDict pe un font înregistrat prin RegisterUnicodeTTF
Flux tipic de lucru (formular multilingv)
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);
Acum widget-urile cu conținut arabic își pot scrie fluxurile de aparență cu /NotoSansArab 12 Tf, iar widget-urile cu conținut japonez pot folosi /NotoSansJP 12 Tf, partajând o singură bază de resurse AcroForm /DR la nivelul documentului
Coexistență cu SetFormUnicodeFontDict
Helperul existent pentru un singur font (SetFormUnicodeFontDict) continuă să funcționeze pentru proiectele care au nevoie doar de un singur font Unicode în /DR al AcroForm. RegisterAcroFormFont este aditiv: apelanții îl pot folosi pe lângă SetFormUnicodeFontDict sau pot înlocui complet SetFormUnicodeFontDict atunci când este nevoie de mai mult de un font Unicode
Vezi și: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, Suport AcroForm, THPDFPage.AddTextField
|