在国内企业 Web 项目里,Lodop / C-Lodop 与 web-print-pdf 是两条常被放在一起比较的静默打印路线。它们都依赖本机打印服务 ,都能指定打印机,都在政务、金融、柜面场景有长期实践------并不是「谁取代谁」的简单关系 ,而是不同团队习惯、不同设备类型、不同平台范围下的选型问题。
本文参考官网专题《前端打印插件 Lodop 与 web-print-pdf 的比较》,从架构、能力边界、适用场景给出客观选型建议。文中对 Lodop 仅作技术对比,不涉及任何第三方产品的价值判断;具体授权与商务条款请以 Lodop 官方说明为准。
| 资源 | 链接 |
|---|---|
| Web打印专家 官网 | http://webprintpdf.com/ |
| 客户端下载 | http://webprintpdf.com/downloadApp/ |
| web-print-pdf npm | https://www.npmjs.com/package/web-print-pdf |
| GitHub | https://github.com/weixiaoyi/web-print-pdf |
1. 先对齐:两者解决的是同一类问题吗?
| 维度 | Lodop / C-Lodop | web-print-pdf + Web打印专家 |
|---|---|---|
| 核心诉求 | 网页驱动本地打印机静默出纸 | 同上 |
| 终端依赖 | C-Lodop 本地打印服务 | Web打印专家 Electron 客户端 |
| 页面通信 | JS 调 Lodop API → 本地服务 | npm 包 WebSocket → 本地客户端 |
| 典型用户 | 存量 Lodop 项目、针式/票据场景 | 新项目、跨平台混部、前端 npm 栈 |
共同点:纯 window.print() 不够 ,都需要在用户电脑上跑一个受信任的本地代理。
2. 架构对比
2.1 Lodop / C-Lodop
业务页面 JS
│ Lodop 脚本 API(ADD_PRINT_TEXT、ADD_PRINT_HTM...)
▼
C-Lodop 本地服务(用户安装)
▼
Windows 打印队列 → 物理打印机
- 早期有 ActiveX / 浏览器插件形态;现行项目多走 C-Lodop 本地端口服务。
- 打印内容通过 Lodop 专用 API 或 ADD_PRINT_HTM 注入 HTML 片段。
- 对坐标、针式机、连续纸、票据等场景积累深,国内存量项目多。
2.2 web-print-pdf + Web打印专家
Vue / React + web-print-pdf
│ WebSocket JSON(printHtml、batchPrint...)
▼
Web打印专家(HTML→PDF→系统打印栈)
▼
Windows Spooler / CUPS(macOS、统信 UOS、银河麒麟)
▼
物理打印机
- 页面侧是标准 npm + async/await ,样式以 HTML / CSS 为主。
- 客户端内 Playwright 渲染 PDF 再静默下发,跨 Windows / 国产 Linux / macOS 同一套前端 API。
- 详见 AIdocs 系列 01~04 篇。
3. 能力对照(客观)
| 能力 | Lodop / C-Lodop | web-print-pdf |
|---|---|---|
| 静默打印(无浏览器对话框) | ✅(需本地服务) | ✅(需 Web打印专家) |
| 指定打印机 / 份数 / 双面 | ✅ | ✅ |
| HTML / 表格报表 | ✅(HMT / 表格 API) | ✅(HTML 片段 / URL) |
| CSS 排版为主的新报表 | ⚠️ 需适配 Lodop 能力 | ✅ 原生 CSS |
| 条码 / 二维码 | ✅ 内置组件成熟 | ✅(HTML / 图片 / PDF 链路) |
| 针式机、连续纸、精确定位 | ✅ 传统强项 | ⚠️ 依赖驱动与 PDF 版式,需 PoC |
| 批量打印 | ✅ | ✅ batchPrint |
| PDF 预览再打印 | ⚠️ 视集成方式 | ✅ extraOptions.action: 'preview' |
| macOS / 统信 / 麒麟 | ⚠️ 以 Windows 生态为主 | ✅ 多平台客户端 |
| 前端接入方式 | 脚本 + Lodop 语法 | npm install web-print-pdf |
| 模板维护 | Lodop 模板 / 设计习惯 | HTML 模板 / 组件化 |
说明 :上表用于选型 ,不代表某一方案「全面优于」另一方案。Lodop 在特定硬件与模板体系下仍有不可替代的实践经验;web-print-pdf 在现代前端栈 + 跨平台上更省事。
4. Lodop 更适合哪些场景?
以下情况继续用或保留 Lodop 是合理选择:
- 已有大量 Lodop 模板,迁移成本高于维护成本。
- 针式打印机、多联单、毫米级坐标 等,团队已有成熟 Lodop 调优经验。
- 封闭 Windows 内网,用户已统一安装 C-Lodop,运行稳定。
- 业务人员通过 Lodop 模板工具维护 版式,研发只负责传参。
- 采购与运维体系已纳入 Lodop 正版授权与升级流程。
这类项目不必为了「技术新潮」强行替换,稳定优先。
5. web-print-pdf 更适合哪些场景?
以下情况优先考虑 web-print-pdf + Web打印专家:
- 新项目,团队以 Vue / React + CSS 为主,希望打印版式与页面版式一致。
- Windows + 统信 UOS / 银河麒麟 + macOS 混部,希望一套前端代码。
- 需要 PDF 预览 (
action: 'preview')再静默出纸。 - 需要 batchPrint、远程打印、内网 URL 带 Cookie 等(见 05、08 篇)。
- 希望用 npm 版本管理、TypeScript、与现有工程一致的错误处理。
最小接入示例:
javascript
import webPrintPdf from "web-print-pdf";
await webPrintPdf.printHtml(
document.getElementById("print-area").innerHTML,
{ paperFormat: "A4", printBackground: true },
{ printerName: "前台打印机", copies: 1 },
{ action: "print" }
);
终端用户安装:http://webprintpdf.com/downloadApp/
6. 能否共存?------ 推荐渐进式策略
很多单位不是「二选一」,而是分模块、分阶段:
| 阶段 | 做法 |
|---|---|
| 并存 | 老窗口 / 针式票据继续 Lodop;新模块用 web-print-pdf |
| 试点 | 选一条非针式、版式以 CSS 为主的线做 PoC |
| 扩展 | 统信 / Mac 新网点直接部署 Web打印专家,不再扩 Lodop 范围 |
| 收敛 | 仅当模板迁移完成、PoC 通过后再下线 Lodop 模块 |
封装示例(思路):
javascript
async function smartPrint(html, { prefer = "web-print-pdf" } = {}) {
if (prefer === "web-print-pdf") {
try {
await webPrintPdf.getPrinterList();
return webPrintPdf.printHtml(html, { paperFormat: "A4" }, {}, { action: "print" });
} catch {
// 客户端未启动时 fallback 到既有 Lodop 流程
return printWithLodop(html);
}
}
return printWithLodop(html);
}
7. 样式与开发体验
Lodop :通过 ADD_PRINT_TEXT、SET_PRINT_STYLEA 等 API 控制字体、位置、对齐,学习曲线在 Lodop 语法,与 CSS 不是同一套模型。
web-print-pdf :版式交给 HTML + CSS (含 @media print),与前端日常开发一致;复杂报表可直接复用页面片段。
官网专题中强调:若团队已经用 CSS 搭好了打印区域,web-print-pdf 往往是把 DOM 交给 printHtml,无需再学一套打印 DSL。
8. 部署与运维
| 项 | Lodop / C-Lodop | web-print-pdf |
|---|---|---|
| 终端安装 | C-Lodop 安装包 / 运维推送 | Web打印专家安装包 |
| 版本升级 | Lodop 与 C-Lodop 版本匹配 | 客户端 + npm 包分别升级 |
| 联调 | 检查 C-Lodop 是否启动、端口 | 检查 Web打印专家、WebSocket、打印机名 |
| 日志 | 依 Lodop 集成方式 | 客户端 HTML/PDF/打印日志 API |
9. 选型决策树
需要静默 + 指定打印机?
├─ 否 → window.print / Print.js 等(见 11 篇)
└─ 是
├─ 大量 Lodop 模板 + 针式/坐标场景 + 仅 Windows?
│ └─ 倾向保留 Lodop,新需求评估是否 worth 迁移
├─ 需要统信 / 麒麟 / macOS?
│ └─ 倾向 web-print-pdf + Web打印专家
├─ 新系统、CSS 报表为主?
│ └─ 倾向 web-print-pdf
└─ 两者皆有?
└─ 分模块并存 + 渐进迁移
10. 小结
- Lodop 是国内长期使用的专业打印方案,在特定设备与模板体系下仍有充分理由继续使用。
- web-print-pdf + Web打印专家 更适合 现代前端 + 跨平台 + CSS 版式 + npm 工程化 的新增需求。
- 理性选型 = 场景匹配 + 迁移成本 + 运维能力,而非简单「新旧替换」。
如需联调 web-print-pdf,可从官网下载客户端并在内置「运行示例」中对照 API;Lodop 存量项目则建议在测试环境做同单据双轨出纸对比后再定迁移范围。
Lodop 为第三方商业产品,请遵循其官方授权与使用条款。本文仅供技术选型参考。