electron实现静默打印小票
静默打印流程
1.渲染进程通知主进程打印
//渲染进程 data是打印需要的数据 window.electron.ipcrenderer.send('handleprint', data)
2.主进程接收消息,创建打印页面
//main.ts /* 打印页面 */ let printwindow: browserwindow | undefined /** * @author: yaoyaolei * @date: 2024-06-07 09:27:22 * @lasteditors: yaoyaolei * @description: 创建打印页面 */ const createprintwindow = () => { return new promise<void>((resolve) => { printwindow = new browserwindow({ ...base_window_config, title: 'printwindow', webpreferences: { preload: join(__dirname, '../preload/index.js'), sandbox: false, nodeintegration: true, contextisolation: false } }) printwindow.on('ready-to-show', () => { //打印页面创建完成后不需要显示,测试时可以调用show查看页面样式(下面有我处理的样式图片) // printwindow?.show() resolve() }) printwindow.webcontents.setwindowopenhandler((details: { url: string }) => { shell.openexternal(details.url) return { action: 'deny' } }) if (is.dev && process.env['electron_renderer_url']) { printwindow.loadurl(`${process.env['electron_renderer_url']}/print.html`) } else { printwindow.loadfile(join(__dirname, `../renderer/print.html`)) } }) } ipcmain.on('handleprint', (_, obj) => { //主进程接受渲染进程消息,向打印页面传递数据 if (printwindow) { printwindow!.webcontents.send('data', obj) } else { createprintwindow().then(() => { printwindow!.webcontents.send('data', obj) }) } })
3.打印页面接收消息,拿到数据渲染页面完成后通知主进程开始打印
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>打印</title> <style> </style> </head> <body> </body> <script> window.electron.ipcrenderer.on('data', (_, obj) => { //这里是接受的消息,处理完成后将html片段放在body里面完成后就可以开始打印了 //样式可以写在style里,也可以内联 console.log('event, data: ', obj); //这里自由发挥 document.body.innerhtml = '处理的数据' //通知主进程开始打印 window.electron.ipcrenderer.send('startprint') }) </script> </html>
这个是我处理完的数据样式,这个就是print.html
4.主进程接收消息开始打印,并且通知渲染进程打印状态
ipcmain.on('startprint', () => { printwindow!.webcontents.print( { silent: true, margins: { margintype: 'none' } }, (success) => { //通知渲染进程打印状态 if (success) { mainwindow.webcontents.send('printstatus', 'success') } else { mainwindow.webcontents.send('printstatus', 'error') } } ) })
完毕~
以上就是electron实现静默打印小票的流程详解的详细内容,更多关于electron静默打印小票的资料请关注代码网其它相关文章!
发表评论