web-dev-qa-db-fra.com

La police n'est pas disponible sur la machine virtuelle Java avec Jasper Reports

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?

72
Andrew

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.

57
Braully Rocha

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).

La bonne façon!

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

Générer des extensions de police avec JasperSoft Studio

Générer des extensions de police avec iReport

23
Petter Friberg

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

21
juan

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.

12
Ricardo Carmo

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,

  • Arial
  • Times New Roman
  • Courier New 
  • Comic Sans MS 
  • Géorgie
  • Verdana
  • Monospace

Lien direct vers le jar du téléchargement: Maven ver 1.0. DynamicFonts

11
user799188

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. 

6
Mayur Bhokase

J'ai résolu ce problème en choisissant «SansSerif» ou «Serif» uniquement et non «Arial» ou «Times New Roman». 

4
lkdg

Essayez d'ajouter la ligne

net.sf.jasperreports.awt.ignore.missing.font = true

dans votre fichier jasperreports.properties.

Jasper cesse de trouver une police

3
Enrico Sanna

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.

2
Stephen

peut faire vos polices personnalisées via iReport et convertir comme des fichiers jars 

2
mavirroco

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
2
Ujjwal

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.

1
Yassir

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)

1
rushabh

Pour Debian

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.

1
d-_-b

Solution en 2 étapes (si vous utilisez centOS)

  1. 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
    
  2. Installez le paquetage rpm.

    [root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
    
0
Prasanna Venkat

En fait, j'ai résolu ce problème d'une manière très simple

  1. allez dans votrehome path, comme /root
  2. créer un dossier nommé.fonts
  3. copiez votre all your font files dans .fonts, vous pouvez copier la police de C:\windows\fonts si vous utilisez Windows.
  4. Sudo apt-get install fontconfig
  5. fc-cache –fv pour remettre en cache les polices.
0
Neeson.Z

Copiez vos polices dans le répertoire suivant JDK_HOME\jre\lib\fonts

0
Ahmad Zyoud

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

rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

Après cela, j'ai besoin de redémarrer mon système CentOS6.

Source: http://mscorefonts2.sourceforge.net/

0
Fernando Pie