字体扩展名不适用于JasperReports

时间:2015-02-02 09:08:12

标签: java fonts jasper-reports

我正在尝试将Tahoma字体添加到我的网络应用中的jasper报告中。我使用font extension mechanism

抛出此异常: net.sf.jasperreports.engine.util.JRFontNotFoundException:Font' TahomaFont' JVM无法使用。有关详细信息,请参阅Javadoc。

这是我的font.xml文件:

<fontFamiles>
  <fontFamily name="TahomaFont">
    <normal>export/fonts/BTahoma.ttf</normal>
    <pdfEncoding>Identity-H</pdfEncoding>
    <pdfEmbedded>true</pdfEmbedded>
  </fontFamily>
<fontFamiles>

这是我的jasperreports.properties文件:

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

此外,我已将Tahoma.ttf字体文件放入我的类路径中。 以下是jasper报告中的样式标记:

<style fontName="TahomaFont" name="tahoma"/>

请让我知道我哪里出错了。提前谢谢。

3 个答案:

答案 0 :(得分:4)

将Tahoma.ttf字体放在类路径中是的方法。

您使用字体扩展是正确的,这是一个很好的做法 - 但您需要将字体作为字体扩展包装到jar中并将该jar添加到类路径中。

  • 在jasperReport中,在选项中管理字体,在字体选项卡中,选择字体并单击导出为扩展名
  • 打包你的jar,事情应该正常工作,而不必在JVM上安装物理字体。

更多信息记录here

答案 1 :(得分:0)

也许您必须将jar文件复制到java_home / fonts目录中。如果您是使用maven项目,则必须将jar文件打包到具有pom属性的maven项目中,以便将依赖项添加到pom.xml

答案 2 :(得分:0)

您将“ Tahoma.ttf”字体文件放在类路径中,但在fonts.xml中声明了“ BTahoma.ttf”

<normal>export/fonts/BTahoma.ttf</normal>

让我们将它们更改为相同。 我认为这种例外将消失。