THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

AcroForm Default Resources (/DR) sözlüğüne eklemek için ek bir Unicode (Type 0 / CID-keyed) yazı tipi kaydeder. Tek bir PDF belgesinin AcroForm widget'larına aynı anda birden çok Unicode yazı tipi sunmasını sağlar - genellikle aynı formda örneğin Latin yazı tipi, CJK yazı tipi ve Arapça yazı tipi gereken çok dilli formlar için kullanılır

 

Delphi sözdizimi:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Açıklama

AcroForm widget'ları yazı tiplerine AcroForm sözlüğündeki Default Resources (/DR) sözlüğü üzerinden başvurur; bu sözlük tüm form alanı görünüm akışları için paylaşılan kaynak havuzu görevi görür. v2.119.42 öncesinde AcroForm /DR tam olarak bir Unicode yazı tipi sunuyordu (genellikle SetFormUnicodeFontDict ile kaydedilen yardımcı ayarlı Type 0 yazı tipi), bu da çok dilli form iş akışlarını sınırlıyordu çünkü her widget aynı yazı tipi programı üzerinden çizilmek zorundaydı

 

v2.119.42 sonrasında çağıranlar isteğe bağlı kaynak adlarıyla ek Unicode yazı tipleri kaydedebilir. Her kayıtlı yazı tipi EndDoc sırasında AcroForm /DR sözlüğü içinde bir /DR /Font /<name> <indirect ref> girdisi olur. Widget görünüm akışları daha sonra görünüm içerik akışındaki kendi /Tf <name> <size> operatörleriyle kayıtlı adlardan herhangi birine başvurabilir

 

Parametreler

FontResourceName - görünüm akışındaki /Tf operatörünün başvurduğu PDF Name. Kural: başında eğik çizgi olmayan kısa ve kararlı bir tanımlayıcı (ör. 'NotoSansArab', 'NotoSansCJK'). HotPDF serileştirirken baştaki eğik çizgiyi yazar

FontIndirectRef - mevcut bir dolaylı Type 0 (CID-keyed) yazı tipi sözlüğü; genellikle RegisterUnicodeTTF ile kaydedilen bir yazı tipi üzerinde CreateIndirectFontDict sonucudur

 

Tipik iş akışı (çok dilli 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);

 

Artık Arapça içerikli widget'lar görünüm akışlarını /NotoSansArab 12 Tf ile oluşturabilirken Japonca içerikli widget'lar /NotoSansJP 12 Tf kullanır ve tek bir belge geneli AcroForm /DR kaynak havuzunu paylaşır

 

SetFormUnicodeFontDict ile birlikte kullanım

Önceden var olan tek yazı tipi yardımcısı (SetFormUnicodeFontDict), AcroForm /DR içinde yalnızca bir Unicode yazı tipine ihtiyaç duyan projelerde çalışmaya devam eder. RegisterAcroFormFont eklemelidir: çağıranlar bunu SetFormUnicodeFontDict ile birlikte kullanabilir veya birden fazla Unicode yazı tipi gerektiğinde SetFormUnicodeFontDict kullanımını tamamen bununla değiştirebilir

 

Ayrıca bkz.: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField