怎么在electron里面实现打印预览功能? - 知乎

先看我实现的结果, 也花了很多精力 主要都是在踩坑。 后期有空会发到npm

思路:

chrome的打印预览,本身也是调用系统打印机把页面打印成pdf格式的,然后再渲染到前台。

审查元素可以看到是引用的一个pdf文件

通过指定协议可以访问这个文件。

可以参考实现

1、webContents.printToPdf() 方法 。先需要把打印的内容用隐藏窗口渲染出来,再调用此方法打印成pdf。然后用新窗口渲染出这个pdf。ps之前尝试过很多其他把页面转成pdf的轮子,但都没有官方提供的这个api强大

2、webContens.print() 方法,当用户点击打印按钮用这个方法来实现静默打印

3、可能遇到的问题,打印的边距,纵向还是横向,纸张的大小,页面中对page样式的处理。官方文档的api参数并不是完全的,可以在electron源码中可以查看更多参数使用

4、打印内容和样式传递规范。浏览器打印也只是打印的body里面的内容, 你需要在preload中重写window.print方法, 并获取对应参数

最近两个项目都是electron,但electron中只集成了chrome内核渲染层的一部分,并不是完全集成,所以很多chrome浏览器特有的功能在electron框架内都无法正常使用,比如,打印预览,桌面分享等,都需要自己适配。 如果需要完整的chrome特性建议使用NW.js


原网址: 访问
创建于: 2023-08-18 14:59:38
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论