首页 > 代码库 > jasperreport使用心得

jasperreport使用心得

好几年前曾将用过jasperreport,当时的设计工具为ireport,如今已经变成jasperstudio,看来eclipse成为主流已是不争的事实了!

由于项目的需要,不得不重新学习一下这个新的工具了,总体上来说其设计思路还是不变的。想系列学习的,可以参照如下地址进行学习:http://blog.csdn.net/pigdreams/article/month/2017/02

本文只对项目中用的相关知识进行总结如下:

1、导出pdf中文问题,由于采用的是itext生成pdf,早期版本采用亚洲语言包可以满足要求,新的版本已经不行了,需要将字体达成jar包,添加依赖。具体可参照csdn那位的博客,在此也向其表示感谢!

2、图表的问题,jasperreport本身采用的是jfreechat,对于大多数项目已经能够满足,但对于我们项目来说,图表个性化太强,jfreechart不能满足要求,好在Jasperreport提供了一个 custom visualization component.

其原理是采用js绘制成svg,在填充报表时采用生成的svg(如pdf、html格式)或图片(如word格式)进行填充。

官方有相关的地址进行说明:http://community.jaspersoft.com/wiki/custom-visualization-component-v60x

另外jasperreport libaray 本身是不带 custom visualization 相关的jar包,可通过下载jasperreport server项目,在其中找到相关的jar包。

3、在生成报表的过程中,发现临时生成的svg文件不能删除,同时依赖的js文件不断创建删除。苦于找不到custom visualization component的源码(jasperreport官网也没找到),因此自能反编译相关类了。

进行小手术!

  • 判断临时目录是否存在,不存在创建,不再删除

技术分享

  •   对于无法删除的svg文件的原因的是在读取流的过程中,没有close

技术分享

4、页面好像只有detail band可以自动调整高度,其它band除非有sub report

5、多个模板合成,可以有两种方式。

  • 先填充第一个模板,然后依次填充其它模板,所有页面填充完成后,将第一个模板以后的页面添加到第一个模板中。

技术分享

 

 

  • 采用批量导出的功能,所有模板依次填充,然后放入一个list中,采用exporter实现导出。

技术分享

 

总的来说,个人倾向与第二种方式,可以增加更加灵活控制的参数,比如pdf可以增加bookmarker,甚至加密等。

 

jasperreport使用心得