侧边栏壁纸
博主头像
不会水的鱼 博主等级

人生就是白干加白干!

  • 累计撰写 4 篇文章
  • 累计创建 4 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Electron使用pdf-to-printer获取打印机列表中文乱码

shmily1214
2026-02-28 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

前言

最近在实现批量打印pdf文件的功能,发现pdf-to-printer可以实现需求,支持以下功能:

  • 获取打印机列表
  • 获取默认打印机
  • 发送文件到指定的打印机

但是在使用过程中发现如果电脑上存在中文名称的打印机列表,返回的数据是乱码的。查看源码发现插件内部调用了powershell执行了相关命令,而从powershell返回来的数据就是乱码的,因此问题的关键就是解决powershell中文乱码。

解决方法

找到node_modules下面的pdf-to-printer源码,修改get-printers.ts文件,在powershell的命令中增加如下代码:

chcp 65001;

注意,这个分号不能丢,表示同时执行,65001表示utf8编码,完整代码:

try {
    throwIfUnsupportedOperatingSystem();
    const { stdout } = await execFileAsync("Powershell.exe", [
      "-Command",
      `chcp 65001;Get-CimInstance Win32_Printer -Property DeviceID,Name,PrinterPaperNames`,
    ]);
    return stdoutHandler(stdout);
  } catch (error) {
    throw error;
  }

修改后重新执行npm run build编译,然后把编译后的文件替换node_modules下pdf-to-printer里面的dist。

image-1678245200329.png

其他

这样修改后,如果重新安装了依赖会导致修改丢失了,所以建议使用package-patch来修改源码。

0

评论区