Lodop 与 web-print-pdf 选型指南

在国内企业 Web 项目里,Lodop / C-Lodopweb-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 专用 APIADD_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 是合理选择

  1. 已有大量 Lodop 模板,迁移成本高于维护成本。
  2. 针式打印机、多联单、毫米级坐标 等,团队已有成熟 Lodop 调优经验。
  3. 封闭 Windows 内网,用户已统一安装 C-Lodop,运行稳定。
  4. 业务人员通过 Lodop 模板工具维护 版式,研发只负责传参。
  5. 采购与运维体系已纳入 Lodop 正版授权与升级流程

这类项目不必为了「技术新潮」强行替换,稳定优先


5. web-print-pdf 更适合哪些场景?

以下情况优先考虑 web-print-pdf + Web打印专家

  1. 新项目,团队以 Vue / React + CSS 为主,希望打印版式与页面版式一致。
  2. Windows + 统信 UOS / 银河麒麟 + macOS 混部,希望一套前端代码
  3. 需要 PDF 预览action: 'preview')再静默出纸。
  4. 需要 batchPrint、远程打印、内网 URL 带 Cookie 等(见 05、08 篇)。
  5. 希望用 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_TEXTSET_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 为第三方商业产品,请遵循其官方授权与使用条款。本文仅供技术选型参考。