web-dev-qa-db-de.com

Die JVM steht in Jasper Reports nicht mit Schrift zur Verfügung

Ich versuche, einen Bericht mit DynamicJasper zu generieren, erhalte jedoch die folgende Fehlermeldung:

net.sf.jasperreports.engine.util.JRFontNotFoundException:  
                                 Font 'Arial' is not available to the JVM.   

msttcorefonts ist installiert, aber die JVM verwendet vermutlich keine Zeichensätze. 

Ich verwende Ubuntu 10.04. 

Wie kann ich das beheben?

72
Andrew

Ich habe versucht, mscorefonts zu installieren, aber das Paket war installiert und auf dem neuesten Stand.

Sudo apt-get update
Sudo apt-get install ttf-mscorefonts-installer

Ich habe versucht, nach der Schrift im Dateisystem zu suchen, mit:

ls /usr/share/fonts/truetype/msttcorefonts/

Dieser Ordner hatte gerade die README mit den richtigen Anweisungen zur Installation. 

cat /usr/share/fonts/truetype/msttcorefonts/README

Sie benötigen dafür eine Internetverbindung:

Sudo apt-get install --reinstall ttf-mscorefonts-installer

Ich habe ttf-mscorefonts-installer erneut installiert (wie oben gezeigt, um sicherzustellen, dass die EULA akzeptiert wird!).

57
Braully Rocha

JasperReports gibt ein JRFontNotFoundException aus, wenn die in einer Berichtsvorlage verwendete Schriftart für die JVM nicht als Systemschriftart oder als von einer JR-Schriftartenerweiterung stammende Schrift verfügbar ist. Dadurch wird sichergestellt, dass alle Probleme, die durch Inkongruenzen der Schriftartmetriken verursacht werden, vermieden werden, und wir haben eine frühzeitige Warnung vor der Inkonsistenz.

Jasper-Berichte versuchen, Ihnen zu helfen in Ihrer Berichtsentwicklung, und geben an, dass der Bericht nicht ordnungsgemäß exportiert werden kann, da er die in TextField oder StaticText definierte Schriftart nicht finden kann. 

<font fontName="Arial"/>

Ja, Sie können deaktivieren durch Setzen von net.sf.jasperreports.awt.ignore.missing.font auf false setzen, aber Sie haben Exportinkonsistenzen.

Ja, Sie können install die Schrift als JVM-Systemschriftart (aber Sie müssen dies auf jedem PC tun, der einen Bericht generiert, und Sie können immer noch Probleme mit der Kodierunghaben).

Der richtige Weg!

Verwenden Sie Font Extensions !, Wenn Sie Ihre eigenen erstellen möchten (siehe Link unten), verteilt Jasper Reports auch eine Standard-jar-Erweiterung (jasperreports-fonts-x.x.x.jar), die fontName DejaVu Sans, DejaVu Serif und DejaVu Sans Mono unterstützt.

<font fontName="DejaVu Sans"/>

Aus dem JasperReport Ultimate Guide:

Es wird dringend empfohlen, nur Schriftarten zu verwenden, die von der Schriftart .__ abgeleitet sind. Erweiterungen, denn nur so können Sie sicherstellen, dass die Schriftarten steht der Anwendung zur Verfügung, wenn die Berichte unter .__ ausgeführt werden. Laufzeit. Die Verwendung von Systemzeichensätzen birgt immer die Gefahr, dass die Berichte nicht ordnungsgemäß funktionieren, wenn auf einem neuen Computer bereitgestellt, der möglicherweise nicht über .__ verfügt. die installierten Schriftarten

Links zu StackOverflow zur korrekten Darstellung von Schriftarten in PDF

Checkliste zum korrekten Rendern der Schrift in pdf

Generieren Sie Font-Erweiterungen mit JasperSoft Studio

Generiere Font-Erweiterungen mit iReport

23
Petter Friberg

Ich benutze IReport, um die Schrift zu installieren:

tools -> Optionen -> Schriftarten -> Klicken Sie auf die Installationsschriftart

Wählen Sie dann die Schriftart aus und klicken Sie auf 

-> Export als Erweiterung und geben Sie den Namen myfont.jar ein

füge dieses Glas hinzu und auch spring.jar* zu Ihrem Build-Pfad.

* Kopieren Sie spring.jar aus Jaspersoft\iReport-3.7.0\ireport\modules\ext

21
juan

Für CentOS:

wget msttcorefonts

Dann:

tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf  /usr/share/fonts/TTF/
fc-cache -fv 

Starten Sie JVM schließlich neu.

12
Ricardo Carmo

Sudo apt-get install msttcorefonts funktioniert (in unserer Ubuntu-Entwicklungsumgebung), ist aber keine sehr gute Lösung. 

Stattdessen haben wir die Schriftarten mit unserer Anwendung gebündelt basierend auf diesem Tipp . Ihre JAR-Datei enthält die folgenden Schriftarten:

  • Arial
  • Times New Roman
  • Kurier Neu 
  • Comic Sans MS 
  • Georgia
  • Verdana
  • Monospaced

Direkter Link zum Herunterladen von jar: Maven ver 1.0. DynamicFonts

11
user799188

