electron 如何获取Node.Js中所有已安装/已连接打印机的列表

iswrvxsc  于 2022-12-08  发布在  Electron
关注(0)|答案(4)|浏览(677)

我正在使用Electron framework在Node.Js中创建一个桌面应用程序,并希望获得Node.Js中安装/连接的所有打印机的列表。我已经尝试过node-printer,但它没有正确安装。

yfjy0ee7

yfjy0ee71#

const { exec } = require('child_process');
  exec('wmic printer list brief', (err, stdout, stderr) => {
  if (err) {
    // node couldn't execute the command
    return;
  }
  // list of printers with brief details
  console.log(stdout);
  // the *entire* stdout and stderr (buffered)
  stdout=stdout.split("  ");
  var printers=[];
  j=0;
  stdout = stdout.filter(item => item);
  for (i = 0; i < stdout.length; i++)
  {
    if(stdout[i]==" \r\r\n" ||stdout[i]=="\r\r\n")
    {
       printers[j]=stdout[i+1];
       j++; 
    }
  }
  // list of only printers name
  console.log(printers);
  console.log(stderr);
});
qc6wkl3g

qc6wkl3g2#

检查此节点程序包。https://www.npmjs.com/package/zuzel-printer

var Printer = require('zuzel-printer');
// Get available printers list
Printer.list();
6za6bjd0

6za6bjd03#

这非常简单。您将得到如下所示的打印机列表

window.webContents.getPrintersAsync().then((data) => {
    // data will be an array of printer objects
}).catch((e) => {
    // handle error here
})

它将返回一个promise。以前使用的是getPrinters()方法,但现在已弃用。请参考官方文档

k3bvogb1

k3bvogb14#

如果以Windows计算机为目标,则可以使用winreg程序包在注册表中搜索打印机。所有本地打印机都可以在
HKEY_LOCAL_MACHINE | SYSTEM | CurrentControlSet | Control | Print | Printers
中的网络打印机
HKEY_LOCAL_MACHINE | SYSTEM | CurrentControlSet | Control | Print | Providers | LanMan Print Services | servers | printers

相关问题