web-print-pdf:基于 Playwright 的 Web 打印解决方案
你有没有遇到过这样的场景:
电商后台需要批量打印发货单,每点一次打印,浏览器就弹出一次预览窗口,员工不得不守在电脑前不断点击'确认打印'; 企业 ERP 系统要输出上百页的财务报表,结果样式错乱、表格断页,还得手动调整; 连锁门店需要远程打印小票,技术人员却告诉你'Web 应用没法直接指定远程打印机'……
这些问题的根源不在于'能不能打印',而在于浏览器为了安全限制了 Web 应用对打印硬件的直接控制。而今天要介绍的 web-print-pdf,正是为解决这些专业打印需求而生的 Node.js 工具包。
它是什么?
web-print-pdf 是一个基于 Playwright 内核的跨平台 Web 打印解决方案,以 npm 包形式提供。它的核心理念是:让 Web 前端像调用本地打印一样,轻松实现静默打印、远程打印、PDF 生成等企业级功能。
你不需要改造现有系统,不需要让用户安装额外的浏览器插件,只需要几行代码,就能让 Web 应用拥有桌面软件般的打印控制能力。
它能解决哪些实际问题?
✅ 真正的静默打印(无弹窗、预览)
传统的 window.print() 必然会弹出系统打印对话框,用户必须手动点击'打印'才能继续。而在 web-print-pdf 中,只需一个参数:
import { printHtml } from 'web-print-pdf';
await printHtml({
content: document.getElementById('receipt').innerHTML,
silent: true, // 无弹窗,无预览
printer: 'Receipt_Printer', // 直接指定打印机
copies: 2
});
收银员点一下按钮,小票自动打印,全程无感知,高峰期效率提升立竿见影。
✅ 精确控制打印机和纸张
你可以从系统中获取已安装的打印机列表,并动态指定目标打印机:
// 获取所有打印机
const printers = await getPrinters();
// 选择标签打印机
const labelPrinter = printers.find(p => p.name.includes('Zebra'));
await printHtml({
: shippingLabelHtml,
: labelPrinter.,
: {
: ,
:
}
});

