THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Mendaftarkan font Unicode tambahan (Type 0 / CID-keyed) untuk dimasukkan ke dictionary AcroForm Default Resources (/DR). Memungkinkan satu dokumen PDF mengekspos beberapa font Unicode ke widget AcroForm secara bersamaan - biasanya dipakai untuk formulir multibahasa yang membutuhkan, misalnya, font Latin, font CJK, dan font Arab dalam formulir yang sama

 

Delphi syntax:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Deskripsi

Widget AcroForm mereferensikan font melalui dictionary Default Resources (/DR) pada dict AcroForm, yang bertindak sebagai pool resource bersama untuk semua stream appearance field formulir. Sebelum v2.119.42, AcroForm /DR hanya mengekspos satu font Unicode saja (biasanya font Type 0 yang diset oleh helper dan didaftarkan melalui SetFormUnicodeFontDict), sehingga alur kerja formulir multibahasa menjadi terbatas karena setiap widget harus dirender melalui program font yang sama

 

Setelah v2.119.42, pemanggil dapat mendaftarkan font Unicode tambahan dengan nama resource apa pun. Setiap font yang didaftarkan menjadi entri /DR /Font /<name> <indirect ref> di dalam dict AcroForm /DR saat EndDoc. Stream appearance widget kemudian dapat mereferensikan salah satu nama yang didaftarkan melalui operator /Tf <name> <size> miliknya sendiri di dalam stream konten appearance

 

Parameter

FontResourceName - Nama PDF yang direferensikan operator /Tf pada stream appearance. Konvensi: pengenal pendek yang stabil tanpa garis miring di depan (misalnya 'NotoSansArab', 'NotoSansCJK'). HotPDF menulis garis miring di depan saat serialisasi

FontIndirectRef - dictionary font Type 0 (CID-keyed) indirek yang sudah ada, biasanya hasil CreateIndirectFontDict pada font yang didaftarkan lewat RegisterUnicodeTTF

 

Alur kerja tipikal (formulir multibahasa)

 

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

 

Sekarang widget berisi Arab dapat menyusun stream appearance mereka dengan /NotoSansArab 12 Tf sementara widget berisi Jepang memakai /NotoSansJP 12 Tf, sambil berbagi satu pool resource AcroForm /DR untuk seluruh dokumen

 

Berdampingan dengan SetFormUnicodeFontDict

Helper satu font yang sudah ada sebelumnya (SetFormUnicodeFontDict) tetap bekerja untuk proyek yang hanya membutuhkan satu font Unicode di AcroForm /DR. RegisterAcroFormFont bersifat tambahan: pemanggil dapat menggunakannya bersama SetFormUnicodeFontDict, atau menggantikan SetFormUnicodeFontDict sepenuhnya ketika dibutuhkan lebih dari satu font Unicode

 

Lihat juga: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, Dukungan AcroForm, THPDFPage.AddTextField