需求:

网页上通过js调用打印机打印pdf文件,然后直接打开打印机,就是直接打印,不用用户再次点击打印按钮,这样用户体验好,

 

经历:

我在网上找了资料就是使用window.print(),但是这个只是打印标签的内容,对于pdf的url里面的内容是打印不出的,听说网上有插件pdf.js等等.

感觉也没什么用,最后自己也不知道怎么搞,弄了很久就知道有人用iframe加载pdf再打印所以参考一下就真的可以打印,忽然感觉大神都在灯火阑珊处!

主要代码:

标签iframe代码

1

<iframe style="display:none" id="printIframe" src="<%=data%>"></iframe>

JavaScript代码,很简单,其实被我简化了很多

1

2

3

4

5

6

7

8

9

10

<script type="text/javascript">

$(document).ready(function(){

          doPrint();

});

//点击打印按钮,触发事件】

function doPrint(){

    $("#printIframe")[0].contentWindow.print();

}

</script>

<%=data%>就是我的pdf的路径,这不足10行的代码就能解决的问题我也找了很久,然而美中不足的是还需要二次确认打印,不能静默打印

 

解决方案

偶然浏览到有浏览器打印插件这类程序,于是找到软件介绍 · 优声云办公文档打印组件 · 看云

觉得很不错,看了下原理介绍

原理是通过在电脑上安装一个客户端,然后通过浏览器与之通信实现本地静默打印。

客户端相当于一个本地server,本机浏览器通过ajax访问本地server,发送文件地址以及者打印相关信息给这个本地server,本地server再通过文件地址下载需要打印文件,再发送给打印机实现打印。本地server由于是本地客户端,权限高,能够调用操作系统丰富的API,从而实现浏览器实现不了的一些功能,比如打印PDF文件,打印订单收银小票等

通过在电脑上安装这个组件,终于可以实现静默打印了

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