THotPDF.RegisterAcroFormFont

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

 

AddXFAPacket  Soporte AcroForm  SetFormUnicodeFontDict

Registra una fuente Unicode adicional (Type 0 / CID-keyed) para incluirla en el diccionario AcroForm Default Resources (/DR). Permite que un solo documento PDF exponga simultáneamente varias fuentes Unicode a widgets AcroForm; se usa normalmente en formularios multilingües que necesitan, por ejemplo, una fuente latina más una fuente CJK más una fuente árabe en el mismo formulario

 

Sintaxis Delphi:

procedure RegisterAcroFormFont(const FontResourceName: AnsiString;

  FontIndirectRef: THPDFObject);

 

Descripción

Los widgets AcroForm referencian fuentes mediante un diccionario Default Resources (/DR) en el dict AcroForm, que actúa como pool de recursos compartido para todos los appearance streams de campos de formulario. Antes de v2.119.42, el /DR de AcroForm exponía exactamente una fuente Unicode (normalmente la fuente Type 0 establecida por helper y registrada mediante SetFormUnicodeFontDict), lo que limitaba los flujos de formularios multilingües porque cada widget tenía que renderizar mediante el mismo programa de fuente

 

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.

 

Parámetros

FontResourceName - PDF Name que referencia el operador /Tf del appearance stream. Convención: un identificador corto y estable sin barra inicial (por ejemplo 'NotoSansArab', 'NotoSansCJK'). HotPDF escribe la barra inicial al serializar

FontIndirectRef - un diccionario de fuente Type 0 (CID-keyed) indirecto existente, normalmente el resultado de CreateIndirectFontDict sobre una fuente registrada mediante RegisterUnicodeTTF

 

Flujo de trabajo típico (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);

 

Ahora los widgets con contenido árabe pueden crear sus appearance streams con /NotoSansArab 12 Tf, mientras que los widgets con contenido japonés usan /NotoSansJP 12 Tf, compartiendo un pool de recursos /DR AcroForm de alcance documental

 

Coexistence with SetFormUnicodeFontDict

El helper preexistente de una sola fuente (SetFormUnicodeFontDict) sigue funcionando para proyectos que solo necesitan una fuente Unicode en el /DR de AcroForm. RegisterAcroFormFont es aditivo: los llamadores pueden usarlo además de SetFormUnicodeFontDict, o sustituir por completo SetFormUnicodeFontDict cuando se necesite más de una fuente Unicode

 

Véase también: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, Soporte AcroForm, THPDFPage.AddTextField