jasperreport 生成PDF汉字不显示问题的解决

该问题网上有很多解决了,但是我使用过后,都不起作用,估计是版本的问题,我用的估计是较新的版本,最新的现在是jasperreports-6.5.0了现在; 接下来说下我们的处理

目的:  在javaweb的客户端,用户可以到处报表,现在采用jasperreports的到出pdf的方式,当然可以其他文件方式都行; 

问题:  预览可以,导出pdf 中文直接没有展示,是空白。

解决: 

1.下载TIBCO Jaspersoft Studio-6.5.0.final  工具; 当然还有一个iReport-这个工具,这个好像在后期版本,不采用作为主要的报表工具了,也试过该工具,不行; 

2.设置自己的字体,我们设置宋体


里面的ttf可以自己下载; 后面的粗体,斜体等,设置同一个就行; 

3.打开后,可以建立报表模板文件,样子和eclipse类似; 对于其中是中文显示的区域,需要进行字体的设置

选择自己的字体就行


这里可以就,进行对模板的预览,保存成pdf试验一下了,如果可以基本就 行了; 设置该工具自动编译,会生成jasper文件; 


4 .在javaweb中需要,访问该jasper文件,进行生成 报表; 

4.1》 该文件拿到 javaweb项目中; 

4.2》 相关的jar包,比如 jasperreport相关,grooy-all等的,这个可以在网上找找例子都有; 

4.3》 对于刚才我们的自定义的字体myfont,进行处理 。

      下载jar包: jasperreports-fonts-6.0.0.jar ,该jar中,没有我们的myfont字体定义,需要进行处理下; 

可以用压缩文件打开,修改其中的: 

\fonts\net\sf\jasperreports\fonts目录下的fonts.xml 增加如下配置:

<fontFamily name="myfont">
<normal>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</normal>
<bold>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</bold>
<italic>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</italic>
<boldItalic>net/sf/jasperreports/fonts/dejavu/chinese.stsong.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'myfont', 'Courier New', Courier, monospace</export>
<export key="net.sf.jasperreports.xhtml">'myfont', 'Courier New', Courier, monospace</export>
</exportFonts>
</fontFamily>

当然要把chinese.stsong.ttf 放到对应的 dajavu下; 

之后将该jar添加到工程中就行。 

5 .到处报表到pdf;

......

        JasperPrint jasperPrint = JasperFillManager.fillReport(url,map, jrDataSource);  
            JRPdfExporter exporter = new JRPdfExporter();
            exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
 exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));
            SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
            exporter.setConfiguration(configuration);
            exporter.exportReport();

.......


6 相关链接:

https://www.jianshu.com/p/8dba0bb2f5dd

https://my.oschina.net/zzq350623/blog/521347

http://blog.csdn.net/zzq58157383/article/details/6862395








评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值