Hubertformin / electron-pos-printer

Electron-pos-printer is a plugin that works to ease paper formatting and printing to thermal printers. it currently supports 80mm, 78mm, 76mm, 58mm, 57mm and 44mm printers thermal printers. it is built with Electron.js and Node.js
Apache License 2.0
318 stars 102 forks source link

Why is the connection always wrong #89

Closed TheBestLL closed 1 year ago

TheBestLL commented 1 year ago

v-print="'#printContent'" is work but use electron-pos-printer is not work => [TimedOutError] Make sure your printer is connected

I tried multiple device names "{ name: 'EPSON_TM_T82III_S_C', displayName: 'TM-T82III-S/C', description: 'EPSON TM-T82-S/C'}" but never succeeded

'use strict'

import { app, protocol, BrowserWindow, screen, Menu, ipcMain } from 'electron' import { PosPrinter } from 'electron-pos-printer' import { createProtocol } from 'vue-cli-plugin-electron-builder/lib' import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer' const isDevelopment = process.env.NODE_ENV !== 'production'

Menu.setApplicationMenu(null)

// Scheme must be registered before the app is ready protocol.registerSchemesAsPrivileged([ { scheme: 'app', privileges: { secure: true, standard: true } } ]) let win=null

async function createWindow() { // Create the browser window. let size = screen.getPrimaryDisplay().workAreaSize let width = parseInt(size.width) let height = parseInt(size.height)

win = new BrowserWindow({ width: width, height: height, webPreferences: { webviewTag: true, // Use pluginOptions.nodeIntegration, leave this alone // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION, contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION } })

if (process.env.WEBPACK_DEV_SERVER_URL) { // Load the url of the dev server if in development mode await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL) if (!process.env.IS_TEST) win.webContents.openDevTools() } else { createProtocol('app') // Load the index.html when not in development win.loadURL('app://./index.html') } }

// Quit when all windows are closed. app.on('window-all-closed', () => { // On macOS it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== 'darwin') { app.quit() } })

app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow() })

// This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on('ready', async () => { if (isDevelopment && !process.env.IS_TEST) { // Install Vue Devtools try { await installExtension(VUEJS_DEVTOOLS) } catch (e) { console.error('Vue Devtools failed to install:', e.toString()) } } createWindow() })

ipcMain.on("printer", (e, arg) => {

console.log("##### printer") // console.log(e,arg) console.log(win.webContents.getPrinters())

const options = { preview: false, // Preview in window or print width: '20px', // width of content body margin: '0 0 0 0', // margin of content body copies: 1, // Number of copies to print // deviceName: "TM-T82III-S/C", // printerName:"TM-T82III-S/C", // printerName: string, check with webContent.getPrinters() timeOutPerLine: 5000, pathTemplate:"pos.html", silent: true, pageSize: { height: 301000, width: 71000 } // page size } const data = [ { type: 'text', // 'text' | 'barCode' | 'qrCode' | 'image' | 'table value: 'SAMPLE HEADING', style: text-align:center;, css: {"font-weight": "700", "font-size": "18px"} } ]

PosPrinter.print(data, options).then(() => { console.log("#打印成功") }).catch((error) => { console.error("错误 error"+error); }); })

// Exit cleanly on request from parent process in development mode. if (isDevelopment) { if (process.platform === 'win32') { process.on('message', (data) => { if (data === 'graceful-exit') { app.quit() } }) } else { process.on('SIGTERM', () => { app.quit() }) } }