首先在JasperReport Studio中加载下载好的中文字体:打开设置页面: Window >> Preferences >> Jaspersoft Studio >> Fonts,点击 Add 添加字体,FamilyName中命名新添加字体名称,TrueType中选择下载的字体文件(.ttf文件),PDF Encoding中选择PDF中中文字体编码格式。
这时Studio的字体下拉框中就有了我们添加的字体。将我们报表中的中文字体设置为“华文宋体”或“微软雅黑”。
我们的web工程中引入了JasperReport相关jar包:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.9.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.9.0</version>
</dependency>
这时我们要对jasperreports-fonts依赖的jar包进行更改,加入我们下载的字体文件。
使用解压软件打开jasperreports-fonts.far,逐层找到dejavu文件夹和fonts.xml文件。打开dejavu文件夹,将我们下载的ttf文件拖入其中。将fonts.xml文件复制出来进行更改。
在fonts.xml中<fontFamilies>标签内加入如下代码,保存后复制到jar包中替换原来的fonts.xml文件。
<fontFamily name="华文宋体">
<normal>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/HuaWenSongTi.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>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/WeiRuanYaHei.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>
此时将JasperReport Studio中设计好的jasper文件导入我们的项目中然后启动,JasperReport报表导出的PDF中已经可以正常显示中文了。