iReport внешний шрифт - PullRequest
       17

iReport внешний шрифт

5 голосов
/ 13 февраля 2012

Я пытаюсь использовать внешний шрифт в документе PDF.У меня нет проблем с его использованием в iReport после его установки через Настройки -> Шрифты -> Установить новый шрифт.

Проблема в том, что когда я экспортирую новый шрифт в качестве расширения и добавляю этот jar-файл в classpath проекта java - не удается создать PDF-файл и происходит сбой с

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

Что я делаю не так?Спасибо

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>

Каталог шрифтов содержит все файлы ttf.Я только что добавил эту банку в classpath.

1 Ответ

12 голосов
/ 14 февраля 2012

Вот мой рабочий образец.

Файл определения шрифта (я копаю его из файла jar шрифта):

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

Файл jar находится в пути к классам приложения.

А вот мой код 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);

Я установил свойство net.sf.jasperreports.awt.ignore.missing.font, чтобы предотвратить возникшую ошибку (JRFontNotFoundException: Font 'Arial Custom' is not available to the JVM exception) в случае отсутствия шрифта. И я установил свойство net.sf.jasperreports.default.font.name для определения шрифта, который будет использоваться в результирующем PDF-файле.

Вы можете прочитать информацию об этих свойствах: net.sf.jasperreports.awt.ignore.missing.font и net.sf.jasperreports.default.font.name .

Полученный файл PDF использует этот шрифт (Arial в этом примере).

...