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
最終項目截圖: