基于JasperReports的Web报表打印技术的应用与实现

时间:2022-10-08 05:27:54

基于JasperReports的Web报表打印技术的应用与实现

摘要:随着Internet电子商务的蓬勃发展,报表作为企业信息系统的重要组成部分,其应用迫切需要向WEB转移,而报表打印功能扮演着重要的角色。JasperReports 是一个报表生成工具,能够展示丰富的页面内容,能够应用于各种Java应用程序中。结合web报表功能需求,针对B/S环境下调用本地打印机的问题,该文提出一种基于JasperReports和第三方打印控件相结合的解决方案,解决跨浏览器的报表打印问题。

关键词:JasperReports;web报表;第三方打印控件;MVC

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)17-4001-04

随着Web技术的广泛应用,传统的报表打印方式也发生了很大变化。在B/S模式下,由于只能采用浏览器作为用户界面进行交互,不能精确控制客户端的打印机。仅靠IE自带的页面打印功能,不能满足客户的需求,并且除了IE浏览器还有诸如谷歌、火狐等主流浏览器使用越来越多,如何解决跨浏览器下实现web报表打印的问题显得更为重要。

本文报表打印系统基于J2EE技术构建,开源报表引擎JasperReports与可视化工具iReport相结合,将报表模板与报表数据相分离,用户根据需要设计报表模板,自主选择数据源。在此基础上使用轻量级第三方打印控件,借助其丰富的打印功能,可以实现套打、精确打印等复杂功能,具有高效、简单、灵活的特点,满足客户的不同需求。

1 相关技术介绍

1.1 JasperReports

JasperReports是一个强大灵活的开源报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。 iReport 也是开源软件,其主要作用是用来以可视化的方式设计生成JasperReports 所使用的报表格式文件,因为JasperReports 本身并未提供很好的可视化报表设计方式,iReport可视化的设计界面,支持拖拉试操作,方便、快捷的制作出各种复杂的报表。

在Java报表开发中,JasperReports是最受欢迎的报表开发工具之一,但是它本身并没有很好地实现在Web环境中的打印功能,虽然存在有一种JasperReports客户端采用 applet实现打印整体功能,但客户需下载安装十几兆的jre且打印效率低下。

1.2 MVC架构模式

MVC最初是在Smalltalk-80中被用来构建用户界面的。M代表模型Model, V代表视图 View, C代表 控制器Controller。采用MVC设计模式有利于保持软件结构的完整性和可扩展性,同时层与层之间的调用较少耦合,实现了系统的低耦合、高内聚,方便进行二次开发。MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用HTML页面来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。其模式结构图如下:

MVC 的处理过程为:1)用户在视图的界面上发出请求,视图把请求转发给控制器,控制器调用相应的模型来处理用户请求,模型进行相应的业务逻辑处理,并返回数据。2)控制器调用相应的视图来显示模型返回的数据。

1.3 第三方打印控件

在相当多的业务系统中,根据业务流程的需要,经常会需要打印系统中的报表,用来领导审批,或者存档记录,这就要求在系统中增加对应报表的打印功能。在Java Web开发过程中,经常会遇到报表打印的需求,而在B/S架构中并没有成熟的API可以调用,所有打印任务只能通过浏览器调用本地打印服务进行。因此采用轻量级的第三方打印控件方式,是开发B/S较好的选择,集成丰富的打印功能,满足客户需求,能实现web套打,其中一些很好地解决跨浏览器调用打印机问题。国内外常见的第三方打印控件介绍:主要有ScriptX、webprint、jatoolsPrinter以及LODOP等几种。

LODOP web打印控件是有梦泰尔软件工作室研发,自2007年开始,目前是国内注册用户和免费用户较多的打印控件,是WEB开发中比较彻底的打印方案。在web开发中,表格报表是最常见的报表形式之一,通常情况下可以选择使用HTML中等标签实现。

2 系统实现的总体结构

