2014-08-28 15 views
7

Sono di fronte al problema, che JasperReports non riesce ancora a trovare il carattere Arial.JasperReports 5.6: Impossibile caricare il seguente carattere

Ho creato un semplice Progetto Maven con la seguente struttura e l'ho incluso nella mia applicazione principale. Quindi l'applicazione principale contiene il JAR installato nel classpath:

- jasperreports_extension.properties 
- fonts 
    |-> arial 
    |-> ariali.ttf 
    |-> arialbi.ttf 
    |-> arialbd.ttf 
    |-> arial.ttf 
    |-> fonts.xml 

Ma io continuo a vedere seguente eccezione durante l'esportazione report in formato PDF.

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : 
pdfFontName : Arial 
pdfEncoding : Identity-H 
isPdfEmbedded : true 

jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory 
net.sf.jasperreports.extension.simple.font.families.arial=fonts/fonts.xml 

fonts.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<fontFamilies> 
    <fontFamily name="Arial"> 
     <normal>fonts/arial/arial.ttf</normal> 
     <bold>fonts/arial/arialbd.ttf</bold> 
     <italic>fonts/arial/ariali.ttf</italic> 
     <boldItalic>fonts/arial/arialbi.ttf</boldItalic> 
     <pdfEncoding>Identity-H</pdfEncoding> 
     <pdfEmbedded>true</pdfEmbedded> 
    </fontFamily> 
</fontFamilies> 

Template

<font fontName="Arial" size="8" pdfFontName="Arial" pdfEncoding="Identity-H" isPdfEmbedded="true"/> 
+0

Quale versione di report jasper stai usando? – Skizzo

+0

JasperReport e iReport versione: 5.6.0 – Tunguska

+0

Ho anche avuto il tuo stesso problema con la 5.5.0, e l'ho risolto passando a 5.0.0 – Skizzo

risposta

2

Il problema era il modello stesso: A un font-tag di proprietà <fontName> mancava:

non funziona:

<font size="12" isBold="true" pdfFontName="Arial"/> 

Fa lavoro:

<font fontName="Arial" size="12" isBold="true" pdfFontName="Arial" pdfEncoding="Identity-H" isPdfEmbedded="true"/> 
+1

non capisco. Ho lo stesso problema ma solo su Linux. Su Windows funziona bene, quindi, non penso che il problema sia il modello, ma il caricamento dell'estensione. – Gustavo

+0

@Gustavo stranamente, mi sta succedendo su Windows, non su Linux. A corto di cose da provare ... – Alfabravo

0

un'altra soluzione Worked For Me è:

JRProperties.setProperty ("net. sf.jasperreports.default.pdf.font.name "," Helvetica "); JRProperties.setProperty ("net.sf.jasperreports.default.pdf.encoding", "UTF-8"); JRProperties.setProperty ("net.sf.jasperreports.default.pdf.embedded", "true");

Se si impostano i parametri dal lato java, è necessario specificare font.name e Helvetica salva la giornata. Ho provato qui Arial ma ho lanciato lo stesso errore.

0

Copiare il file font (* .ttf) nella cartella:

/path/to/app/WEB-INF/classes/***HERE*** 

È app otterrà i font da qui :)

0

È necessario dare il nome corretto del carattere per il Esportatore PDF. I tuoi font sono presenti nel jar dei caratteri incorporati. Non è necessario mettere di nuovo nella directory classi ;-)

C'è il contenuto corretto fonts.xml per PDF esportatore (forse i nomi sono case sensitive, attenzione):

<?xml version="1.0" encoding="UTF-8"?> 
<fontFamilies> 
<fontFamily name="Arial"> 
    <normal> 
     <ttf>fonts/Arial/ARIAL.TTF</ttf> 
     <pdf>fonts/Arial/ARIAL.TTF</pdf> 
    </normal> 
    <bold> 
     <ttf>fonts/Arial/ARIALBD.TTF</ttf> 
     <pdf>fonts/Arial/ARIALBD.TTF</pdf> 
    </bold> 
    <italic> 
     <ttf>fonts/Arial/ARIALI.TTF</ttf> 
     <pdf>fonts/Arial/ARIALI.TTF</pdf> 
    </italic> 
    <boldItalic> 
     <ttf>fonts/Arial/ARIALBI.TTF</ttf> 
     <pdf>fonts/Arial/ARIALBI.TTF</pdf> 
    </boldItalic> 
    <pdfEncoding>Cp1252</pdfEncoding> 
    <pdfEmbedded>true</pdfEmbedded> 
    <exportFonts> 
    </exportFonts> 
</fontFamily> 
</fontFamilies> 

Spero che questo aiuto.

Saluti, T.

Problemi correlati