java - 贾斯珀报告 5.6 : Could not load the following font

标签 java fonts jasper-reports

我面临的问题是,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_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

fonts.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>

模板

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

最佳答案

问题出在模板本身:在一个字体标签中 <fontName>属性丢失:

不起作用:

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

有效:

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

关于java - 贾斯珀报告 5.6 : Could not load the following font,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25548404/

相关文章:

jasper-reports - Jasper 报告删除/隐藏空组

java - 我如何告诉 querydsl-maven-plugin 使用 Long 而不是 BigDecimal 生成 NumberPath?

java - hibernate : Downside of merge() over update()

java - 依赖注入(inject)和 JavaFX

browser - 是否可以通过返回虚假的已安装字体列表来阻止浏览器指纹识别?

java - 如何迭代 jasper 报告中作为参数传递的对象中的集合?

java - 一个对象(java bean)作为 iReport(JasperReports)上的数据源

java - Web 应用程序的 GUI 生成器

css - 如何访问字体?

java - OpenJDK 11 java.lang.ClassCastException : class sun. font.CompositeFont 无法转换为类 sun.font.PhysicalFont