THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  AcroForm Support  SetFormUnicodeFontDict

Registra uma fonte Unicode adicional (Type 0 / chaveada por CID) para inclusão no dicionário AcroForm Default Resources (/DR). Permite que um único documento PDF exponha várias fontes Unicode a widgets AcroForm ao mesmo tempo, normalmente usado em formulários multilíngues que precisam, por exemplo, de uma fonte latina mais uma fonte CJK mais uma fonte árabe no mesmo formulário

 

Sintaxe Delphi:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Descrição

Os widgets AcroForm referenciam fontes por meio de um dicionário Default Resources (/DR) no dicionário AcroForm, que atua como o pool compartilhado de recursos para todos os fluxos de aparência de campos de formulário. Antes da v2.119.42, o /DR do AcroForm expunha exatamente uma fonte Unicode (normalmente a fonte Type 0 definida pelo helper SetFormUnicodeFontDict), limitando fluxos de formulário multilíngue porque todo widget precisava renderizar pelo mesmo programa de fonte

 

A partir da v2.119.42, os chamadores podem registrar fontes Unicode adicionais sob nomes de recursos arbitrários. Cada fonte registrada se torna um /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 grava a barra inicial ao serializar

FontIndirectRef - um dicionário de fonte indireto Type 0 (chaveado por CID) existente, normalmente o resultado de CreateIndirectFontDict over a font registered via RegisterUnicodeTTF.

 

Fluxo de trabalho típico (formulário multilíngue)

 

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 de conteúdo árabe podem criar seus fluxos de aparência com /NotoSansArab 12 Tf while Japanese-content widgets use /NotoSansJP 12 Tf, sharing one document-wide AcroForm /DR resource pool.

 

Coexistência com SetFormUnicodeFontDict

O helper de fonte única preexistente (SetFormUnicodeFontDict) continua funcionando para projetos que precisam de apenas uma fonte Unicode em /DR do AcroForm. RegisterAcroFormFont é aditivo: os chamadores podem usá-lo além de SetFormUnicodeFontDict ou substituir SetFormUnicodeFontDict por completo quando mais de uma fonte Unicode é necessária

 

Veja também: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, AcroForm Support, THPDFPage.AddTextField