无对话的电子打印(无声打印)
Electron print without dialog (silent print)
我只需要使用 electron js 来构建我的桌面应用程序,我使用简单的 BrowserWindow 在应用程序中加载我的网站。
我添加了一些功能以在连接出现问题时重新加载 window,因此当互联网再次打开时,应用程序将重新加载页面,因此它不会显示 "Page not found"。
在我的网页中它收到了一个订单并打印到收据打印机,我不想显示打印对话框,有什么解决方案可以静默打印收据吗?
我知道如何使用 firefox 静默打印它,但我现在需要在我的 electron 应用程序中使用它。
我的代码:
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()
}
})
有silent
选项BrowserWindow.webContents.print
:
Prints window’s web page. When silent
is set to true
, Electron will pick the system’s default printer if deviceName
is empty and the default settings for printing.
Calling window.print()
in web page is equivalent to calling webContents.print({silent: false, printBackground: false, deviceName: ''})
.
let win = new BrowserWindow(params);
win.webContents.print({silent: true});
我不知道这是否对您的具体情况有帮助,但我 运行 遇到了一个问题,我需要将原始文本打印到点阵打印机并附上几个命令代码(Epson ESC/P) 来自 Electron 应用 运行 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 + '"');
'printer' 变量可以是 lpt1/lpt2 或网络打印机共享。请在此处查看打印命令的参考:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/print
我还没有尝试过,但我确信可以使用 lpr 命令为 Mac/Linux 哈希出类似的东西。
无论如何,希望这对某人有所帮助。我花了一天的时间试图找到一种原生的 Electron 方式来使用打印机的内置字体打印到我们的旧点阵,结果我只需要发出一个简单的 Windows 命令就可以了。
我只需要使用 electron js 来构建我的桌面应用程序,我使用简单的 BrowserWindow 在应用程序中加载我的网站。
我添加了一些功能以在连接出现问题时重新加载 window,因此当互联网再次打开时,应用程序将重新加载页面,因此它不会显示 "Page not found"。
在我的网页中它收到了一个订单并打印到收据打印机,我不想显示打印对话框,有什么解决方案可以静默打印收据吗?
我知道如何使用 firefox 静默打印它,但我现在需要在我的 electron 应用程序中使用它。
我的代码:
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()
}
})
有silent
选项BrowserWindow.webContents.print
:
Prints window’s web page. When
silent
is set totrue
, Electron will pick the system’s default printer ifdeviceName
is empty and the default settings for printing.Calling
window.print()
in web page is equivalent to callingwebContents.print({silent: false, printBackground: false, deviceName: ''})
.
let win = new BrowserWindow(params);
win.webContents.print({silent: true});
我不知道这是否对您的具体情况有帮助,但我 运行 遇到了一个问题,我需要将原始文本打印到点阵打印机并附上几个命令代码(Epson ESC/P) 来自 Electron 应用 运行 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 + '"');
'printer' 变量可以是 lpt1/lpt2 或网络打印机共享。请在此处查看打印命令的参考:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/print
我还没有尝试过,但我确信可以使用 lpr 命令为 Mac/Linux 哈希出类似的东西。
无论如何,希望这对某人有所帮助。我花了一天的时间试图找到一种原生的 Electron 方式来使用打印机的内置字体打印到我们的旧点阵,结果我只需要发出一个简单的 Windows 命令就可以了。