J'essaie de générer un rapport avec DynamicJasper, mais le message d'erreur suivant s'affiche:
net.sf.jasperreports.engine.util.JRFontNotFoundException:
Font 'Arial' is not available to the JVM.
msttcorefonts est installé, mais je suppose que la JVM n’utilise aucune police de ce dernier.
J'utilise Ubuntu 10.04.
Comment puis-je réparer cela?
J'ai essayé d'installer mscorefonts, mais le paquet était installé et à jour.
Sudo apt-get update
Sudo apt-get install ttf-mscorefonts-installer
J'ai essayé de rechercher la police dans le système de fichiers avec:
ls /usr/share/fonts/truetype/msttcorefonts/
Ce dossier ne contenait que le fichier LISEZMOI, avec les instructions correctes pour l’installation.
cat /usr/share/fonts/truetype/msttcorefonts/README
Vous avez besoin d'une connexion Internet pour cela:
Sudo apt-get install --reinstall ttf-mscorefonts-installer
J'ai réinstallé ttf-mscorefonts-installer
(comme indiqué ci-dessus, en prenant soin d'accepter le CLUF!) Et le problème a été résolu.
JasperReports lève une JRFontNotFoundException dans le cas où la police utilisée dans un modèle de rapport n'est pas disponible pour la machine virtuelle sous forme de police système ou de police provenant d'une extension de police JR. Cela garantit que tous les problèmes causés par l'inadéquation des métriques de polices sont évités et nous avertissons rapidement de l'incohérence.
Jasper reports tente de vous aider dans le développement de votre rapport, en indiquant qu'il ne peut pas exporter votre rapport correctement car il ne trouve pas la police définie dans TextField
ou StaticText
<font fontName="Arial"/>
Oui, vous pouvez désactiver ceci en définissant net.sf.jasperreports.awt.ignore.missing.font sur false, mais vous aurez exportation incohérentes.
Oui, vous pouvez installer la police en tant que police système JVM (mais vous devez le faire sur tous les ordinateurs utilisés susceptibles de générer un rapport et vous pouvez toujours avoir problèmes d'encodage).
Utilisez Extensions de police !, Si vous souhaitez créer le vôtre (voir lien ci-dessous), jasper reports distribue également un fichier jar d'extension de police (jasperreports-fonts-x.x.x.jar
), qui prend en charge fontName DejaVu Sans
, DejaVu Serif
et DejaVu Sans Mono
<font fontName="DejaVu Sans"/>
De JasperReport Ultimate Guide:
Nous encourageons vivement les utilisateurs à n'utiliser que des polices dérivées de la police extensions, car c’est le seul moyen de s’assurer que les polices sera disponible pour l'application lorsque les rapports seront exécutés à runtime. L'utilisation de polices système comporte toujours un risque pour les rapports, pas pour fonctionner correctement lorsqu'il est déployé sur une nouvelle machine qui pourrait ne pas avoir ces polices installées
Liens sur StackOverflow sur la manière de rendre les polices correctement en pdf
Liste de contrôle sur la manière de rendre la police correctement en pdf
J'utilise IReport pour installer la police:
outils -> options -> polices -> cliquez sur installer la police
Puis sélectionnez la police et cliquez sur
-> exporter en extension et taper le nom myfont.jar
ajoutez ce pot et aussi spring.jar* à votre chemin de construction.
* Copier le fichier spring.jar à partir de Jaspersoft\iReport-3.7.0\ireport\modules\ext
Pour CentOS:
wget - msttcorefonts
Ensuite:
tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf /usr/share/fonts/TTF/
fc-cache -fv
Après tout, redémarrez JVM.
Sudo apt-get install msttcorefonts
fonctionne (sur notre environnement de développement Ubuntu), mais n’est pas une très bonne solution.
Au lieu de cela, nous avons regroupé les polices avec notre application basée sur ce conseil . Leur fichier JAR regroupe les polices suivantes,
Lien direct vers le jar du téléchargement: Maven ver 1.0. DynamicFonts
Il existe trois méthodes pour éviter un tel problème.
Méthode 1: en définissant ignorer la propriété de police manquante.
JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
ou vous pouvez définir cette propriété en entrant la ligne suivante dans le fichier .jrxml.
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
Méthode 2: en définissant la propriété de police par défaut.
JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif");
ou vous pouvez définir cette propriété en entrant la ligne suivante dans le fichier .jrxml.
<property name="net.sf.jasperreports.default.font.name" value="Sans Serif"/>
Méthode 3: en ajoutant la propriété de police manquante.
Commencez par installer les polices manquantes dans IReport en sélectionnant "Outils >> Options >> Polices >> Installer une police", puis sélectionnez-la et exportez-la en cliquant sur "Exporter comme extension" avec l'extension .jar.
Vous pouvez utiliser ce fichier jar pour Jasperreports-font.X.X.X.jar, qui sera présent dans votre bibliothèque de projet ou votre chemin de classe.
J'ai résolu ce problème en choisissant «SansSerif» ou «Serif» uniquement et non «Arial» ou «Times New Roman».
Essayez d'ajouter la ligne
net.sf.jasperreports.awt.ignore.missing.font = true
dans votre fichier jasperreports.properties.
Vous pouvez le faire en installant des polices, ce qui signifie que vous voulez exécuter cette application en particulier. La manière la plus simple est d’ajouter cette ligne bl à votre fichier jrxml:
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
J'espère que ça aide.
peut faire vos polices personnalisées via iReport et convertir comme des fichiers jars
J'ai rencontré le problème avec mon application Web basée sur Spring 3 et déployée sur Weblogic 10.3 sur Oracle Linux 6. La solution mentionnée dans le lien link ne fonctionnait pas pour moi.
Je devais prendre les mesures suivantes - 1. Copiez les fichiers de police Arial * .ttf dans le répertoire JROCKIT_Java_HOME/jre/lib/fonts 2. Saisissez les polices dans fontconfig.properties.src 3. Redémarrez le cluster à partir de la console Weblogic
filename.Arial=Arial.ttf
filename.Arial_Bold=Arial_Bold.ttf
filename.Arial_Italic=Arial_Italic.ttf
filename.Arial_Bold_Italic=Arial_Bold_Italic.ttf
Si vous utilisez maven dans votre projet, vous pouvez simplement ajouter la dépendance jasper-fonts à pom.xml:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.8.1</version>
</dependency>
L'installation de la police manquante sur le système peut être une solution efficace, mais ce n'est pas mon cas. Je ne voulais pas installer les polices manquantes après chaque déploiement sur un nouveau serveur. J'ai plutôt opté pour l'intégration de la police à l'application.
Cordialement.
Créer un rapport jasper en plusieurs langues (Unicode)
1) Installer la police dans ireport desginer
2) créer une extension de police (nous l'utiliserons dans les applications classpath)
3) installer la police sur le système d'exploitation (facultatif)
4) collez tous les fichiers .ttf de la police dans le répertoire jre-> lib-> fonts (sinon l'application Web générera une erreur, la police n'est pas disponible pour la machine virtuelle Java)
ajouter
non-free contrib
pour deb et deb-src dans /etc/apt/sources.list
deb http://ftp.debian.org/debian/ squeeze main non-free contrib
deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib
Ensuite
apt-get update
apt-get install msttcorefonts
Bien sûr, vous devrez redémarrer jasperserver. c'est à dire:
/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart
Changer pour votre version/chemin.
Solution en 2 étapes (si vous utilisez centOS)
Téléchargez le package rpm des polices de base Microsoft.
[root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
Installez le paquetage rpm.
[root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
En fait, j'ai résolu ce problème d'une manière très simple
home path
, comme /root
.fonts
all your font files
dans .fonts
, vous pouvez copier la police de C:\windows\fonts
si vous utilisez Windows.Sudo apt-get install fontconfig
fc-cache –fv
pour remettre en cache les polices.Copiez vos polices dans le répertoire suivant JDK_HOME\jre\lib\fonts
Hey Vous rencontrez des difficultés pour visualiser des documents produits sous Windows?
Vous pouvez essayer une solution facile facile:
miam installer curl cabextract xorg-x11-font-utils fontconfig
Après cela, j'ai besoin de redémarrer mon système CentOS6.