THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Regista um tipo de letra Unicode adicional (Type 0 / CID-keyed) para inclusão no dicionário AcroForm Default Resources (/DR). Permite que um único documento PDF exponha vários tipos de letra Unicode aos widgets AcroForm em simultâneo - normalmente usado para formulários multilingues que precisam, por exemplo, de um tipo de letra latino mais um CJK mais um árabe no mesmo formulário

 

Delphi syntax:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Descrição

Os widgets AcroForm referenciam tipos de letra através de um dicionário Default Resources (/DR) no dicionário AcroForm, que atua como o pool de recursos partilhado para todos os fluxos de aparência dos campos de formulário. Antes do v2.119.42, o AcroForm /DR expunha exatamente um tipo de letra Unicode (normalmente o tipo de letra Type 0 definido pelo auxiliar e registado através de SetFormUnicodeFontDict), o que limitava os fluxos de trabalho de formulários multilingues porque cada widget tinha de renderizar através do mesmo programa de fonte

 

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.

 

Parameters

FontResourceName - o PDF Name que o operador /Tf do fluxo de aparência referencia. Convenção: um identificador curto e estável sem barra inicial (por exemplo, 'NotoSansArab', 'NotoSansCJK'). O HotPDF escreve a barra inicial ao serializar

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

 

Agora os widgets com conteúdo árabe podem criar os respetivos fluxos de aparência com /NotoSansArab 12 Tf enquanto os widgets com conteúdo japonês usam /NotoSansJP 12 Tf, partilhando um único pool de recursos AcroForm /DR ao nível do documento

 

Coexistence with SetFormUnicodeFontDict

O auxiliar preexistente para um único tipo de letra (SetFormUnicodeFontDict) continua a funcionar para projetos que só precisam de um tipo de letra Unicode no AcroForm /DR. RegisterAcroFormFont é aditivo: os chamadores podem usá-lo em conjunto com SetFormUnicodeFontDict ou substituir SetFormUnicodeFontDict por completo quando for necessário mais do que um tipo de letra Unicode

 

See also: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField