THotPDF.RegisterAcroFormFont

THotPDF AcroForm /DR több-betűtípusú regisztráció (v2.119.42)

 

AddXFAPacket AcroForm Support SetFormUnicodeFontDict

Regisztrál egy további Unicode (Type 0 / CID-kulcsos) betűtípust az AcroForm alapértelmezett erőforrások (/DR) szótárába történő felvételhez. Lehetővé teszi, hogy egyetlen PDF-dokumentum egyszerre több Unicode betűtípust tegyen elérhetővé az AcroForm widgetek számára - jellemzően olyan többnyelvű űrlapoknál használatos, amelyeknek (például) egy latin betűtípusra, plusz egy CJK betűtípusra, plusz egy arab betűtípusra van szükségük ugyanabban az űrlapban

 

Delphi szintaxis:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

FontIndirectRef: THPDFObject);

 

Leírás

AcroForm widgetek a betűtípusokra az AcroForm szótárban található alapértelmezett erőforrások (/DR) szótárán keresztül hivatkoznak, amely közös erőforrás-készletként szolgál az összes űrlapmező megjelenítési adatfolyamához (appearance streams). A v2.119.42-es verzió előtt az AcroForm /DR pontosan egy Unicode betűtípust tett elérhetővé (jellemzően a SetFormUnicodeFontDict segítségével regisztrált Type 0 segéd-betűtípust), ami korlátozta a többnyelvű űrlapok munkafolyamatait, mert minden widgetnek ugyanazzal a betűtípus-programmal kellett renderelnie

 

A v2.119.42-es verzió után a hívók tetszőleges erőforrásneveken regisztrálhatnak további Unicode betűtípusokat. Minden regisztrált betűtípus egy-egy /DR /Font /<name> <indirect ref> bejegyzéssé válik az AcroForm /DR szótárában az EndDoc meghívásakor. A widget megjelenítési adatfolyamai ezután a saját megjelenítési tartalom-adatfolyamukban lévő /Tf <név> <méret> operátoron keresztül hivatkozhatnak a regisztrált nevek bármelyikére

 

Paraméterek

FontResourceName - a PDF név, amelyre a megjelenítési adatfolyam /Tf operátora hivatkozik. Konvenció: egy rövid, stabil azonosító kezdő perjel nélkül (pl. 'NotoSansArab', 'NotoSansCJK'). A HotPDF a kezdő perjelet a szerializáláskor írja ki

FontIndirectRef - egy meglévő közvetett Type 0 (CID-kulcsos) betűtípus-szótár, amely jellemzően a RegisterUnicodeTTF-en keresztül regisztrált betűtípusra alkalmazott CreateIndirectFontDict eredménye

 

Tipikus munkafolyamat (többnyelvű űrlap)

 

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

 

Így az arab nyelvű widgetek a megjelenítési adatfolyamaikat a /NotoSansArab 12 Tf kóddal, míg a japán nyelvű widgetek a /NotoSansJP 12 Tf kóddal hozhatják létre, megosztva egyetlen dokumentumszintű AcroForm /DR erőforrás-készletet

 

Együttélés a SetFormUnicodeFontDict metódussal

A már meglévő egy-betűtípusú segédlet (SetFormUnicodeFontDict) továbbra is működik az olyan projekteknél, amelyeknek csak egy Unicode betűtípusra van szükségük az AcroForm /DR-ben. A RegisterAcroFormFont additív: a hívók használhatják a SetFormUnicodeFontDict mellett, vagy teljesen felválthatják a SetFormUnicodeFontDict-et, ha egynél több Unicode betűtípusra van szükség

 

Lásd még: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField