如何从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
相关产品推荐
相关产品推荐

