簡體   English   中英

如何使用 ESC/POS 打印機從 javascript 開始打印(無界面)

[英]How to print with a ESC/POS printer starting from javascript (no interface)

我正在嘗試從使用 Javascript 的電子應用程序打印收據。

我知道 javascipt 不允許從客戶端打印,所以我必須使用第三方語言或程序來打印。 我嘗試了 Qz Tray 2.0,但后來我遇到了證書問題,所以現在我試圖找到另一種方法:

目前我需要做的很簡單:將數據傳遞到安裝在 Windows 上的選定打印機,該打印機將使用正確的驅動程序。

編輯 :

我有多台打印機,連接在網絡上,所以我需要先獲得 IP 地址,然后才能做任何事情。 Electron 沒有為此提供選項(我只能獲取名稱和驅動程序,而不能獲取 IP)。

但作為最后的手段,我可​​以讓用戶輸入 IP。

歡迎任何想法,謝謝

取決於您要准確打印的內容,但您可以嘗試電子打印

您可以使用快速的“helloworld”代碼段查看它是否在您的系統中工作:

const printer = require('electron-print');
app.on('ready', function() {
    printer.print("Text sent to printer.")
});

您可以嘗試的另一件事是使用電子的 PrinterInfo[] 對象。 您可以使用打印機獲取 JSON 數組,如下所示:

contents.getPrinters()

對於每台打印機,它將返回一個“選項”配置對象( docs ),您可以使用它來打印:

contents.print([options])

這將打印當前網頁。 您甚至可以通過將打印內容打開到隱藏窗口並使用以下命令來進行靜默打印:

webContents.print({silent: true, printBackground: false, deviceName: ''})

真的取決於你想做什么。 您可以使用一堆配置參數。

評論后編輯:

似乎電子打印包裝了節點打印,它支持使用 printDirect() 將打印命令直接發送到打印機,這來自他們的原始打印示例:

cmds = 'your printer commands, guess you have the printer spec'
printer.printDirect({data: cmds
    , type: 'RAW'
    , success:function(jobID: any){
        console.log("sent to printer with ID: "+jobID);
     }
    , error:function(err: any){console.log(err);}
});

不確定電子打印是否也為此功能提供了一個包裝器,但如果您認為值得一試,您可以輕松地自己添加它。

編輯2:

剛剛發現這個: https : //www.neodynamic.com/articles/How-to-print-raw-ESC-POS-commands-from-Javascript

嗯,這個問題不好解釋。 第一個答案應該是文章的答案,但如果您需要其他解決方案,您可以使用 Windows 或任何操作系統命令行並像這樣運行它們:

在 Windows 上,在您的應用程序根目錄中創建一個 .bat 文件

shell.openItem(fullPath)

使用此命令您可以運行 bat 文件,記住從“electron”或“remote”導入 shell

以及從命令行打印的指南(即使我還沒有讀過)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM