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

如何从webContents.getPrintersAsync()结果中筛选可用打印机?

筛选Electron中可用打印机的方法

首先,webContents.getPrintersAsync()返回的打印机对象里,有几个核心属性可用于判断设备是否处于就绪状态:

关键判断属性

  • status:整数类型,代表打印机状态码。0通常表示打印机处于就绪状态,非0值一般对应异常(如缺纸、缺墨、离线、故障等)。不同平台的状态码细节略有差异,但0作为就绪的标准基本通用。
  • isOnline:布尔值,直接标识打印机是否处于在线状态。
  • isConnected:布尔值,标识打印机是否已与系统建立连接(对物理打印机参考性更强)。

推荐筛选逻辑

你可以组合这些属性过滤出符合要求的打印机,示例代码如下:

async function getAvailablePrinters() {
  const allPrinters = await webContents.getPrintersAsync();
  return allPrinters.filter(printer => {
    // 核心判断:状态就绪 + 在线 + 已连接
    return printer.status === 0 && printer.isOnline && printer.isConnected;
  });
}

额外注意事项

  • 部分虚拟打印机(如系统自带的PDF打印机)可能始终返回status=0、isOnline=true,若需排除这类设备,可额外判断printer.name是否包含特定关键词(比如"PDF"、"虚拟"等)。
  • 不同操作系统的状态码细节有差异:比如Windows下非0状态码可能对应具体错误(如1=缺纸,2=缺墨),macOS和Linux的状态码定义大同小异,若需更精细的错误排除,可针对平台做适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:34:50