HttpPrinter易桥网络打印机
下载地址:
https://www.lanzous.com/b743805
一、概述:
常用的报表打印的方法包括:
1.使用activex打印 但是 只能用在IE中,然而微软已经放弃了IE,chrome一家独大,新版的EDGE都用chrome开源内核了.
2.生成pdf打印 但是 效率 和 打印效果有限制.你批量打印数据试试,不累死你,生成一个pdf,自己点击打印一次.
3.用js 传递数据 给 报表服务器,可兼容各种浏览器.
4.安卓 IOS 自定打印机打印,或者用打印机接口打印.
这么多的打印,能不能统一起来. 这就是 我们现在用的 HttpPrinter,通过 Http通讯,打印机服务器端设置好模板格式,把数据发送给服务器即可.
二、特点:
1、无插件,主要一句js即可;
2、拖拽即可完成设计,感谢 锐浪报表的支持 ,国人的骄傲;
3、强大的报表功能,管它什么报表, 交叉的,嵌套的,还是二维码,图片等等,都支持.
4、打印机:只要是能用的打印机,都支持,针式打印机、激光打印机、小票打印机,证卡打印机等等,都不在话下,而且当有多个打印机时可以指定打印机;
5、支持各种语言,java php js delphi python ios andriod 等等,提供Http通讯的语言都支持.
三、使用前提条件:
1、在进行打印前,需要先设计好打印报表
2、打印数据必须Json的格式发送给打印服务器,并且数据必须满足指定的格式(见下文);
四、数据格式说明:
下面以一个 报表数据 为例说明一下数据格式;
{
"ReportName": encodeURIComponent("test.grf"), /报表文件名/
"Copies": 1, /可选。打印份数,支持指定打印份数。默认1份,如果为零,不打印,只返回报表生成的pdf,jpg等文件/
"PrinterName": encodeURIComponent(""), /可选。指定打印机,为空的话 使用默认打印机, 请在 控制面板 -> 设备和打印机 中查看您的打印机的名称 /
"PrintOffsetX": 0, /可选。打印右偏移,单位厘米。报表的水平方向上的偏移量,向右为正,向左为负。/
"PrintOffsetY": 0, /可选。打印下偏移,单位厘米。 报表的垂直方向上的偏移量,向下为正,向上为负。/
"token": encodeURIComponent("aa"), /*可选。只要token值在列表中 方可打印
"Control": encodeURIComponent('[' ///*部件框,可选值:AsStaticBox ,AsMemoBox,AsRichTextBox,AsPictureBox (base64格式),AsBarcode*/
+'{"type": "AsStaticBox", "name": "姓名","value": "高文杰","required": false},'
+'{"type": "AsStaticBox", "name": "性别","value": "男","required": false},'
+'{"type": "AsStaticBox", "name": "电话","value": "13165191728","required": false},'
+'{"type": "AsBarcode", "name": "二维码","value": "5520002701774727","required": false},'
+'{"type": "AsPictureBox", "name": "图片","value": "/j9KKKKACiiigAooooA/9k=","required": false},' //base64格式
+']'),
"Parameter": encodeURIComponent('[' ///*参数,type 默认为空即可,已经在报表端设置了 备用字段
+'{"type": "", "name": "单号","value": "5520002701774727","required": false},'
+'{"type": "", "name": "日期","value": "2019-09-09 12:21:12","required": false},'
+'{"type": "", "name": "year","value": "2018","required": false},'
+']'),
"Field": encodeURIComponent('[' ///*字段, type ftBlob (base64格式) ,ftString ftInteger ftBoolean, ftFloat, ftCurrency,ftDateTime, size (ftString 设置为实际长度,其他的设置为0,例如 ftInteger ftBlob 等设置为0 )
+'{"type": "ftString", "name": "快递单号","size": 255,"required": true},'
+'{"type": "ftString", "name": "发件人","size": 255,"required": false},'
+'{"type": "ftString", "name": "发件人电话","size": 255,"required": false},'
+'{"type": "ftBlob", "name": "图像","size": 0,"required": false},'
+']'),
"Data": encodeURIComponent('[' ///*数据行
+'{"快递单号": "1234567890", "发件人": "张三","发件人电话": "13100110000"},'
+'{"快递单号": "1234567890", "发件人": "李四","发件人电话": "13100110001"},'
+'{"快递单号": "1234567890", "发件人": "王五","发件人电话": "13100110002"},'
+'{"快递单号": "1234567890", "发件人": "马六","发件人电话": "13100110003"},'
+'{"快递单号": "1234567890", "发件人": "赵七","发件人电话": "13100110004"},'
+'{"快递单号": "1234567890", "发件人": "钱八","发件人电话": "13100110005"},'
+']'),
}
成功返回 {"status":"ok","data":"报表地址"}, 失败返回 {"status":"error","data":"具体的错误信息"}