Il carattere non è disponibile per JVM con Jasper Reports

Sto cercando di generare report con DynamicJasper, ma sto ricevendo il seguente errore:

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

msttcorefonts è installato, ma suppongo che JVM non stia usando alcun carattere da esso.

Sto usando Ubuntu 10.04.

Come posso risolvere questo?

Ho provato a installare mscorefonts, ma il pacchetto è stato installato e aggiornato.

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

Ho provato a cercare il carattere nel filesystem, con:

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

Questa cartella aveva solo il README, con le istruzioni corrette su come installare.

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

Hai bisogno di una connessione internet per questo:

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

Ho reinstallato ttf-mscorefonts-installer (come mostrato sopra, assicurandomi di accettare l’EULA!) E il problema è stato risolto.

Io uso IReport per installare il font:

strumenti -> opzioni -> caratteri -> fai clic su Installa carattere

Quindi selezionare il carattere e fare clic

-> esporta come estensione e digita il nome myfont.jar

aggiungi questo barattolo e anche spring.jar * al tuo percorso di costruzione.

* copia spring.jar da Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext

JasperReports genera una JRFontNotFoundException nel caso in cui il font utilizzato all’interno di un modello di report non sia disponibile per JVM come font di sistema o font proveniente da un’estensione di carattere JR. Ciò garantisce che tutti i problemi causati dalle discrepanze delle metriche dei caratteri siano evitati e abbiamo un allarme tempestivo sull’incoerenza.

Rapporti Jasper sta cercando di aiutarti nello sviluppo del tuo rapporto, affermando che non può esportare correttamente il tuo rapporto poiché non riesce a trovare il carattere definito in TextField o StaticText

  

Sì, puoi disabilitarlo impostando net.sf.jasperreports.awt.ignore.missing.font su false ma avrai delle incoerenze nell’export .

Sì, è ansible installare il font come font di sistema JVM (ma è necessario farlo su ogni PC utilizzato che può generare report e si possono ancora avere problemi di codifica ).

Il modo corretto!

Usa le estensioni dei caratteri ! , se ti piace crearne di tuoi (vedi link sotto), i report jasper distribuiscono anche un jar predefinito per l’estensione dei font ( jasperreports-fonts-xxxjar ), che supporta fontName DejaVu Sans , DejaVu Serif e DejaVu Sans Mono

  

Dalla guida definitiva di JasperReport:

Incoraggiamo vivamente le persone a utilizzare solo caratteri derivati ​​da estensioni di caratteri, poiché questo è l’unico modo per assicurarsi che i caratteri siano disponibili per l’applicazione quando i report vengono eseguiti in fase di runtime. L’uso dei caratteri di sistema comporta sempre il rischio che i report non funzionino correttamente quando vengono distribuiti su una nuova macchina che potrebbe non avere quei font installati

Link su StackOverflow su come visualizzare correttamente i font in pdf

Lista di controllo su come rendere il font correttamente in pdf

Genera estensioni font con JasperSoft Studio

Genera estensioni font con iReport

Per CentOS:

wget msttcorefonts

Poi:

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

Dopo tutto, riavvia JVM.

Mille grazie alle risposte precedenti. sudo apt-get install msttcorefonts funziona (sul nostro ambiente di sviluppo di Ubuntu), ma non è una soluzione molto buona.

Invece, abbiamo raggruppato i caratteri con la nostra applicazione basata su questo suggerimento . Il loro file JAR raggruppa i seguenti caratteri,

  • Arial
  • Times New Roman
  • Courier New
  • Comic Sans MS
  • Georgia
  • Verdana
  • Monospaced

Link diretto per scaricare jar: Maven ver 1.0. DynamicFonts

Ci sono tre metodi per evitare questo problema.

Metodo 1: impostando ignora la proprietà font mancante.

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

oppure puoi impostare questa proprietà inserendo la seguente riga nel file .jrxml.

  

Metodo 2: impostando la proprietà del font di default.

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

oppure puoi impostare questa proprietà inserendo la seguente riga nel file .jrxml.

  

Metodo 3: aggiungendo la proprietà font mancante.

Innanzitutto installa i font mancanti in IReport selezionando “Strumenti >> Opzioni >> Caratteri >> Installa carattere”, quindi seleziona il carattere di tutti e Esporta questo facendo clic su “Esporta come estensione” con estensione .jar.

È ansible utilizzare questo jar per Jasperreports-font.XXXjar che sarà presente nella libreria del progetto o classpath.

Ho risolto questo problema scegliendo ‘SansSerif’ o ‘Serif’ solo e non ‘Arial’ o ‘Times New Roman’.

Prova ad aggiungere la linea

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

al tuo file jasperreports.properties.

Jasper smette di trovare un font

puoi creare i tuoi font personalizzati tramite iReport e convertirli come file jar

Puoi farlo installando i font, cioè ovunque desideri eseguire quella particolare applicazione. Il modo più semplice è aggiungere questa linea bl sul file jrxml:

   

Spero che sia d’aiuto.

Ho affrontato il problema con la mia applicazione web basata su Spring 3 e distribuita su Weblogic 10.3 su Oracle Linux 6. La soluzione citata al link non funzionava per me.

Ho dovuto eseguire i seguenti passaggi: 1. Copiare i file dei font Arial * .ttf nella directory JROCKIT_JAVA_HOME / jre / lib / fonts 2. Creare le voci dei font in fontconfig.properties.src 3. Riavviare il cluster dalla console di 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

Inserisci

 non-free contrib 

per deb e deb-src in /etc/apt/sources.list ie:

 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 

Ovviamente dovrai riavviare jasperserver. vale a dire:

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

Cambia per la tua versione / percorso.

Copia i tuoi caratteri nella seguente directory JDK_HOME \ jre \ lib \ fonts

Crea report jasper in più lingue (Unicode)

1) Installa font in ireport desginer

2) crea l’estensione del carattere (lo useremo nel classpath delle applicazioni)

3) installa font su os (opzionale)

4) incollare tutti i file .ttf del font nella directory jre-> lib-> fonts (altrimenti l’applicazione web genererà il font error non disponibile per JVM)

In realtà ho risolto questo problema in un modo molto semplice

  1. vai al tuo home path , come /root
  2. crea una cartella denominata .fonts
  3. copia all your font files in .fonts , puoi copiare il font da C:\windows\fonts se usi windows.
  4. sudo apt-get install fontconfig
  5. fc-cache –fv per ribuild le cache dei font.

Hey Hai problemi a visualizzare i documenti prodotti su Windows?

Puoi provare una soluzione fine facile:

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

Dopo questo ho bisogno di riavviare il mio sistema CentOS6.

Fonte: http://mscorefonts2.sourceforge.net/

Soluzione in 2 passaggi (se stai usando centOS)

  1. Scarica il pacchetto rpm di Microsoft core fonts.

     [root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm 
  2. Installa il pacchetto rpm.

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