[JAVA] Utilisation de polices japonaises et de caractères étrangers dans Jasper Report

Je vais vous présenter comment utiliser les polices japonaises et les caractères étrangers dans la sortie PDF avec JasperReports.

Conditions préalables

Chose que tu veux faire

Préparation

Créez un projet Maven et ajoutez jasperreports à la dépendance.

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.10.0</version>
</dependency>

Utilisation de la police japonaise

Placez la police à utiliser dans le classpath

Placez le fichier de police (* .ttf) dans src / main / resources / fonts du projet. Cela inclura le fichier de police dans le jar (ou war), vous n'avez donc pas besoin d'installer le fichier de police sur le serveur en cours d'exécution.

Créer une policeFamily definition xml

Créez src / main / resources / fonts / fontsfamily-ipa.xml et écrivez la définition suivante. Le chemin du fichier de police est le chemin du chemin de classe.

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
  <fontFamily name="IPAex Gothic">
    <normal><![CDATA[fonts/ipaexg.ttf]]></normal>
    <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
    <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
  </fontFamily>
  <fontFamily name="IPAex Mincho">
    <normal><![CDATA[fonts/ipaexm.ttf]]></normal>
    <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
    <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
  </fontFamily>
</fontFamilies>

Définir pour lire la police de caractèresFamily definition xml

Créez le fichier de définition d'extension JasperReports src / main / resources / jasperreports_extension.properties` et écrivez les définitions suivantes. Le chemin et le nom de ce fichier sont fixes (spécification JasperReports).

net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ipafonts=fonts/fontsfamily-ipa.xml

Spécifiez la police dans le fichier de définition de mise en page

fontFamily definition Spécifiez le nom de la police (nom fontFamily) défini en xml dans le champ de texte ou le texte statique.

Utilisation de caractères étrangers

Placez la police de caractères externe dans le chemin de classe

Placez le fichier de police de caractères externe dans le fichier src / main / resources / fonts du projet de la même manière que la police IPA. Le fichier de police étrangère est généralement nommé ʻEUDC.tte, mais renommez-le en .ttf` pour que JasperReports le reconnaisse.

Ajout de caractères externes à fontFamily definition xml

Ajoutez le fontFamily indiquant le caractère extérieur au xml de définition fontFamily défini précédemment.

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
  ...
  <fontFamily name="_EUDC">
    <normal><![CDATA[fonts/EUDC.ttf]]></normal>
    <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
    <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
  </fontFamily>
</fontFamilies>

Rendre possible l'utilisation avec la police IPA

Dans cette situation, seule la police des caractères étrangers est définie, mais en réalité, les caractères étrangers apparaissent dans les phrases normales. Par conséquent, il est nécessaire de définir pour que d'autres polices puissent être utilisées en même temps. Ici, quand ʻIPAex Gothic ou ʻIPAex Mincho est spécifié pour la police, fontSet est défini dans la définition de fontFamily xml de sorte que les caractères externes soient également affichés, et le nom de la fontFamily d'origine est défini. changement.

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
  <fontFamily name="_IPAex Gothic"> <!--appeler_Ajouter-->
    <normal><![CDATA[fonts/ipaexg.ttf]]></normal>
    <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
    <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
  </fontFamily>
  <fontFamily name="_IPAex Mincho">
    <normal><![CDATA[fonts/ipaexm.ttf]]></normal>
    <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
    <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
  </fontFamily>
  <fontFamily name="_EUDC">
    <normal><![CDATA[fonts/EUDC.ttf]]></normal>
    <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
    <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
  </fontFamily>

  <fontSet name="IPAex Gothic">
    <family familyName="_IPAex Gothic" primary="true" />
    <family familyName="_EUDC" />
  </fontSet>
  <fontSet name="IPAex Mincho">
    <family familyName="_IPAex Mincho" primary="true" />
    <family familyName="_EUDC" />
  </fontSet>
</fontFamilies>

Les caractères qui ne peuvent pas être affichés dans la police IPA utiliseront désormais la police de caractères externe.

Recommended Posts

Utilisation de polices japonaises et de caractères étrangers dans Jasper Report
Utilisation correcte de la classe abstraite et de l'interface en Java
Traitement de la date et de l'heure en Ruby. Utilisez correctement la date et l'heure.
[Java8] Utilisation appropriée de Compareable et Comparator du point de vue du tri des employés
Utilisez redirect_to et effectuez un rendu correctement
Utilisation correcte de Mockito et PowerMock
Différence entre l'étiquette d'interface utilisateur par habillage de caractères et par habillage de mots dans l'affichage japonais
(Déterminez en 1 minute) Comment utiliser vide?, Vide? Et présent?
Résumé des hachages et symboles dans Ruby
Localisation japonaise de CentOS 8 et disposition du clavier japonais
Utilisation correcte de l'interface et de la classe abstraite
[Ruby] Distinction et utilisation des boucles dans Ruby
Paramètres japonais pour mysql dans le conteneur Docker
Discrimination d'énum dans Java 7 et supérieur
Les caractères japonais décrits dans MessageResources.properties sont déformés
[Java] Utilisation de final dans la déclaration de variable locale
Critères pour utiliser correctement render et redirect_to
Introduction de Rspec et de la localisation japonaise des messages d'erreur
Comment utiliser JQuery dans Rails 6 js.erb
Vers la compréhension de la carte et de la flatmap dans Stream (1)
Utilisez correctement Shift Right et Shift Left dans Selenium
[Rails] Classement et pagination par J'aime