THotPDF.RegisterAcroFormFont – metoda

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Registruje další Unicode písmo (Type 0 / podle CID) pro zařazení do slovníku AcroForm Default Resources (/DR). Umožňuje jednomu dokumentu PDF současně vystavit více Unicode písem widgetům AcroForm - typicky pro vícejazyčné formuláře, které ve stejném formuláři potřebují například latinské písmo, písmo CJK a arabské písmo

 

Syntaxe Delphi:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Popis

Widgety AcroForm odkazují na písma přes slovník Default Resources (/DR) ve slovníku AcroForm, který funguje jako sdílený pool prostředků pro všechny appearance streamy formulářových polí. Před v2.119.42 vystavoval AcroForm /DR přesně jedno Unicode písmo (typicky pomocnou metodou nastavené písmo Type 0 registrované přes SetFormUnicodeFontDict), což omezovalo vícejazyčná formulářová workflow, protože každý widget musel vykreslovat přes stejný program písma

 

After v2.119.42 callers can register additional Unicode fonts at arbitrary resource names. Each registered font becomes a /DR /Font /<name> <indirect ref> entry inside the AcroForm /DR dict at EndDoc. Widget appearance streams can then reference any of the registered names through their own /Tf <name> <size> operator inside the appearance content stream.

 

Parametry

FontResourceName - PDF Name, na který odkazuje operátor /Tf v appearance streamu. Konvence: krátký stabilní identifikátor bez úvodního lomítka (např. 'NotoSansArab', 'NotoSansCJK'). HotPDF při serializaci úvodní lomítko zapíše

FontIndirectRef - an existing indirect Type 0 (CID-keyed) font dictionary, typically the result of CreateIndirectFontDict over a font registered via RegisterUnicodeTTF.

 

Typical workflow (multilingual form)

 

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

 

Widgety s arabským obsahem tak mohou vytvářet své appearance streamy pomocí /NotoSansArab 12 Tf, zatímco widgety s japonským obsahem používají /NotoSansJP 12 Tf, a všechny sdílejí jeden dokumentový pool prostředků AcroForm /DR

 

Coexistence with SetFormUnicodeFontDict

Dřívější pomocná metoda pro jedno písmo (SetFormUnicodeFontDict) nadále funguje pro projekty, které v AcroForm /DR potřebují pouze jedno Unicode písmo. RegisterAcroFormFont je aditivní: volající ji mohou použít vedle SetFormUnicodeFontDict, nebo SetFormUnicodeFontDict zcela nahradit, když je potřeba více než jedno Unicode písmo

 

Viz také: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField