发布网友 发布时间:2022-04-25 20:33
共1个回答
热心网友 时间:2023-10-15 00:06
没用过水晶报表,报表开发用的比较多的是FineReport,类似的问题在FineReport是这样解决的:
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。
注:若在预览或打印套打模板时遇到问题,可以查看套打常见问题章节。