B/S模式web报表开发主要有远程数据读取以及精确定制报表两个开发难点,为了实现报表的自定义,还必须满足以下条件:1)报表样式模板可保存,并能重复调用;2)报表样式模板能够进行自定义编辑;3)打印参数和方法一致,可供用户灵活调用,避免打印控件的反复更新; 4)打印控件可实现分页机制;5)打印内容自适应机制,可精确控制打印内容的显示样式。

Web报表打印系统整体结构如图3所示。

系统整体方案可分为三大部分,第一部分,报表设计用户根据自己的需要设计出相应的报表模板存入数据库。第二部分,报表生成部分,用户选择相应模板,服务器解析相应模板并且结合用户输入的一些参数,动态地生成了我们所需要的报表文件。第三部分,即报表的打印过程,就是分别把第三方打印控件和第二部分中生成的报表文件传送到客户端,在本地进行解析打印,直接控制打印机进行输出的过程。

具体来说,客户端是浏览器,可以是windows下各主流浏览器(包括IE、FireFox、Google Chrome等) 嵌入到Web 页面中的LODOP打印控件在页面初始加载过程中提示安装在客户端机器上,客户端用户通过调用LODOP控件实现对web报表的打印。打印系统的功能包括两部分:客户端打印控件和服务器端数据填充服务组件,客户端打印控件负责向数据填充服务组件发起数据请求获取远程数据,进行报表打印; 服务器端数据填充组件负责提取模板文件,进行数据填充。

3 打印功能应用实例

下面以LODOP控件(采用版本为Lodop6.012,免费试用版)为例,以MyEclipse10为集成开发环境,以Tomcat 6为web服务器,结合JasperReports报表开发工具(版本为4.5.1),实现Windows下各主流浏览器下实现web报表打印功能的实例,以某货物仓储管理为例,数据源选择为JDBCSource。

3.1 使用JasperReports设计报表模板

模板设计如图4所示。

3.2 报表填充及导出

4 结束语

目前Java Web项目的报表实现技术选择不多, JasperReports 是一个比较成熟的Web报表开发技术, 也是目前主要解决方案。通过JasperReports 可以很好的完成Web报表功能任务,但它本身并没有很好地实现在Web环境中的打印功能。该文主要介绍了一种基于JasperReports报表设计工具的web报表的打印功能的报表打印系统实现方案,结合当前复杂业务报表的需求分析,并且跨主流浏览器下实现web报表打印功能,提出了使用轻量级第三方控件结合JasperReports的联合打印的一种解决方案,结合两者的优点更好地实现丰富web报表的打印功能。

参考文献:

[1] 谢星星,陈育春.贯通开源WEB图形与报表技术全集[M].北京:电子工业出版社,2008.

[2] 刘聪.Java报表开发技术深入解析[M].北京:中国铁道出版社,2010.

[3] 张婧.JasperReport在Web报表中的制作与生成[J].信息通信,2011(2).

[4] 郭军军,刘刚.一种基于J2EE平台的通用WEB票据打印服务技术[J].计算机应用与软件,2010(6).

[5] 关鑫.基于J2EE的通用报表系统的研究与实现[D].成都理工大学,2010.

[6] 邓卓.基于J2EE的WEB报表系统的研究与实现[D].沈阳理工大学,2009.

[7] 林信良.Servlet&JSP学习笔记[M].北京:清华大学出版社,2010.

[8] 杜梅,周传生,曹升嘉.开源报表引擎JasperReports的研究与应用[J].沈阳师范大学学报:自然科学版,2007(4).

[9] 张宇杰.Web报表打印技术研究[J].电脑知识与技术,2007(7).

[10] 赵宗淑,赵高丽,龚俊朋.基于B/S模式的报表打印技术研究[J].电脑知识与技术,2006(12).

上一篇:用VB实现函数图形的绘制 下一篇:黑盒测试中的边界值分析方法研究