首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iReport外部字体

iReport外部字体
EN

Stack Overflow用户
提问于 2012-02-13 13:46:03
回答 1查看 23.4K关注 0票数 5

我正在尝试在PDF文档中使用外部字体。通过设置->字体->安装新字体后,我可以在iReport中使用它。

当我将新字体导出为扩展并将该jar添加到java项目的类路径中时,出现的问题是无法生成PDF,并且失败

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

我做错了什么?谢谢

UPD#1:

jasperreports_extensions.properties

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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文件。我刚刚将那个jar添加到了类路径中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-14 16:20:49

这是我的工作示例。

字体定义文件(我从字体的jar文件中挖掘出来):

代码语言:javascript
复制
<?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代码:

代码语言:javascript
复制
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.fontnet.sf.jasperreports.default.font.name

生成的pdf文件使用此字体(在此示例中为Arial)。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9256114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档