You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NWJS(Node-Webkit)如何获取系统默认打印机?

解决NWJS中识别系统默认打印机的问题

方法1:直接解析win.getPrinters返回结果

win.getPrinters(callback)返回的打印机对象在不同系统中自带默认标识:

  • Windows系统:打印机对象包含isDefault布尔属性,值为true时即为默认打印机
  • macOS系统:打印机对象包含default布尔属性,值为true时即为默认打印机

代码示例:

const win = nw.Window.get();
win.getPrinters(function(printers) {
  const defaultPrinter = printers.find(p => p.isDefault || p.default);
  
  if (defaultPrinter) {
    console.log('默认打印机:', defaultPrinter.name);
    // 后续可直接使用该打印机执行打印逻辑
  } else {
    console.log('未检测到系统默认打印机');
  }
});

方法2:用Node.js第三方模块实现跨系统兼容

如果上述方法在你的环境中不生效,可使用printer模块来获取默认打印机,兼容性更强:

  1. 安装模块:
npm install printer --save
  1. 调用示例:
const printer = require('printer');
const defaultPrinter = printer.getDefaultPrinter();

if (defaultPrinter) {
  console.log('默认打印机名称:', defaultPrinter.name);
  // 示例:提交打印任务
  printer.printDirect({
    data: '测试打印内容',
    printer: defaultPrinter.name,
    type: 'TEXT',
    success: jobID => console.log('打印任务提交成功,ID:', jobID),
    error: err => console.error('打印失败:', err)
  });
} else {
  console.log('系统未设置默认打印机');
}

补充:Linux系统的额外处理

部分Linux发行版中,可通过执行系统命令lpstat -d获取默认打印机,借助Node.js的child_process实现:

const { exec } = require('child_process');
exec('lpstat -d', (err, stdout) => {
  if (!err) {
    const defaultPrinterName = stdout.split(': ')[1].trim();
    console.log('Linux默认打印机:', defaultPrinterName);
  }
});

打包注意事项

使用printer模块时,打包NWJS应用前需用nw-gyp重新编译模块以匹配NWJS版本:

nw-gyp rebuild --target=<你的NWJS版本号> --arch=x64

内容的提问来源于stack exchange,提问作者Xsmael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 22:18:21