|
Enregistre une police Unicode supplémentaire (Type 0 / CID-keyed) pour l’inclure dans le dictionnaire des ressources par défaut de l’AcroForm (/DR) Permet à un seul document PDF d’exposer simultanément plusieurs polices Unicode aux widgets AcroForm - généralement pour des formulaires multilingues qui ont besoin, par exemple, d’une police latine, d’une police CJK et d’une police arabe dans le même formulaire
Syntaxe Delphi :
procedure RegisterAcroFormFont(const FontResourceName: AnsiString;
FontIndirectRef: THPDFObject);
Description
Les widgets AcroForm référencent les polices via le dictionnaire des ressources par défaut (/DR) de l’AcroForm, qui sert de réservoir de ressources partagé pour tous les flux d’apparence des champs de formulaire. Avant la v2.119.42, l’AcroForm /DR n’exposait qu’une seule police Unicode (généralement la police Type 0 enregistrée via SetFormUnicodeFontDict), ce qui limitait les workflows de formulaires multilingues, car chaque widget devait être rendu avec le même programme de police
À partir de la v2.119.42, les appelants peuvent enregistrer des polices Unicode supplémentaires sous n’importe quel nom de ressource. Chaque police enregistrée devient une entrée /DR /Font /<name> <indirect ref> dans le dictionnaire /DR de l’AcroForm à EndDoc. Les flux d’apparence des widgets peuvent ensuite référencer n’importe lequel des noms enregistrés via leur propre opérateur /Tf <name> <size> dans le flux de contenu d’apparence
Paramètres
FontResourceName - le nom PDF que l’opérateur /Tf du flux d’apparence référence. Convention : un identifiant court et stable sans barre oblique initiale (par exemple 'NotoSansArab', 'NotoSansCJK') HotPDF écrit la barre oblique initiale lors de la sérialisation
FontIndirectRef - un dictionnaire de police Type 0 (CID-keyed) indirect existant, généralement obtenu via CreateIndirectFontDict à partir d’une police enregistrée avec RegisterUnicodeTTF
Flux de travail type (formulaire multilingue)
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);
Les widgets de contenu arabe peuvent désormais rédiger leurs flux d’apparence avec /NotoSansArab 12 Tf tandis que les widgets de contenu japonais utilisent /NotoSansJP 12 Tf, en partageant un seul réservoir de ressources AcroForm /DR à l’échelle du document
Cohabitation avec SetFormUnicodeFontDict
L’assistant mono-police existant (SetFormUnicodeFontDict) continue de fonctionner pour les projets qui n’ont besoin que d’une seule police Unicode dans l’AcroForm /DR. RegisterAcroFormFont est additif : les appelants peuvent l’utiliser en complément de SetFormUnicodeFontDict, ou remplacer entièrement SetFormUnicodeFontDict lorsqu’une seule police Unicode ne suffit plus
Voir aussi: THotPDF.SetFormUnicodeFontDict, THotPDF.CreateIndirectFontDict, Prise en charge AcroForm, THPDFPage.AddTextField
|