S2JH系列分享:基于JasperReport+Applet的“可编辑”(套打)打印报表功能

EntDIY 发布于 2014/05/21 08:52
阅读 2K+
收藏 14

S2JH项目首页:http://www.oschina.net/p/s2jh集结最新主流时尚开源技术的面向企业级Web应用的基础开发框架,提供一个J2EE相关主流开源技术架构整合及一些企业应用基础通用功能和组件的设计实现的最佳实践和原型参考。

对应在线更新版本请访问S2JH文档页面:http://git.oschina.net/xautlx/s2jh/wikis/Report

概要说明

对于图表/报表,S2JH框架涉及如下几方面:

Chart/Plot: 对于一些客户需要很炫的在线图表功能,虽然Flash不失为一个选择,但是更倾向于类似linkJQuery Flot这样的Javascript插件。

JasperReport: JasperReport通过多种组合工具可以支持绝大部分不同层面的企业报表需求:

Applet:一般报表/单据都涉及打印需求,尤其还涉及到像快递单这样的套打票据,需要精确控制打印尺寸和纸 张方向等特性,一般单纯的浏览器客户端无法提供这些特性,一些常见的解决方案是包括借助额外的C/S程序或者ActiveX浏览器控件等。 JasperReport提供一个基于Applet的JRViewer组件,虽然基于Applet的实现方式也饱受诟病,包括需要用户机器安装JRE,下 载一系列JAR组件,浏览器权限配置等,但是结合一些项目的经验和各方面因素综合考虑,在不考虑带宽等限制,一致的系统开发实施管理流程等,对于一般运行 与企业内网的企业应用,采用Applet方案也算是个不错的选择。

框架采用JasperReport+Applet方式实现打印报表的在线预览/在线编辑/多格式数据导出/精确套打等常见业务需求,目前此套方案已在实际项目中使用,可以实现常见的发货单/快递单等单据的针式打印的准确分页切纸走位。框架在JRViewer Applet基础上扩展,提供一个比较常见的个性需求:在预览界面,可以方便的 在线修改相关数据,以便以修改后的数据直接打印或导出数据。另外,框架扩展做了 报表的缓存和刷新检测处理,自动检测JasperReport的jrxml模板文件的时间戳,如果有更新则重新编译缓存报表文件,便于开发和生产环境的随时更新报表模板定义。

订单销售趋势图

TODO 基于JQuery Flot的销售趋势图,折线图/饼状图/柱状图等

商品条码清单

对于进销存系统,一般会配备扫描枪快速录入商品,实际操作无需把一堆实物商品堆在工位,可以通过打印常用销售商品的条码清单,只需简单扫描纸质清单列表上的商品条码即可快速录入商品条码。

模板文件路径:prototype/src/main/webapp/WEB-INF/template/jasper/COMMODITY_BARCODE_LIST.jrxml

  • Jaspersoft Studio报表可视化设计,对于需要提供在线编辑的属性,按照如下图设置超链接属性即可:

rpt-design

  • 在业务界面集成

rpt-select

  • 调用打印预览输出

rpt-preview

  • 在线修改可编辑属性(LinkType=XEdit)

rpt-xedit

  • 点击左上角的保存按钮,支持多种格式导出,如PDF,Excel等

rpt-export1

  • 导出到Excel文件,以便线下自由编辑使用

rpt-export2

(打印)销售发货单

TODO

(打印)物流快递单

典型的套打业务。TODO

加载中
0
Leon_wy
Leon_wy
不错哦,看好你哦
0
湾仔十三香
湾仔十三香
老板,来一打赞,打包带走
0
没想好

JasperReportController 如何调用,参数怎么定义,真心不知如何基于开发

没想好
回复 @GoogleFan : 没有基于 JasperReportController 进行开发,自己搞了一套
GoogleFan
GoogleFan
请问您最后弄出来报表没?
0
menglinxi_a
menglinxi_a
值得单独拿出来讲讲。。。
0
iris_1992
iris_1992

作为FineReport脑残粉不得不拿出FineReport的相对解决方案来对比一下:

FineReport下载地址:http://www.finereport.com/products/trial

1. 问题描述

票据的套打是一种普遍的需求,即在一张印刷好的票据上,准确无误的打印票据的内容。传统的报表工具,需要用尺子量出数据在套打背景的位置,然后在屏幕上根据尺寸定位数据所在单元格的位置,相当繁琐。FineReport报表可以将套打背景扫描成图片,直接作为报表背景,对应背景插入数据,而打印时只打印出相应位置上的数据,不打印背景及其他格式,如下图效果:
2. 示例
2.1 将票据处理成与实际尺寸相同,且分辨率为96的图片
通过扫描仪将要进行套打的票据扫描成图片,再通过画图软件将图片编辑成分辨率为96,与实际尺寸相同的图片。
处理好的图片保存如%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Check.jpg
设置了报表背景后,报表背景图片会保存在报表文件中,别的电脑也需要这个模板,只要拷贝cpt文件即可,不需要拷贝原始背景图片。
2.2 新建报表,将图片设置为纸张背景
点击菜单模板>纸张背景,打开背景设置的对话框,选择图片,点击选择图片,选择背景,设为平铺
注:若希望在打印时,也能将报表背景打印出来,则需要将打印报表背景勾选上。
2.3 页面设置
根据票据的实际尺寸进行页面大小设置,同时将页边距都设为0。
2.4 设计报表
添加数据集ds1,SQL语句为SELECT * FROM [订单],使用订单表制作一张每个订单的开票信息,最终打印出来。
拖拽数据列,调整单元格使得报表内容对应到票据的相应位置:
调整红色分页线内最右方的单元格,保证最右方边框线与红色分页线在票据背景的最右边缘重合;按同理调整最下方的单元格。
设置订购日期、客户ID、应付金额、货主名称所在的单元格左父格都为订单ID所在单元格,使他们都跟随订单ID进行扩展;
其中客户ID我们使用数据字典,显示对应的客户名称;
注:将左上角和右下角单元格的左父格设置为报表内容的主父格如这里的订单ID单元格,否则会出现数据整体上移的现象。
2.5 保存与预览
保存模板,点击分页预览,效果如上,可以看到每页显示一组订单开票信息,且数据位置与背景严格对齐。点击打印,就能够进行票据的套打了。模板效果在线查看请点击Slip.cpt
已完成报表可参考%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Slip.cpt

注:若在预览或打印套打模板时遇到问题,可以查看套打常见问题章节。


0
存在的存在
存在的存在
我也用的是FineReport,赞一个
0
GoogleFan
GoogleFan
@S2JH: 请问在项目中如何做才能实现该报表功能呢?  有没有实际的例子看一看?
返回顶部
顶部