字体扩展名不适用于OTF字体 - JasperReports 4.7.1

时间:2014-02-25 22:07:19

标签: jasper-reports ireport opentype

我按照我在互联网上找到的所有示例将 OTF 字体嵌入到生成的PDF中但它不起作用。我使用 iReport 创建了一个字体扩展名.jar(我还手动为字体创建了一个maven jar)但它不能与 OTF 字体一起使用。我还确保 jasper-fonts-extension.jar 在类路径上。我知道,因为当我用其他 TTF 字体替换这个字体时,它就可以了。

我正在运行 -

Jasper Reports & iReport Version : 4.7.1
Oracle Java SDK 7
Ubuntu 12.04

我试图嵌入 PDF 的字体 - Myraid Pro( OTF

我的fonts.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
   <fontFamily name="Myriad Pro">
   <normal><![CDATA[fonts/MyriadPro-Regular.otf]]></normal>
   <bold><![CDATA[fonts/MYRIADPRO-BOLD.OTF]]></bold>
   <italic><![CDATA[fonts/MYRIADPRO-CONDIT.OTF]]></italic>
   <boldItalic><![CDATA[fonts/MYRIADPRO-BOLDIT.OTF]]></boldItalic>
   <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
   </fontFamily>
   <fontFamily name="Myriad Pro Lite">
      <normal><![CDATA[fonts/MYRIADPRO-COND.OTF]]></normal>
      <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
   </fontFamily>
</fontFamilies>

这适用于其他 TTF 字体但是当我切换到MyraidPro字体时,我收到以下错误

Exception in thread "main" java.lang.ExceptionInInitializerError
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:122)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:464)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:861)
at com.qedrix.formbuilder.pojo.JsonForm.main(JsonForm.java:141)

引起:net.sf.jasperreports.engine.util.JRFontNotFoundException:字体'fonts / MyriadPro-Regular.otf'不可用于JVM。

我还按照以下链接中给出的步骤进行操作:here

如果这与 OTF 字体有关,我想知道为什么在 Java 中导出 PDF 时它不起作用在 iReport的预览模式?

2 个答案:

答案 0 :(得分:2)

我认为这是JasperReports中的一个小错误。 &#34; fonts.xml&#34;

中的条目

<normal><ttf>fonts/OfficinaSansStd-Book.otf</ttf></normal>

抛出异常。如果您重命名字体文件并将条目更改为

<normal><ttf>fonts/OfficinaSansStd-Book.ttf</ttf></normal>

它适用于我。

答案 1 :(得分:0)

我相信您需要按照以下答案来获取这些字体在PDF输出中工作。 Use custom fonts when creating pdf using iReport

此外,您可能希望关注该应用正在使用的文件调用来查找字体。我建议在linux上使用strace。