Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无对话框的电子打印(静默打印)_Javascript_Printing_Electron_Receipt - Fatal编程技术网

Javascript 无对话框的电子打印(静默打印)

Javascript 无对话框的电子打印(静默打印),javascript,printing,electron,receipt,Javascript,Printing,Electron,Receipt,我只需要使用electron js来构建我的桌面应用程序,我使用simple BrowserWindow在应用程序中加载我的网站 我添加了一些功能,以便在连接出现问题时重新加载窗口,这样当互联网再次打开时,应用程序将重新加载页面,从而不会显示“未找到页面” 在我的网页上,它收到了一份订单,并将其打印到收据打印机上,我不希望打印对话框显示出来,是否有任何解决方案以静默方式打印收据 我知道如何用firefox无声打印,但我现在需要在我的电子应用程序中使用它 我的代码: const electron

我只需要使用electron js来构建我的桌面应用程序,我使用simple BrowserWindow在应用程序中加载我的网站

我添加了一些功能,以便在连接出现问题时重新加载窗口,这样当互联网再次打开时,应用程序将重新加载页面,从而不会显示“未找到页面”

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

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

我的代码:

const electron=require('electron'))
const app=electron.app
const BrowserWindow=electron.BrowserWindow
const path=require('路径')
常量url=require('url')
让主窗口
函数createWindow(){
主窗口=新浏览器窗口({
宽度:800,
身高:600,
最小宽度:800,
身高:600,
图标:_dirname+'/icon.ico'
})
mainWindow.loadURL(url.format({
路径名:path.join(uu dirname,'index.html'),
协议:“文件:”,
斜杠:对
}))
mainWindow.on('closed',函数(){
主窗口=空
})
}
应用程序打开('ready',createWindow)
应用程序打开('window-all-closed',函数(){
if(process.platform!=='darwin'){
app.quit()
}
})
应用程序打开('激活',功能(){
如果(主窗口===null){
createWindow()
}

})
静音
选项:

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

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

let win=新浏览器窗口(参数);
win.webContents.print({silent:true});

我不知道这是否有助于您的具体情况,但我遇到了一个问题,我需要从Windows上运行的Electron应用程序将原始文本打印到带有两个命令代码的点阵打印机(Epson ESC/p)。我最后做的是将纯文本和命令代码一起写入一个.txt文件,然后将该文件传递给Windows的“print”命令。它无声地打印,效果很好。您可能遇到的唯一问题是,它会在作业完成后将页面的其余部分输出,尽管我不知道收据打印机是否也会这样做。以下是我使用的代码:

var fs=require('fs');
var printString=“需要使用可选ascii命令打印的任何文本”;
var printer=“lpt1”;
var tmpFileName=“c:\tmp.txt”;
fs.writeFileSync(tmpFileName,printString,“utf8”);
var child=require('child_process')。exec;

子项('print/d:'+printer+'''+tmpFileName+'')你好,我在我的代码中尝试了这个,但它仍然显示打印对话框,我使用mac os。我不知道它是否能在windows下工作,但它应该能在任何情况下工作OS@ghybs甚至不在windows中工作。它将打开“打印”对话框。@mayank可以随意打开一个新问题,其中包含相关的详细信息和代码,以重现您的问题。
const BrowserWindow=electron.BrowserWindow const ipc=electron.ipcMain const shell=electron.shell ipc.on('print-to-pdf',function(event){const pdfPath=path.join(os.tmpdir(),'print.pdf'))const win=BrowserWindow.fromWebContent(event.sender)win.WebContent.print({silent:true},函数(error,data){fs.writeFile(pdfPath,data,函数(error){/*print document*/})
我更改了electron api demos\main process\media\pdf.js文件,并通过传递参数silent:true,该参数在打印时仍会提示我打印对话框。@ghybs as firefox 57+版jsprint插件不再工作,因此我无法以静默方式打印文档。嘿,找到解决方案了吗?