Es gibt drei Methoden, um ein solches Problem zu vermeiden.

Methode 1: durch das Ignorieren der fehlenden Schriftart-Eigenschaft.

JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");

sie können diese Eigenschaft auch festlegen, indem Sie die folgende Zeile in die .jrxml-Datei eingeben.

<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>

Methode 2: durch Festlegen der Standardschriftart.

JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif");

sie können diese Eigenschaft auch festlegen, indem Sie die folgende Zeile in die .jrxml-Datei eingeben.

<property name="net.sf.jasperreports.default.font.name" value="Sans Serif"/>

Methode 3: durch Hinzufügen einer fehlenden Schriftarteneigenschaft.  

Installieren Sie zunächst fehlende Schriftarten in IReport, indem Sie "Extras >> Optionen >> Schriftarten >> Schrift installieren" auswählen, dann die gesamte Schriftart auswählen und diese exportieren.

Sie können diese jar für Jasperreports-font.X.X.X.jar verwenden, die in Ihrer Projektbibliothek oder Ihrem Klassenpfad vorhanden ist. 

6
Mayur Bhokase

Ich löste dieses Problem, indem ich nur "SansSerif" oder "Serif" und nicht "Arial" oder "Times New Roman" wählte. 

4
lkdg

Versuchen Sie, die Zeile hinzuzufügen

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

in Ihre jasperreports.properties -Datei.

Jasper hört auf, eine Schrift zu finden

3
Enrico Sanna

Sie können dies tun, indem Sie Schriftarten installieren. Dies bedeutet, dass Sie diese bestimmte Anwendung überall ausführen möchten. Die einfachste Möglichkeit ist, diese bl-Zeile in Ihre jrxml-Datei einzufügen:

 <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>

Ich hoffe es hilft.

2
Stephen

sie können Ihre eigenen Schriftarten über iReport erstellen und wie JAR-Dateien konvertieren 

2
mavirroco

Ich war mit meiner auf Spring 3 basierenden Webanwendung konfrontiert und unter Weblogic 10.3 unter Oracle Linux 6 implementiert. Die unter link erwähnte Lösung hat bei mir nicht funktioniert.

Ich musste die folgenden Schritte unternehmen - 1. Kopieren Sie die Arial * .ttf-Schriftdateien in das Verzeichnis JROCKIT_Java_HOME/jre/lib/fonts 2. Nehmen Sie in fontconfig.properties.src .__ Einträge für die Schriftarten vor. 3. Starten Sie den Cluster von der Weblogic-Konsole aus neu

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

Wenn Sie in Ihrem Projekt maven verwenden, können Sie einfach die Jasper-Fonts-Abhängigkeit zu pom.xml hinzufügen:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.8.1</version>
</dependency>

Das Installieren der fehlenden Schrift auf dem System mag eine funktionierende Lösung sein, aber für mich war es nicht wünschenswert, die fehlenden Schriftarten nach jeder Bereitstellung auf einem neuen Server zu installieren. Stattdessen habe ich mich dafür entschieden, die Schriftarten in die Anwendung einzubetten.

Grüße.

1
Yassir

Jasper-Bericht in mehreren Sprachen erstellen (Unicode)

1) Installieren Sie die Schrift in ireport desginer

2) Erstellen Sie die Erweiterung der Schriftart (wir werden sie in Klassenpfad der Anwendung verwenden)

3) installiere Schrift auf os (optional)

4) Fügen Sie alle .ttf-Schriftarten in das Verzeichnis jre-> lib-> fonts ein.

1
rushabh

Für Debian

hinzufügen

non-free contrib

deb und deb-src in /etc/apt/sources.list, dh:

deb http://ftp.debian.org/debian/ squeeze main non-free contrib
deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib

Dann

apt-get update
apt-get install msttcorefonts

Natürlich müssen Sie Jasperserver neu starten. dh:

/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart

Ändern Sie für Ihre Version/Pfad.

1
d-_-b

Lösung in 2 Schritten (wenn Sie centOS verwenden)

  1. Laden Sie das RP-Paket für Microsoft-Kernschriften herunter.

    [[email protected]~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
    
  2. RPM-Paket installieren.

    [[email protected]~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
    
0
Prasanna Venkat

Ich habe dieses Problem auf sehr einfache Weise behoben

  1. gehe zu deinemhome path, wie /root
  2. erstellen Sie einen Ordner mit dem Namen.fonts
  3. kopieren Sie Ihren all your font files in .fonts. Sie können die Schriftart aus C:\windows\fonts kopieren, wenn Sie Windows verwenden.
  4. Sudo apt-get install fontconfig
  5. fc-cache –fv, um Zeichensatz-Caches neu zu erstellen.
0
Neeson.Z

Kopieren Sie Ihre Schriftarten in das folgende Verzeichnis JDK_HOME\jre\lib\fonts

0
Ahmad Zyoud

Haben Sie Probleme beim Anzeigen von Dokumenten, die unter Windows erstellt wurden?

Sie können eine feine Lösung einfach ausprobieren:

yum install curl cabextract xorg-x11-font-utils fontconfig

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

Danach muss ich mein System CentOS6 neu starten.

Quelle: http://mscorefonts2.sourceforge.net/

0
Fernando Pie