通过 Jaspersoft Studio,我们使用以下设置将用于 web 应用程序的内置 Windows Calibri 字体变体导出到字体扩展 JAR 中:
导出的 jrfontextensions.jar 中的目录结构如下:
--jrfontextensions
--jasperreports_extension.properties
--fonts
--fontsfamily1505796949749.xml
--Custom_Font
--calibri.ttf
--calibrib.ttf
--calibrii.ttf
--calibriz.ttf
jasperreports_extension.properties 的内容:
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireportfamily1505796949749=fonts/fontsfamily1505796949749.xml
fontsfamily1505796949749.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="Custom-Font">
<normal><![CDATA[fonts/Custom_Font/calibri.ttf]]></normal>
<bold><![CDATA[fonts/Custom_Font/calibrib.ttf]]></bold>
<italic><![CDATA[fonts/Custom_Font/calibrii.ttf]]></italic>
<boldItalic><![CDATA[fonts/Custom_Font/calibriz.ttf]]></boldItalic>
<pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
<exportFonts>
<export key="html"><![CDATA[Custom-Font]]></export>
<export key="rtf"><![CDATA[Custom-Font]]></export>
<export key="xhtml"><![CDATA[Custom-Font]]></export>
</exportFonts>
</fontFamily>
</fontFamilies>
现在,当我们将此报告导出为 PDF 时,嵌入到 PDF 中的 Calibri 字体作为自定义字体正确显示,正如预期的那样。
但是我们在尝试将报告导出为其他格式(如 HTML、DOC 和 XLS)时遇到了问题。Web 浏览器或办公应用程序似乎无法识别“自定义字体”并回退到它们的默认字体之一:XLS 报告默认为 DejaVu Sans,而 HTML 和 DOC 报告默认为 Times New Roman。PDF、XLS、DOC 和 HTML 格式的输出分别如下:
我觉得我们必须在这里遗漏一些明显的东西——也许我们缺少一些模糊的 JRExporter 配置?