electron实现打印功能,支持静默打印、无感打印

文章介绍了如何在Electron应用中使用webContent.print方法创建隐藏窗口,实现实现静默打印和无感打印。通过发布订阅机制,当点击打印按钮时,创建一个新的BrowserWindow加载特定内容,移除标题栏,设置打印参数如静默打印和无边距,最后完成打印后销毁窗口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

electron实现打印功能,支持静默打印、无感打印

实现思路

业务上目前有两种打印的方法:

  • webview标签:electron提供webview用于在一个独立的 frame 和进程里显示外部 web 内容。但是在Electron >= 5中是禁用该标签的,所以就直接放弃它。
  • webContent.print方法:webCompent是主进程用来渲染和控制网页的对象,而它的print方法是用来打印渲染进程中的网页内容。这里我们选择这个方法。

总体思路大概为:

  • 在页面点击打印按钮,发布订阅去创建一个隐藏的新窗口,窗口内容就是我们要打印的内容。利用新窗口展示的路径的hash和打印页面路由相互匹配实现指定打印内容。
  • 在打印页面初始化后,需要窗口去掉标题的按钮,防止乱入到打印页面。然后在根据路由传递的参数查找数据渲染页面。 再然后发布printHandlePrint事件进行打印并设置静默打印和去除边距。最后打印完成发布destroyPrintWindow事件销毁新窗口。

实现

1、创建打印方法

使用ipcMain.handle向主进程订阅打印相关事件。其中printHandlePrint订阅就是调用打印机的方法。最重要的是openPrintWindow订阅,它的内部去调用了openPrintWindow方法,它的用处就是用于创建一个新的BrowserWindow窗口,将要打印的内容放进新窗口中,这样我们就可以实现打印指定内容的功能。destroyPrintWindow订阅作用于销毁创建的新窗口。

可以看到openPrintWindow会接受两个参数,第一个参数是事件对象,第二个参数是发布事件时传递的参数,而这个参数最终会通过路由的方式传递到打印的新窗口中。实现渲染进程和渲染进程的伪通信。

方法写好之后记得要在app.whenReady()后调用这个方法。

// printHandle.ts
let win: BrowserWindo
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值