import path from "path"; import { app, BrowserWindow, ipcMain } from "electron"; const { PosPrinter } = require("electron-pos-printer-vue"); let win; app.whenReady().then(() => { win = new BrowserWindow({ title: "银收客", width: 1024, height: 768, fullscreenable: true, fullscreen: process.env.VITE_DEV_SERVER_URL ? false : true, simpleFullscreen: true, frame: process.env.VITE_DEV_SERVER_URL ? true : false, webPreferences: { // 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法 nodeIntegration: true, contextIsolation: false, }, }); // You can use `process.env.VITE_DEV_SERVER_URL` when the vite command is called `serve` if (process.env.VITE_DEV_SERVER_URL) { win.loadURL(process.env.VITE_DEV_SERVER_URL); // 使用vite开发服务的url路径访问应用 // win.webContents.openDevTools(); } else { win.loadFile(path.resolve(__dirname, "../dist/index.html")); // 打包后使用文件路径访问应用 } app.on("activate", () => { // 在 macOS 系统内, 如果没有已开启的应用窗口 // 点击托盘图标时通常会重新创建一个新窗口 if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); ipcMain.on("quitHandler", (_, msg) => { app.quit(); }); // 创建打印小票子窗口 // const printWin = new BrowserWindow({ // show: true, // webPreferences: { // // 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法 // nodeIntegration: true, // contextIsolation: false, // }, // }); // if (process.env.VITE_DEV_SERVER_URL) { // // 加载打印的html文件 // printWin.loadFile(path.join(__dirname, "../public/print.html")); // } else { // printWin.loadFile(path.resolve(__dirname, "../dist/print.html")); // 打包后使用文件路径访问应用 // } // win.webContents.getPrintersAsync().then(res => { // // console.log('list', res) // }) // ipcMain.on("printerInfoSync", (event, params) => { // // console.log(JSON.parse(params)) // printWin.webContents.send("getParams", params); // }); // 执行打印操作 ipcMain.on('printStart', (event, arg) => { console.log('开始打印', arg) let name = 'Xprinter XP-365B' // let name = 'Generic / Text Only' const options = { silent: true, preview: false, // width of content body margin: '0 0 0 0', // margin of content body copies: 1, // Number of copies to print printerName: name, // printerName: string, check with webContent.getPrinters() // timeOutPerLine: 400, pageSize: { height: 22860, width: 30480 } // page size } const data = [ { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: '#B5 B6', style: { "font-weight": "700", "font-size": "18px" } }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table' value: '喔喔奶茶 x100', style: { "font-size": "18px" }, }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table' value: '麻辣味', style: { "font-size": "18px" }, }, { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table' value: '03-08 16:32 ¥123.00', style: { "font-size": "18px" }, } ] PosPrinter.print(data, options) .then(() => { }) .catch((error) => { console.error(error); }); // printWin.webContents.print({ // silent: true, // deviceName: name, // pageSize: { // width: 30480, // height: 22860 // } // }) }) }); app.on("window-all-closed", () => { if (process.platform !== "darwin") app.quit(); });