通过Jaspersoft Studio,我们使用以下设置将内置的Windows杯状字体变体导出到字体扩展名JAR中,以便在we应用程序中使用:

导出的jrfontextensions.jar中的目录结构如下:
--jrfontextensions
--jasperreports_extension.properties
--fonts
--fontsfamily1505796949749.xml
--Custom_Font
--calibri.ttf
--calibrib.ttf
--calibrii.ttf
--calibriz.ttfJasperreports_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.xmlFontsFamy1505796949749.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中的杯状字体如自定义字体一样正确显示,就像预期的那样。
但是,当我们试图将报表导出到其他格式(如HTML、DOC和XLS )时遇到了问题。web浏览器或办公应用程序似乎不认识“自定义字体”,并退回到它们的默认字体: XLS报告默认为DejaVu Sans,而HTML报告默认为Times。PDF、XLS、DOC和HTML中的输出分别如下:

我觉得我们一定缺少了一些显而易见的东西--也许我们缺少一些模糊的JRExporter配置?
发布于 2017-09-28 07:27:05
一些背景
字体通常存在于文档之外(安装在pc上),并不是所有的文档类型都允许您在文档本身中嵌入(包括)字体。与文档类型相关,这是将字体嵌入到文档中的可能性。
@font-face和url的css,因此如果broswer支持它,字体将被下载。我现在该怎么办
您误解了字体映射接口。
指定要使用的替换字体。当不可用时
在此界面中,您不应该将字体的名称、字体名称、字体系列(当字体为不可用的)中使用,您需要指定其他标准默认字体,如果找不到字体,则应该使用这些字体。
另一个很好的设计规则(没有很好的文档)是作为“姓氏”(当您配置字体系列时)--字体的确切名称(如果已安装),因此如果计算机安装了字体,就会找到它,因为您的名称将映射安装的名称。在您的例子中,您应该将“自定义字体”替换为"Calibri“。
为什么我的html不能工作?,如评论 by dada67所示,如果您喜欢使用自定义字体(映射将重定向到映射的字体),则不应该对html使用字体映射,然后使用如下代码搜索css
JasperReport report = JasperCompileManager.compileReport("jasper/FontExportTest.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(report, new HashMap<String, Object>(), new JREmptyDataSource());
HtmlExporter exporter = new HtmlExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleHtmlExporterOutput(new File("myHtml.html")));
SimpleHtmlExporterConfiguration configuration = new SimpleHtmlExporterConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();JasperReport既会创建文件myHtml.html,也会创建一个名为myHtml_htmlfiles的文件夹,在这个文件夹中,myHtml_htmlfiles应该与您的.ttf字体一起出现。如果您将它自然地部署到服务器上,则需要同时部署两者。
https://stackoverflow.com/questions/46448242
复制相似问题