2012-02-13 21 views
5

Próbuję użyć zewnętrznej czcionki w dokumencie PDF. Nie mam problemu z używaniem go w iReporcie po zainstalowaniu go w Ustawieniach -> Czcionki -> Zainstaluj nową czcionkę.Zewnętrzna czcionka iReport

Problem, że kiedy wyeksportować nową czcionkę jako rozszerzenie i dodając, że słoik do ścieżki klasy java projektu - PDF nie może być wygenerowany i nie z

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

Co robię źle? Dziękuję

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

<?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> 

czcionek katalog zawiera wszystkie pliki ttf. Właśnie dodałem ten słoik do ścieżki klas.

+0

Czy możesz opublikować plik xml z definicją czcionki i fragmentem pliku jrxml, w którym używana jest ta czcionka? –

+0

Dziękuję za odpowiedź. Zobacz aktualizacje w pytaniu – nKognito

+0

Alex poprosił o kawałek .jrxml. Nie opublikowałeś tego. – mdahlman

Odpowiedz

12

Oto moja próbka robocza.

Plik definicji czcionki (wbijam go z pliku jar fontu):

<?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> 

Plik słoik znajduje się w ścieżce klasy aplikacji.

I tu jest mój kod 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); 

ustawić właściwość net.sf.jasperreports.awt.ignore.missing.font aby zapobiec błąd (JRFontNotFoundException: Font 'Arial Custom' is not available to the JVM exception) w przypadku, gdy czcionka jest zaginionych. I ustawię właściwość, aby określić czcionkę, która będzie używana w wynikowym pliku PDF.

Możesz przeczytać informacje na temat tych właściwości: net.sf.jasperreports.awt.ignore.missing.font i net.sf.jasperreports.default.font.name.

Wynikowy plik pdf używa tej czcionki (Arial w tym przykładzie).

+0

Dzięki! Znalazłem swój problem - zainstalowałem czcionkę jako osadzoną. – nKognito

+0

@NKognito welcome :) –

+0

@AlexK wielkie dzięki !!!! – Kaiser