net.sf.jasperreports.engine.util.JRFontNotFoundException的解决方法
在用ireport做报表的时候,设计好格式以及引入数据,我们在ireport都可以展示出来,但是将文件引入到项目中后缺发现执行的时候出错。提示为:net.sf.jasperreports.engine.util.JRFontNotFoundException:Font '仿宋' is not availableto the JVM. See the Javadoc for more details。也就是说我们在设计irepot设计的时候,用到的字体无法被JVM解析。
针对这种问题,首先想到的就是将设计ireport中所用到的字体引入到项目中来,那么如何引入呢?本人是采用将字体打成jar包的方式引入到项目中。具体过程以及步骤如下:
1. 首先在网上下载后缀名为.ttf格式的字体,本文下载的simfang.ttf,也就是仿宋字体。
2. 打开ireport,将下载的字体装入到ireport中来,具体做法是点击工具--选项—font,具体如下图所示:
3. 将导入的字体打成jar包
4. 将打好的jar包引入到项目中来即可。运行,查看效果
解决了字体的问题后,当我们想输出pdf格式的时候发现又出现了一个问题,那就是输出的pdf文档是空白的,里面什么都没有。其实不是出来,而是不显示中文而已。针对这种情况我们要在ireport中做如下修改,选中字体:
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(ChineseSiplified)
PDF Embeded: √
重新放入到项目中来,这时候要引入一个新的jar包---iTextAsian.jar(下载地址:http://sourceforge.net/projects/itext/files/extrajars/ExtraJars1.0/iTextAsian.jar/downloads),包中的结构如下图
该包主要是解决pdf无法显示中文的问题。若此包没有引入到项目中来,则会出现如下错误:
net.sf.jasperreports.engine.JRRuntimeException:Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding :UniGB-UCS2-H(Chinese Siplified)
isPdfEmbedded : true
运行查看