Notes d'étude Itext7 Série de discussions diverses 2-Ajouter le chinois (autres polices) et les questions liées aux polices dans itext7

    Dans ce chapitre, nous allons discuter de la façon d'afficher des caractères chinois ou d'autres caractères non ASCII tels que CJK (chinois / japonais / Koera) dans itext7, et interpréter la fonction du paquet font-asian.jar.

Encodage des polices

    Si nous voulons vraiment comprendre comment la police est stockée sur l'ordinateur, quel est le fichier de police et le problème de codage, vous pouvez vous référer à la relation entre les polices de codage chinois TTF.
    En passant, vérifiez la page de codes par défaut de la machine (c'est-à-dire ANSI) , Entrez chcp dans cmd pour afficher le numéro de page de code

Police CJK en PDF

    Nous pouvons conclure qu'il existe trois polices populaires sur le marché:

  • Postscript / Type1 est un ensemble de normes de polices vectorielles proposées par Adobe en 1985. Lorsque la police CJK est protégée par des droits d'auteur, facturée et que les polices CJK sont développées, la technologie de police à clé CID est utilisée. Il est plus difficile de l'utiliser dans itext7. Oui, c'est beaucoup de choses.
  • Truetype TrueType est un autre ensemble de normes de polices vectorielles proposées conjointement par Apple et Microsoft en 1991
  • OpenType En 995, Adobe et Microsoft ont commencé à développer conjointement une police compatible avec Type1 et TrueType, et prennent réellement en charge Unicode. Plus tard, lors de sa sortie, elle a été officiellement nommée OpenType. OpenType peut intégrer Type1 et TrueType, donc il a les caractéristiques des deux, qu'il soit visualisé à l'écran ou imprimé, la qualité est très bonne.

    Si nous voulons intégrer des polices CJK dans un PDF, itext7 ou un autre logiciel non Adobe que nous utilisons ne peut pas intégrer CJK dans le PDF en raison de la protection de la licence. informations txt:

itext-0-2-1

    Ici, je traduis et résume principalement le contenu de cmap_info.txt (car certaines des URL qu'il contient sont obsolètes, je résume donc certaines des informations que j'ai trouvées en ligne):

  • Le copyright des polices CJK ou CE appartient à Adobe et ne peut être utilisé que dans des logiciels tels qu'Adobe Reader
  • iText7 ne peut pas intégrer de polices CJK ou CE , car cela enfreint les droits d'auteur d'Adobe. Par exemple, l'incorporation de polices CJK peut être visualisée avec d'autres lecteurs PDF, ce qui affectera ses intérêts
  • Il existe deux types de fichiers dans font-asian.jar, l'un est le fichier cmap (fichier d'encodage) et l'autre est le fichier .properties (lié aux programmes de polices)
  • Les mesures de police utilisées pour décrire les mesures de police dans les polices de type 1 sont stockées dans les fichiers de mesures de police Adobe (AFM) et de mesures de police composite Adobe (ACFM). Ces fichiers sont utilisés par les programmes de polices. Mettez-les dans itext. Les informations sont stockées dans le fichier .properties et stockées sous forme de valeur-clé, de sorte que nous n'avons pas besoin du programme de police réel, mettez simplement les informations de police dans le fichier créé par itext.

polices intégrées itext7

Créer une police de type 1

    Lorsque nous développons le cmap dans la figure ci-dessus, nous trouverons des programmes de polices (le nom de fichier .properties représente le nom du programme de polices). Bien sûr, nous devons également déterminer le codage pris en charge par le programme de polices. Les programmes de polices couramment utilisés et les encodages correspondants d'Adobe :

Programme de polices codage
STSong-Light UniGB-UCS2-H
MHei-moyen UniCNS-UCS2-H
MSung-Light UniCNS-UCS2-H
HeiseiKakuGo-W5 UniJIS-UCS2-H
HeiseiMin-W3 UniJIS-UCS2-H
HYGoThic-Medium UniKS-UCS2-H
HYSMyeongJo-Medium UniKS-UCS2-H

Les codes correspondant au reste des programmes de polices sont temporairement indisponibles et les informations sur le site officiel d'Adobe sont différentes. Si vous souhaitez utiliser une police spécifique, vous pouvez la vérifier à ce moment-là.

    Ensuite, il faut créer une police spécifique, le code de base est le suivant, supposons que nous utilisons STSong-Light pour créer une police:

......
PdfFont f2 = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true);
document.add(new Paragraph("hellos你好").setFont(f2)); //表格、list其他方式也是这种方式
......

Si vous avez déjà utilisé itext5, vous constaterez que la façon de créer des polices est différente de itext5, ce n'est pas grave, j'écrirai un autre article pour écrire sur les différences entre itex7 et itext5 lors de la création de polices

    Après avoir créé le pdf, nous appuyons sur crtl + d pour voir les propriétés de la police, comme indiqué dans la figure:

itext-0-2-2

    Nous pouvons constater que la police réelle est AdobeSongStd-Light. C'est parce que j'ai choisi le chinois simplifié lorsque je l'ai installé sur cette machine. Les programmes de polices pour Song Ti et Hei Ti sont inclus dans le fichier "C: \ Program Files (x86) \ Adobe \ Dans Acrobat Reader DC \ Resource \ CIDFont "(répertoire d'installation), vous pouvez voir que nous utilisons des polices CID et qu'il existe deux programmes de polices:

itext-0-2-3

    Et si nous utilisons des programmes de polices qui ne sont pas dans ce dossier? Par exemple, HeiseiKakuGo-W5, etc., nous pouvons utiliser itext7 pour déposer, mais lors de l'ouverture de pdf, une telle boîte de dialogue apparaîtra, téléchargeons la police, comme indiqué sur la figure:

itext-0-2-4

Créer d'autres polices

    Il est plus facile d'incorporer d'autres polices. Vous pouvez utiliser votre propre fichier de police défini, prendre en charge le fichier ttf ou utiliser le fichier de police fourni avec Windows, comme suit:

PdfFont f2 = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true);
PdfFont f3 = PdfFontFactory.createFont("C:/Windows/Fonts/simhei.ttf", PdfEncodings.IDENTITY_H,true);
//Add paragraph to the document
document.add(new Paragraph("hellos你好").setFont(f2));
document.add(new Paragraph("hellos你好").setFont(f3));

    L'effet d'affichage est le suivant:

itext-0-2-5

PdfEncodings.IDENTITY_H est l'encodage Unicode, généralement les fichiers ttf utilisent cet encodage, j'en parlerai en détail dans le futur

Exemple d'emballage de code

    J'étais dans le premier chapitre et le premier chapitre de la pratique basée sur l'ajout de la sortie chinoise, soyez assuré de télécharger

Je suppose que tu aimes

Origine blog.csdn.net/u012397189/article/details/78471319
conseillé
Classement