THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Rejestruje dodatkową czcionkę Unicode (Type 0 / CID-keyed) do umieszczenia w słowniku AcroForm Default Resources (/DR). Pozwala pojedynczemu dokumentowi PDF udostępniać widgetom AcroForm wiele czcionek Unicode jednocześnie - zwykle używane w formularzach wielojęzycznych, które potrzebują na przykład czcionki łacińskiej, czcionki CJK i czcionki arabskiej w tym samym formularzu

 

Składnia Delphi:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Opis

Widgety AcroForm odwołują się do czcionek przez słownik Default Resources (/DR) w słowniku AcroForm, który działa jako współdzielona pula zasobów dla wszystkich strumieni wyglądu pól formularza. Przed v2.119.42 AcroForm /DR udostępniał dokładnie jedną czcionkę Unicode (zwykle pomocniczą czcionkę Type 0 zarejestrowaną przez SetFormUnicodeFontDict), co ograniczało wielojęzyczne przepływy formularzy, ponieważ każdy widget musiał renderować przez ten sam program czcionki

 

Od v2.119.42 wywołujący mogą rejestrować dodatkowe czcionki Unicode pod dowolnymi nazwami zasobów. Każda zarejestrowana czcionka staje się wpisem /DR /Font /<name> <indirect ref> w słowniku AcroForm /DR podczas EndDoc. Strumienie wyglądu widgetów mogą następnie odwoływać się do dowolnej z zarejestrowanych nazw przez własny operator /Tf <name> <size> w strumieniu zawartości wyglądu

 

Parametry

FontResourceName - PDF Name, do którego odwołuje się operator /Tf w strumieniu wyglądu. Konwencja: krótki stabilny identyfikator bez ukośnika na początku (np. 'NotoSansArab', 'NotoSansCJK'). HotPDF zapisuje ukośnik na początku podczas serializacji

FontIndirectRef - istniejący pośredni słownik czcionki Type 0 (CID-keyed), zwykle wynik CreateIndirectFontDict dla czcionki zarejestrowanej przez RegisterUnicodeTTF

 

Typowy przepływ pracy (formularz wielojęzyczny)

 

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

 

Teraz widgety z treścią arabską mogą tworzyć swoje strumienie wyglądu z /NotoSansArab 12 Tf, podczas gdy widgety z treścią japońską używają /NotoSansJP 12 Tf, współdzieląc jedną ogólnodokumentową pulę zasobów AcroForm /DR

 

Współistnienie z SetFormUnicodeFontDict

Istniejący wcześniej pomocnik pojedynczej czcionki (SetFormUnicodeFontDict) nadal działa w projektach, które potrzebują tylko jednej czcionki Unicode w AcroForm /DR. RegisterAcroFormFont jest addytywny: wywołujący mogą używać go oprócz SetFormUnicodeFontDict albo całkowicie zastąpić SetFormUnicodeFontDict, gdy potrzebna jest więcej niż jedna czcionka Unicode

 

Zobacz też: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField