63 lines
2.2 KiB
JavaScript
63 lines
2.2 KiB
JavaScript
import { BrowserWindow, ipcMain } from 'electron';
|
|
import path from "path";
|
|
|
|
|
|
export function printUtils(data) {
|
|
return new Promise(async (resolvePrint, rejectPrint) => {
|
|
|
|
let subMainWindow = new BrowserWindow({
|
|
show: false,
|
|
webPreferences: {
|
|
nodeIntegration: true, // For electron >= 4.0.0
|
|
contextIsolation: false,
|
|
webSecurity: false,
|
|
enableRemoteModule: true
|
|
}
|
|
});
|
|
|
|
function renderPrintDocument(window, data) {
|
|
return new Promise(async (resolve, reject) => {
|
|
ipcMain.on('load-ok', (event, res) => {
|
|
//在这里可以添加打印的判断条件等......
|
|
setTimeout(() => {
|
|
resolve({ message: 'page-rendered', ...res });
|
|
}, 500)
|
|
})
|
|
})
|
|
}
|
|
|
|
|
|
// If the subMainWindow is closed, reset the `subMainWindow` var to null
|
|
subMainWindow.on('closed', () => {
|
|
subMainWindow = null;
|
|
});
|
|
// 加载打印的html文件
|
|
subMainWindow.loadFile(path.resolve(__dirname, "./public/print.html"));
|
|
|
|
subMainWindow.webContents.on('did-finish-load', async (res) => {
|
|
let data = []
|
|
return renderPrintDocument(subMainWindow, data)
|
|
.then(async (result) => {
|
|
// let width = Math.ceil((result.width) * 264.5833);
|
|
let height = Math.ceil((result.height + 60) * 264.5833);
|
|
console.info('height', result, height);
|
|
subMainWindow.webContents.print({
|
|
silent: true,
|
|
margins: {
|
|
marginType: 'none'
|
|
},
|
|
printBackground: false,
|
|
deviceName: options.printerName,
|
|
copies: 1,
|
|
}, (success) => {
|
|
|
|
if (success) {
|
|
resolvePrint({ type: 'success' })
|
|
}
|
|
subMainWindow.close();
|
|
})
|
|
})
|
|
.catch(err => console.warn(33, err))
|
|
})
|
|
})
|
|
} |