Java JasperReports 5.6:无法加载以下字体

Java JasperReports 5.6:无法加载以下字体,java,fonts,jasper-reports,Java,Fonts,Jasper Reports,我面临的问题是,JasperReports仍然找不到Arial字体 我创建了一个具有以下结构的简单Maven项目,并将其包含到我的主应用程序中。因此,主应用程序在类路径中包含已安装的JAR: - jasperreports_extension.properties - fonts |-> arial |-> ariali.ttf |-> arialbi.ttf |-> arialbd.ttf |-> arial.ttf |-&

我面临的问题是,JasperReports仍然找不到Arial字体

我创建了一个具有以下结构的简单Maven项目,并将其包含到我的主应用程序中。因此,主应用程序在类路径中包含已安装的JAR:

- jasperreports_extension.properties
- fonts
  |-> arial
    |-> ariali.ttf
    |-> arialbi.ttf
    |-> arialbd.ttf
    |-> arial.ttf
  |-> fonts.xml
但在将报告导出为PDF时,我仍然看到以下异常

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : 
pdfFontName   : Arial
pdfEncoding   : Identity-H
isPdfEmbedded : true
jasperreports\u extension.properties

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

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="Arial">
        <normal>fonts/arial/arial.ttf</normal>
        <bold>fonts/arial/arialbd.ttf</bold>
        <italic>fonts/arial/ariali.ttf</italic>
        <boldItalic>fonts/arial/arialbi.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
    </fontFamily>
</fontFamilies>

字体/arial/arial.ttf
字体/arial/arialbd.ttf
字体/arial/ariali.ttf
字体/arial/arialbi.ttf
身份-H
真的
模板

<font fontName="Arial" size="8" pdfFontName="Arial" pdfEncoding="Identity-H" isPdfEmbedded="true"/>

问题在于模板本身:在一个字体标记处缺少
属性:

不起作用:

<font size="12" isBold="true" pdfFontName="Arial"/>

是否有效:

<font fontName="Arial" size="12" isBold="true" pdfFontName="Arial" pdfEncoding="Identity-H" isPdfEmbedded="true"/>

另一个适合我的解决方案是:

setProperties(“net.sf.jasperreports.default.pdf.font.name”,“Helvetica”); setProperties(“net.sf.jasperreports.default.pdf.encoding”,“UTF-8”); setProperties(“net.sf.jasperreports.default.pdf.embedded”,“true”)

如果您从java端设置参数, 您必须指定font.name并Helvetica保存日期。
我在这里尝试了Arial,但出现了相同的错误。

将字体文件(*.ttf)复制到文件夹中:

/path/to/app/WEB-INF/classes/***HERE***

你的应用程序将从这里获得字体:)

你必须为PDF导出器提供正确的字体名称。您的字体将显示在嵌入式字体jar中。您不需要将它们再次放入classes目录;-)

pdf exporter有正确的fonts.xml内容(可能名称区分大小写,请小心):


字体/Arial/Arial.TTF
字体/Arial/Arial.TTF
字体/Arial/ARIALBD.TTF
字体/Arial/ARIALBD.TTF
字体/Arial/ARIALI.TTF
字体/Arial/ARIALI.TTF
字体/Arial/ARIALBI.TTF
字体/Arial/ARIALBI.TTF
Cp1252
真的
我希望这有帮助

问候,,
T.

在我的案例中,我使用了:

<font fontName="Arial" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
注意 我使用的字体jar包含以下.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>

   <fontFamily name="Arial">
       <normal><![CDATA[fonts/arial.ttf]]></normal>
       <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
       <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
   </fontFamily>


</fontFamilies>


您使用的jasper report的版本是什么?JasperReport和iReport版本:5.6.0我也遇到了与5.5.0相同的问题,我通过切换到5.0.0解决了这个问题谢谢,但我仍然看到了例外,即使5.0.0尝试在jdk文件夹(jdk1.x.x_xx/jre/lib/font)中添加字体。这将使您失去便携性,但至少我们可以理解问题是否出在包装上。我也有同样的问题,但只是在Linux上。在Windows上工作正常,所以,我认为问题不在于模板,而在于扩展的加载。@Gustavo奇怪的是,这发生在我的Windows上,而不是Linux上。没有东西可以尝试了。。。
<font fontName="Arial" pdfEncoding="Cp1256"/>
    <?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>

   <fontFamily name="Arial">
       <normal><![CDATA[fonts/arial.ttf]]></normal>
       <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
       <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
   </fontFamily>


</fontFamilies>