“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情”
0 环境
- 编辑器:webstorm或者vscode
- 系统版本:windows10
- 编辑器版本:最新
- 浏览器:谷歌
1 参考文档
2 window.print
window.print没有的功能:比如智能分页和只对指定的内容区域进去打印,还有网上看到有些网友分享,同样的A4纸张更换一个不同型号的打印机,格式样式不一样了,以及纸型改变也会有问题,适配性有待提高,对于打印结果要求不高的,好处就是只需配置个点击打印的按钮,基本不用写代码的,就可以调用打印功能了。
3 vue-easy-print
当我们需要的功能多了,不想自己编写,就需要第三方库的帮助了,假如你是vue2的项目,可以试试vue-easy-print,它是配合css+js+vue(相当于在template中写html),正常这几个库,分页会用到的css page-break-after: always,使用过还可以,不过不知道为什么,我浏览器无法分页,demo地址:codesandbox.io/s/g2ofh?fil… ,调用起来比较方便。
4 vue-print-nb
vue-print-nb支持vue2和vue3,而且可以在printObj中配置参数,以及做一些操作,但是我的数据量大的时候,客户那边电脑较老,使用起来有点卡顿,所以只能弃用。
5 print.js
可以打印pdf文件,也可以html、图片、json打印。。。可以自定义html中部分不展示,比如打印按钮不显示在打印中。还有一种方式是printjs配合截图(html2canvas),但是截图会有时间,以及点击打印时,加载时间有点长,而且卡就算了,一旦数据量多了,打印效果还是不太好。
6 Lodop
lodop它用的比较多,但是需要先在客户端中预先下载安装好软件,才可以使用,需要安装驱动,功能比较多,比如提供的免费功能就有,自定义纸张、页面边距、批量打印等等,所以在某些场景允许安装驱动的情况下,可以考虑使用它。
7 总结
对于常规的操作,上面的几种完全可以胜任,要求不高,直接window.print即可,稍微有点要求,但想偷懒一下,那么就需要库来帮助了,这几种都可以,当然若是可以安装驱动的话,用Lodop更好。