Je vais vous présenter comment utiliser les polices japonaises et les caractères étrangers dans la sortie PDF avec JasperReports.
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>
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é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>
in
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
fontFamily definition Spécifiez le nom de la police (nom fontFamily) défini en xml dans le champ de texte ou le texte statique.
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.
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>
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