最近有个需求,在window平板上实现打印,用户在平板上一顿操作之后,生成一个组合的页面,并将页面上的内容打印到纸张上带走。
首先需要在main.js里面添加如下代码,在主进程中,侦听渲染进程的打印事件。
const ipcMain = require('electron').ipcMain;
ipcMain.on("print", (event, arg) => {
//mainWindow 是打开的窗体
mainWindow.webContents.print({
silent: true, //静默
printBackground: false, //是否打印网页背景
deviceName: ''
}, function(error) {
})
});
在渲染进程中,需要使用以下代码。
const ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.send('print', '');
如果不需要打印整个页面,可以考虑尝试将要打印的内容临时替换页面内容。
window.document.body.innerHTML=bdhtml;
我这个项目里,要把网页上一个异形区域打到胶版纸上,实际打出的大小受到网页大小/打印机设置/纸张大小三方面影响,如果你也有这种个性化打印需求的话,可以再探讨。