使用JasperReport默认不支持中文
如果需要支持中文,需要:
- 在项目文件中添加中文字体文件,并进行适当配置
- 在报表模板中指定中文字体名称
以下分别说明。假设已经有一个能够正常显示英文报表的SpringBoot maven项目
在SpringBoot项目中添加字体文件和相关设置信息
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.lobstertwo=fonts/fonts.xml
说明字体信息文件在 fonts/fonts.xml文件中
在 fonts/fonts.xml文件中指定有哪些字体文件,以及字体的名称。例如,我的项目中用到了“华文宋体”和“黑体”两种。
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="华文宋体">
<normal>fonts/STSONG.TTF</normal>
<bold>fonts/STSONG.TTF</bold>
<italic>fonts/STSONG.TTF</italic>
<boldItalic>fonts/STSONG.TTF</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
<fontFamily name="黑体">
<normal>fonts/simhei.ttf</normal>
<bold>fonts/simhei.ttf</bold>
<italic>fonts/simhei.ttf</italic>
<boldItalic>fonts/simhei.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'黑体', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'黑体', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
</fontFamilies>
上述字体文件可以从Windows/Fonts文件夹复制而来
经过这样设置,我的项目就正常显示上述中文字体了