web打印的最佳方案


web打印的痛点

winform打印的方案比较多,实现也比较容易,而且效果也非常炫;但现在越来越多的系统是web系统,甚至是移动端。网上也有非常的web打印方案,但各式各样的问题非常多,比如js兼容性,稳定性等一直缠绕着众多的程序员,或者就是web 打印需要浏览器安装 ActiveX 组件,ActiveX安装不容易成功等等问题。Lodop等插件还是收费的, 于是 我们 写了 新的 免费web打印控件  HttpPrinter


新的解决方案

对各种方案分析之后,对web在重业务场景的打印需求(比如直接打印,无预览直接打印,特定格式打印)梳理之后,确定了一个生产环节最佳的WEB打印方案,纯JS通过post提交数据到打印伺服器的方案。

    js可以脱离语言环境更通用,不管你是java,还是php,甚至只是个前端都毫无障碍;
    使用http协议 post模式更简单,门槛更低,几行代码搞定;其实使用webSocket协议也可以,但是在不需要长连接的情况下没有必要。

于是 我们 写了 新的 免费web打印方案  HttpPrinter


web页面实现源代码


{
        "ReportType": "gridreport",     /*报表类型  支持 gridreport  fastreport  为空 默认 gridreport*/
        "ReportName": "test.grf",     /*报表文件名 需要以英文字母开头*/
      "ReportVersion": 1,              /*可选。报表版本, 为空则默认1  如果本地报表的版本过低 将从 ReportUrl 地址进行下载更新*/
      "ReportUrl": "http://111.67.202.157:9099/report/test.grf",                  /*可选。为空 将不更新本地报表 , 如果本地报表不存在可以从该地址自动下载*/
      "Copies": 1,                  /*可选。打印份数,支持指定打印份数。默认1份,如果为零,不打印,只返回报表生成的pdf,jpg等文件*/
      "PrinterName": "",      /*可选。指定打印机,为空的话 使用默认打印机, 请在 控制面板 -> 设备和打印机 中查看您的打印机的名称 */
      "PrintOffsetX": 0,                 /*可选。打印右偏移,单位厘米。报表的水平方向上的偏移量,向右为正,向左为负。*/
      "PrintOffsetY": 0,                /*可选。打印下偏移,单位厘米。 报表的垂直方向上的偏移量,向下为正,向上为负。*/
      "Preview": 0,                 /*可选。是否预览,和主界面设置的效果一样 为空默认不预览,   0:不预览,1:预览(弹出导出的pdf,jpg等文件)。*/
      "token": "aa",      /*可选。只要token值在列表中 方可打印
      "taskId": "1234567",     /*可选。多个打印任务同时打印时,根据该id确定返回的是哪个打印任务。 */
      "exportfilename": "",      /*可选。自定义 导出 文件名称 例如 test  会 导出 http://127.0.0.1:12345/gridreport/test.pdf   格式为 ip+port+报表类型+名称+文件类型      */

      "Control": '['  ///*部件框,可选值:AsStaticBox ,AsMemoBox,AsRichTextBox,AsPictureBox (base64格式),AsBarcode*/
        +'{"type": "AsStaticBox", "name": "姓名","value": "张大帅","required": false},'
        +'{"type": "AsStaticBox", "name": "性别","value": "男","required": false},'
        +'{"type": "AsStaticBox", "name": "电话","value": "12345678901","required": false},'
        +'{"type": "AsBarcode", "name": "二维码","value": "5520002701774727","required": false},'
        +'{"type": "AsPictureBox", "name": "图片","value": "/9j/4AAQSkZJA/9k=","required": false},'  //base64格式
        +']'),
      
      "Parameter": '['  ///*参数,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": '['  ///*字段, 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": '['  ///*数据行  
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +'{"快递单号": "1234567890", "发件人": "易桥智能","发件人电话": "12345678901","图像": "/9j/4AAx="},'
        +']'),
}

 

 

打印效果

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控件功能强大,却简单易用,所有调用如同JavaScript扩展语句, 主要接口函数如下: PRINT_INIT 打印初始化 SET_PRINT_PAGESIZE 设定纸张大小 ADD_PRINT_HTM 增加超文本项 ADD_PRINT_TEXT 增加纯文本项 ADD_PRINT_TABLE 增加表格项 ADD_PRINT_SHAPE 画图形 SET_PRINT_STYLE 设置对象风格 PREVIEW 打印预览 PRINT 直接打印 PRINT_SETUP 打印维护 PRINT_DESIGN 打印设计 ... 样例清单 1.如何在页面内嵌入控件见样例一 2.如何选材打印当前页面内容见样例二 3.如何用代码生成打印页见样例三 4.如何打印设计和定位套打见样例四 5.如何控制纸张大小和连续打印见样例五 6.如何输出多页长文档及双面打印见样例六 7.如何定向输出见样例七 8.如何打印图片见样例八 9.如何用程序加载打印维护背景图见样例九 10.如何控制打印样式(STYLE)见样例十 11.如何直接打印条形码见样例十一 12.如何读写本地文件见样例十二 13.如何打印旋转内容见样例十三 14.如何按URL打印见样例十四 15.如何打印表格的页头页尾见样例十五 16.如何设置预览窗口大小见样例十六 17.如何发打印机指令或直接读写端口见样例十七 18.如何打印幅面高度不固定的票据见样例十八 19.如何内嵌显示及预览时包含背景图见样例十九 20.如何强制分页并预览多页卡片见样例二十 21.如何控制打印维护的功能权限见样例二十一 22.如何构建自己的纯WEB打印预览见样例二十二 23.如何居中打印超文本见样例二十三 24.如何选择界面皮肤见样例二十四 25.如何指定输出到哪页或仅预览见样例二十五 26.如何提高多页打印的性能见样例二十六 27.如何导出数据到Excel文件见样例二十七 28.如何快速读取客户端系统信息见样例二十八 29.如何使用其它长度单位见样例二十九 30.如何分页输出页面内容见样例三十 31.如何打印表格的分页小计或合计见样例三十一 32.如何实现清晰的图表打印见样例三十二 33.如何实现甘特图等的图表打印见样例三十三 34.如何使用百分比%和满页打印见样例三十四 35.如何获得打印结果和程序代码见样例三十五 36.如何在设计过程中用js编辑内容见样例三十六 37.如何打印公章效果图见样例三十七 38.如何用BASE64编码输出图片见样例三十八 39.如何打印田字格、上划线等文本见样例三十九 40.如何进行数据格式转换见样例四十 41.如何把内容关联后按顺序打印见样例四十一 42.如何把整页内容缩放打印见样例四十二 43.如何分页打印综合表格见样例四十三 44.如何缩放打印单个超文本内容见样例四十四 45.如何获得打印状态及最终结果见样例四十五 46.如何设置右边距和下边距见样例四十六

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值