搜「windows静默打印」「静默打印设置」,多半是:网页点打印还弹框,或者装了东西仍「没反应」。Windows 工位上,设置顺序错了,代码写对也会挂。
下面按可勾选的步骤写。不讲竞品对比,只讲 Windows 现场怎么设。示例包名 web-print-pdf,不放外链。
目标状态长什么样
设置完成后应同时满足:
- 客户端托盘常驻 / 开机自启
- 网页能连上本机打印服务
- 能枚举到打印机列表
print动作不弹浏览器打印框,纸从指定机出来
步骤 1:装客户端并确认在跑
- 安装 Web 打印专家 Windows 客户端(与 npm 包配套的那套)。
- 启动后看托盘图标是否在。
- 设置里打开开机自启。
- 重启一次电脑,确认托盘自己起来------很多现场「第二天全挂」就栽在这。
客户端没开,任何「静默」API 都会失败。这和业务代码无关。
步骤 2:防火墙与本机端口
客户端在本机开 WebSocket(常见是本机回环地址上的固定端口)。若公司策略拦本地回环、或安全软件拦截:
- 允许该客户端程序联网 / 本地通信
- 别把它当病毒隔离
- 组策略若禁用了本地环回例外,找运维开白名单
症状像:页面一直连不上、超时、getConnectStatus 失败。
步骤 3:核对打印机名字
Windows「设备和打印机」里显示的名称,必须和代码里 printerName 完全一致(空格、括号、中英文都算)。
前端:
bash
npm install web-print-pdf
js
import webPrintPdf from 'web-print-pdf'
const list = await webPrintPdf.utils.getPrinterList()
console.log(list) // 把要用的名字抄进门店/仓库配置
别信「默认打印机」。谁装过驱动谁知道有多玄学。
步骤 4:网页侧最小联调
js
await webPrintPdf.printHtml(
'<h1>Windows 联调单</h1><p>静默打印测试</p>',
{ paperFormat: 'A4', printBackground: true },
{ printerName: '从列表抄来的名字', copies: 1 },
{ action: 'preview' } // 先预览,再改 print
)
通过后再把 action 改成 print。热敏机记得纸宽用 width: '80mm' 一类参数,别默认 A4。
步骤 5:上线检查表(可贴到实施文档)
- 客户端已装且托盘在
- 开机自启已开,重启验证过
- 防火墙/安全软件未拦
-
getConnectStatus为可用 -
getPrinterList能看到目标机 - 配置里的
printerName与列表一致 - 预览 OK 后再开静默
- 换一台同配置工位复测(避免「开发机特例」)
常见「设置好了仍失败」
| 现象 | 先查 |
|---|---|
| 还弹浏览器框 | 是否仍在调 window.print,没走客户端 API |
| 提示连不上 | 客户端是否退出、端口是否被占 |
| 打到错的机 | printerName 是否抄错或被默认机覆盖 |
| 只有管理员账号能打 | 普通用户权限 / 驱动是否按用户安装 |
收束
Windows 网页静默打印,七成问题在客户端自启、防火墙、打印机名,三成才在业务模板。按上面清单走完,再改 HTML/CSS。
包名搜 web-print-pdf。本文不放链接。