Exception in thread "main" net.sf.jasperreports.engine.util.JRFontNotFoundException: Font "simsun" is not available to the JVM. See the Javadoc for more details.
JasperReports报表打印pdf中文不显示,以及出现字体找不到,是因为japserreports.jar中的fonts并没有中文设置;用以下两种方法都可以解决:
第一种方法:修改jar包:
1.下载中文字体,我这里下载的是simsun.ttf宋体
2.下载jasperreports-6.2.2.jar(版本随意)
3.解压jar包,解压后目录如下
4.找到net\sf\jasperreports\fonts目录,新建chinese文件夹,如下
5.把下载的中文字体拖拽到chinese文件夹下
6.返回fonts目录,修改jasperreports-fonts.xml文件,在Familes节点添加:
<fontFamily name="simsun">
<normal>net/sf/jasperreports/fonts/chinese/simsun.ttf</normal>
<bold>net/sf/jasperreports/fonts/chinese/simsun.ttf</bold>
<italic>net/sf/jasperreports/fonts/chinese/simsun.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/chinese/simsun.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
</fontFamily>
7.打开cmd,切到jasperreports-6.2.2目录,进行打包:”jar cvf jasperreports-6.2.2.jar * “,打包后的目录如下
8.替换之前的jar包,重新运行项目,ok啦
第二种方法:不修改jar包:
1.在resource目录下,添加fonts文件夹,在该目录下添加font.xml以及下载的中文字体:
font.xml
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="simsun">
<normal>
<ttf>fonts/simsun.ttf</ttf>
<svg>fonts/simsun.ttf</svg>
<eot>fonts/simsun.ttf</eot>
<woff>fonts/simsun.ttf</woff>
</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
</fontFamily>
</fontFamilies>
2.在resurce目录下添加jasperreports_extension.properties文件,就ok啦
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.default=fonts/fonts.xml
最终项目截图: