web端浏览器实现直接打印经验分享(带实例源码)

       做ERP的时候遇到个报表设计以及打印功能实现,客户的需求大致是:客户端电脑可以直接修改报表模板,点击打印按钮直接调用默认打印机打出报表。免去预览以及打印机设置如设置纸张大小,页眉之类。。。因为客户需要连续多次打印,如果有预览及打印设置,多点几次按钮,还要关闭预览页面,非常嫌麻烦。

       实际开发中,第一步就是找个合适的报表控件。

1、 原来我们公司封装了一个很老的fastreport版本,可以实现直接打印以及客户端电脑设计报表格式,但是没有条形码。

2、同事说以前用过锐浪报表,可以直接打印,也可以设计,但是免费版有水印,虽然打印的时候并不会有,但是心里的疙瘩不爽,注册版太贵要一万多,而且还需要在客户端电脑装插件。所以再尝试下,有没有别的更好的吧~

3、我把最新的fastreport嵌入系统中,无需安装插件,只要调用几个DLL就可以实现打印,可以在服务器电脑设计模板,有条形码二维码。但是无法直接打印,但是官网提供了一个思路,先保存为PDF再进行打印~嫌麻烦暂时不考虑这一方式,所以我继续寻找,看能不能通过JS直接把网页内容直接打印出来,再结合已完成的fastreport搞定需求,理论上好像可行?实际上问题蛮多

 3.1 网上一搜js直接打印,全是WebBrowser.ExecWB(6,6),只能兼容IE就算了,我在本地试了N次都逃脱不了打印机设置这一步骤。代码如下,那些安全设置什么的也是OK,我也懒得纠结了,只兼容IE的方法我也看不上眼。web端浏览器实现直接打印经验分享(带实例源码)_第1张图片

3.2 似乎谷歌浏览器可以改个设置,完美实现,然后尝试了一下,果然可以,这个方案做备用,因为我们给客户部署ERP默认都叫他们使用谷歌浏览器。具体方式:右键谷歌浏览器快捷方式,选【属性】-【快捷方式】-【目标】-在目标最后加上一段“ --kiosk-printing”(复制我引号里的内容,注意开始的空格也要复制)。然后调用上图window.print();方法就好了。

web端浏览器实现直接打印经验分享(带实例源码)_第2张图片

玩到这里,内心其实还是觉得不够好,抽时间,再去试试看能不能在系统里写个调用打印机直接打印PDF的功能整合fastreport实现~未完待续。。。欢迎讨论,实例地址https://download.csdn.net/download/zhangxiaoyu138/10916348

你可能感兴趣的:(web)