在用Jaspersoft Studio进行报表设计的时候默认采用的字体是SansSerif,通过jasperreport的JAVA SDK进行报表输出时就会出现中文不显示问题。另外即便在Jaspersoft Studio设置的是中文字体,通过JAVA端生成也可能出现中文不显示。原因是SDK包中没有包含中文的字体文件。
解决办法:
1、在JAVA项目的resources下新建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>
</fontFamilies>
2、把上边配置的华文中宋字体文件STSONG.TTF也放到fonts目录下。最终放完的目录结构如下:
3、然后在resources目录下新建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
4、经过上述处理后,再生成PDF文件,中文已经可以正常显示了。
5、如果没有字体源文件的,可以关注留言哦O(∩_∩)O