Il carattere non è disponibile per la JVM con Jasper Reports
-
26-09-2019 - |
Domanda
Sto cercando di generare un report con DynamicJasper, ma ricevo il seguente errore:
net.sf.jasperreports.engine.util.JRFontNotFoundException:
Font 'Arial' is not available to the JVM.
msttcorefonts è installato, ma immagino che la JVM non ne utilizzi alcun carattere.
Sto usando Ubuntu 10.04.
Come posso risolvere questo problema?
Soluzione
Ho provato a installare mscorefonts, ma il pacchetto è stato installato e up-to-date.
sudo apt-get update
sudo apt-get install ttf-mscorefonts-installer
Ho provato a cercare per il font nel file system, con:
ls /usr/share/fonts/truetype/msttcorefonts/
Questa cartella appena avuto il README, con le istruzioni corrette su come installare.
cat /usr/share/fonts/truetype/msttcorefonts/README
È necessaria una connessione internet per questo:
sudo apt-get install --reinstall ttf-mscorefonts-installer
ho ri-installato ttf-mscorefonts-installer
(come sopra indicato, facendo attenzione ad accettare l'EULA!) E il problema è stato risolto.
Altri suggerimenti
JasperReports solleva a JRFontNotFoundException nel caso in cui il carattere utilizzato all'interno di un modello di report non sia disponibile per la JVM come carattere di sistema o come carattere proveniente da un'estensione del carattere JR.Ciò garantisce che tutti i problemi causati dalla mancata corrispondenza delle metriche dei caratteri vengano evitati e riceviamo un avviso tempestivo sull'incoerenza.
Jasper riferisce che ci sta provando Aiutarti nello sviluppo del tuo report, affermando che non può esportare correttamente il tuo report poiché non riesce a trovare il carattere definito in TextField
O StaticText
<font fontName="Arial"/>
si, puoi disattivare questo impostando net.sf.jasperreports.awt.ignore.missing.font vero ma lo avrai incoerenze nelle esportazioni.
si, puoi installare il carattere come carattere di sistema JVM (ma è necessario farlo su ogni PC utilizzato che può generare report ed è comunque possibile avere problemi di codifica).
Il modo corretto!
Utilizzo Estensioni dei caratteri!, se desideri crearne uno tuo (vedi link sotto), jasper report distribuisce anche un jar di estensione dei caratteri predefinito (jasperreports-fonts-x.x.x.jar
), che supporta fontName DejaVu Sans
, DejaVu Serif
E DejaVu Sans Mono
<font fontName="DejaVu Sans"/>
Dalla guida definitiva di JasperReport:
Incoraggiamo fortemente le persone a utilizzare solo caratteri derivati dalle estensioni dei caratteri, perché questo è l'unico modo per assicurarsi che i caratteri siano disponibili per l'applicazione quando i rapporti vengono eseguiti in fase di esecuzione.L'uso dei caratteri di sistema porta sempre il rischio per i rapporti di non funzionare correttamente quando distribuiti su una nuova macchina che potrebbe non avere quei caratteri installati
Collegamenti su StackOverflow su come eseguire il rendering corretto dei caratteri in PDF
Lista di controllo su come rendere correttamente il carattere in pdf
Io uso IReport installare font:
Strumenti -> Opzioni -> font -> fare clic su Installa carattere
Quindi selezionare il tipo di carattere e fare clic su
-> Esporta come interno e il nome tipo myfont.jar
aggiungere questo barattolo e anche spring.jar * per il vostro percorso di generazione.
* copia spring.jar da Jaspersoft \ iReport-3.7.0 \ iReport \ moduli \ ext
Per CentOS:
Quindi:
tar -zxvf msttcorefonts.tar.gz
cp msttcorefonts/*.ttf /usr/share/fonts/TTF/
fc-cache -fv
Dopo tutto, riavviare JVM.
opere sudo apt-get install msttcorefonts
(sul nostro ambiente di sviluppo di Ubuntu), ma non è una soluzione molto buona.
Invece, abbiamo in bundle i font con la nostra applicazione sulla base di questo punta. La loro file JAR raggruppa i seguenti tipi di carattere,
- Arial
- Times New Roman
- Courier New
- Comic Sans MS
- Georgia
- Verdana
- Monospaced
Direct Link per il download jar: Maven ver 1.0. DynamicFonts
Ci sono tre metodo per evitare un tale problema.
Metodo 1:. Proprietà dei font impostando ignore mancante
JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
oppure è possibile impostare questa proprietà inserendo seguente riga nel .jrxml file.
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
Metodo 2:. Impostando la proprietà font di default
JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif");
oppure è possibile impostare questa proprietà inserendo seguente riga nel .jrxml file.
<property name="net.sf.jasperreports.default.font.name" value="Sans Serif"/>
Metodo 3:. Con l'aggiunta di proprietà font mancante
In primo luogo installare i font in IReport mancante selezionando "Strumenti >> Opzioni >> >> Fonts Installare Font", quindi selezionare il tipo di carattere e tutti Esportare questa Cliccando su "Esporta come Extension" con .jar di estensione.
È possibile utilizzare questo barattolo per JasperReports-font.X.X.X.jar che sarà presente nella libreria di progetto o il percorso di classe.
Ho risolto questo scegliendo 'SansSerif' o 'Serif' e non 'Arial' o 'Times New Roman'.
può rendere il vostro font personalizzati tramite iReport e la conversione di file, come vasetti
Prova ad aggiungere la riga
net.sf.jasperreports.awt.ignore.missing.font = true
al vostro file jasperreports.properties.
È possibile farlo con dei font, che significa ovunque si desidera eseguire quella particolare applicazione. modo più semplice è sufficiente aggiungere questa riga al vostro file bl jrxml:
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
La speranza aiuta.
I affrontato il problema con la mia applicazione web basata su Spring 3 e distribuito su Weblogic 10.3 su Oracle Linux 6. La soluzione accennato link non ha funzionato per me.
Ho dovuto adottare le seguenti misure - 1. Copiare il file di font Arial * .ttf a JROCKIT_JAVA_HOME / / directory jre lib / fonts 2. voci fanno del font in fontconfig.properties.src 3. Riavviare il cluster da 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
Per Debian
Aggiungi
non-free contrib
per deb e deb-src in /etc/apt/sources.list cioè:
deb http://ftp.debian.org/debian/ squeeze main non-free contrib
deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib
Poi
apt-get update
apt-get install msttcorefonts
Naturalmente avrete bisogno di riavviare JasperServer. vale a dire:
/opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart
Cambia per la versione / percorso.
Crea Jasper report in più lingue (Unicode)
1) Installare font nel iReport Desginer
2) creare estensione del tipo di carattere (lo useremo nelle applicazioni classpath)
3) l'installazione di font su OS (opzionale)
4) incollare tutte .ttf di carattere in jre-> liberatore> directory dei font (altrimenti applicazione web getterà carattere errore non è disponibile per JVM)
Se si utilizza Maven nel progetto, si può semplicemente aggiungere la dipendenza Jasper-font per pom.xml:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.8.1</version>
</dependency>
Installazione del carattere mancante sul sistema può essere una soluzione di lavoro, ma non per me, io non voglio avere per installare i font mancanti dopo ogni distribuzione in un nuovo server, invece ho optato per incorporare il tipo di carattere con l'applicazione .
Saluti.
In realtà ho risolto questo problema in un modo molto semplice
- vai al tuo
home path
, come/root
- creare una cartella denominata
.fonts
- copiare il
all your font files
a.fonts
, è possibile copiare il tipo di carattere daC:\windows\fonts
Se si utilizza Windows. -
sudo apt-get install fontconfig
-
fc-cache –fv
ai font rebuid cache.
Soluzione in 2 fasi (se si utilizza CentOS)
-
Scarica il pacchetto di Microsoft font principali rpm.
[root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
-
Installare il pacchetto rpm.
[root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
Copiare i font sul seguente directory JDK_HOME \ jre \ lib \ fonts
Ehi problemi di visualizzazione documenti prodotti su Windows?
Si può provare una soluzione multa facile:
yum install ricciolo cabextract xorg-x11-font-utils fontconfig
Dopo questo ho bisogno riavvio il mio sistema CentOS6.