2012-02-13 11 views
5

Sto tentando di utilizzare caratteri esterni nel documento PDF. Non ho problemi ad usarlo in iReport dopo averlo installato tramite Impostazioni -> Caratteri -> Installa nuovo font.iReport carattere esterno

Il problema che quando esporto il nuovo font come estensione e l'aggiunta di quel vaso di classpath del progetto Java - il PDF non poteva essere generato e non riesce con

JRFontNotFoundException: Font 'Arial Custom' is not available to the JVM exception

Quello che sto facendo male? Grazie

UPD # 1:

jasperreports_extensions.properties

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

fontsfamily1329192368547.xml

directory
<?xml version="1.0" encoding="UTF-8"?> 
<fontFamilies> 

    <fontFamily name="Arial Custom"> 
     <normal><![CDATA[fonts/arial.ttf]]></normal> 
     <bold><![CDATA[fonts/arialbd.ttf]]></bold> 
     <italic><![CDATA[fonts/ariali.ttf]]></italic> 
     <boldItalic><![CDATA[fonts/arialbi.ttf]]></boldItalic> 
     <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding> 
     <pdfEmbedded><![CDATA[true]]></pdfEmbedded> 
     <locales> 
       <locale><![CDATA[en_US]]></locale> 
     </locales> 
    </fontFamily>  

</fontFamilies> 

caratteri include tutti i file TTF. Ho appena aggiunto quel barattolo al classpath.

+0

Puoi pubblicare il file xml con la definizione del font e lo snippet del file jrxml in cui viene utilizzato questo font? –

+0

Grazie per la risposta. Vedi gli aggiornamenti in questione – nKognito

+0

Alex ha chiesto una parte del file .jrxml. Non l'hai pubblicato. – mdahlman

risposta

12

Ecco il mio esempio di lavoro.

Il file di definizione dei caratteri (scavo dal file jar del font):

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

lima il vaso è nel classpath dell'applicazione.

E qui è il mio codice Java:

String defaultPDFFont = "Arial"; 

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

JasperReport jasperReport = JasperCompileManager.compileReport(reportSource); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params); 

JasperExportManager.exportReportToPdfFile(jasperPrint, outputFileName); 

ho impostare la proprietà net.sf.jasperreports.awt.ignore.missing.font per impedire l'errore che avete (JRFontNotFoundException: Font 'Arial Custom' is not available to the JVM exception) nel caso in cui il tipo di carattere è mancante. E ho impostato la proprietà net.sf.jasperreports.default.font.name per determinare il carattere che verrà utilizzato nel file PDF risultante.

È possibile leggere informazioni su questa proprietà: net.sf.jasperreports.awt.ignore.missing.font e net.sf.jasperreports.default.font.name.

Il file PDF risultante utilizza questo tipo di carattere (Arial in questo esempio).

+0

Grazie! Ho trovato dove il mio problema era - ho installato font come incorporato. – nKognito

+0

@nKognito benvenuto :) –

+0

@AlexK grazie mille !!!! – Kaiser

Problemi correlati