没有对话的电子打印(静音打印)

时间:2017-10-30 14:05:22

标签: javascript printing electron receipt

我只需要使用电子js来构建我的桌面应用程序,我使用简单的BrowserWindow在应用程序中加载我的网站。

我在连接问题时添加了一些重新加载窗口的功能,所以当互联网再次启动时,应用程序会重新加载页面,因此不会显示“找不到页面”。

在我的网页上收到订单并将其打印到收据打印机,我不希望打印对话框显示出来,是否有任何解决方案可以默认打印收据?

我知道如何用firefox打印它,但我现在需要在我的电子应用程序中使用它。

我的代码:

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow

const path = require('path')
const url = require('url')

let mainWindow

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    minWidth: 800,
    minHeight: 600,
    icon: __dirname + '/icon.ico'
  })

  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }))

  mainWindow.on('closed', function () {
    mainWindow = null
  })

}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', function () {
  if (mainWindow === null) {
    createWindow()
  }
})

2 个答案:

答案 0 :(得分:3)

BrowserWindow.webContents.printsilent选项:

  

打印窗口的网页。当silent设置为true时,如果deviceName为空,Electron将选择系统的默认打印机以及打印的默认设置。

     

在网页中调用window.print()等同于调用webContents.print({silent: false, printBackground: false, deviceName: ''})

let win = new BrowserWindow(params);

win.webContents.print({silent: true});

答案 1 :(得分:0)

我不知道这是否对您的特定情况有所帮助,但是我遇到了一个问题,我需要通过电子应用程序将原始文本打印到带有两个命令代码(Epson ESC / P)的点阵打印机上在Windows上运行。我最终要做的是将纯文本和命令代码一起写入.txt文件,然后将文件传递给Windows“ print”命令。它安静地打印,效果很好。您可能有的唯一问题是,它会在作业后将页面的其余部分送出,尽管我不知道收据打印机是否会执行相同的操作。这是我使用的代码:

var fs = require('fs');
var printString = "whatever text you need to print with optional ascii commands";
var printer = "lpt1";

var tmpFileName ="c:\tmp.txt";
fs.writeFileSync(tmpFileName,printString,"utf8");

var child = require('child_process').exec;
child('print /d:' + printer + ' "' + tmpFileName + '"');

“打印机”变量可以是lpt1 / lpt2或网络打印机共享。在此处查看有关打印命令的参考:

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/print

我还没有尝试过,但是我确信可以使用lpr命令为Mac / Linux散列类似的东西。

无论如何,希望这对某人有帮助。我花了一天的时间试图找到一种本机的Electron方法,以使用打印机的内置字体将其打印到旧的点阵中,结果我只需要发出一个简单的Windows命令即可。