在ipc主进程中注册监听获取打印机列表请求
1
2
3
| ipcMain.on('getPrinterList', event => {
mainWindow.webContents.send('getPrinterList',mainWindow.webContents.getPrinters())
})
|
在ipc主进程中注册监听打印请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| ipcMain.on('print-html', (event, htmlContent) => {
const printWindow = new BrowserWindow({ show: false });
printWindow.loadURL(`data:text/html;charset=utf-8,${encodeURI(htmlContent)}`);
printWindow.webContents.on('did-finish-load', () => {
const options = {
silent: true,
printBackground: true,
pageSize: { width: 100000, height: 145000 }, // 100mm * 150mm in microns
landscape: false,
margins: {
marginType: 'none'
}
};
printWindow.webContents.print(options, (success, errorType) => {
if (!success) console.log(errorType);
printWindow.close();
});
});
});
|
子页面
引入
1
| const { ipcRenderer } = require('electron')
|
子页面获取打印机方法
1
2
3
4
5
6
7
8
9
10
11
12
| ipcRenderer.send('getPrinterList')
// 监听主线程获取到打印机列表后的回调
ipcRenderer.once('getPrinterList', (event, data) => {
// data就是打印机列表
for (var i = 0; i < data.length; i++) {
this.printerSelection.push(data[i])
// 设置默认打印机 并获取打印机名称
if (data[i].isDefault) {
this.printerName = data[i].name
}
}
})
|
子页面发送也打印请求
1
| ipcRenderer.send('print-html', pdfhtml);
|
其中pdfhtml为使用hiprint插件 生成的html面单模版 再由程序替换相关变量生成对应code128等 进行输出打印
http://hiprint.io/