做 Web 报表时,hiprint与web-print-pdf经常被放在一起问:「都能预览,都能打,选哪个?」
两者定位并不完全重叠:hiprint 偏可视化打印设计器 + 浏览器打印;web-print-pdf 偏HTML/CSS 出纸 + 本地客户端静默打印 + PDF 预览。官网专题《hiprint 与 web-print-pdf 预览打印插件的比较》对两者有详细讨论,本文在 AIdocs 系列中提炼选型要点,并说明如何组合使用。
| 资源 | 链接 |
|---|---|
| Web打印专家官网 | http://webprintpdf.com/ |
| 客户端下载 | http://webprintpdf.com/downloadApp/ |
| web-print-pdfnpm | https://www.npmjs.com/package/web-print-pdf |
| GitHub | https://github.com/weixiaoyi/web-print-pdf |
1. 一句话定位
| 方案 | 一句话 |
|---|---|
| hiprint | 在浏览器里拖拽设计打印模板,预览为 HTML/CSS,打印多走浏览器打印能力 |
| web-print-pdf | 用现有 HTML/CSS描述版式,经本地Web打印专家转 PDF 并静默送到指定打印机 |
关键差异:柜面「不弹对话框、指定打印机」→ 通常需要 web-print-pdf 这类本地客户端方案;「业务人员自己拖模板、先预览再手动打」→ hiprint 的设计器更有优势。
2. 架构对比
2.1 hiprint
hiprint 设计器(面板 + 文本/表格/条码/二维码…) │ ▼ 预览 HTML / CSS │ ▼ 浏览器 window.print / 插件辅助 │ ▼ 用户选择打印机(通常有对话框)特点:
- 可视化设计:
PrintTemplate、addPrintPanel、addPrintText等 API。 - 组件丰富:文本、表格、长文、条码、二维码、线条等。
- 依赖 jQuery与传统脚本引入方式(以官方文档为准)。
- 打印链路绑定浏览器,静默与指定打印机能力有限。
2.2 web-print-pdf
业务 HTML / CSS(或 hiprint 导出的 HTML) │ ▼ web-print-pdf(WebSocket) │ ▼ Web打印专家:Playwright → PDF → 系统打印栈 │ ▼ 静默出纸 / 或 preview 返回 printPreviewUrl特点:
- 无需设计器也能工作:直接
printHtml(片段)。 action: 'preview'返回 PDF 预览地址;action: 'print'静默出纸。- 需安装Web打印专家;支持 Windows / macOS / 统信 / 麒麟。
3. 功能对照
| 能力 | hiprint | web-print-pdf |
|---|---|---|
| 可视化拖拽设计 | ✅ 核心能力 | ❌ 不提供(用 HTML/CSS) |
| 模板保存 / 复用 | ✅ | ✅(HTML 模板 / 服务端存储) |
| 条码 / 二维码 | ✅ 内置 | ✅(HTML 或图片) |
| 浏览器内 HTML 预览 | ✅ | ✅(preview 模式) |
| PDF 精确预览 | ⚠️ 非核心 | ✅ |
| 静默打印 | ❌ 一般需用户确认 | ✅ |
| 指定 printerName | ❌ | ✅ |
| batchPrint | ⚠️ 自行编排 | ✅ |
| 远程打印 | ❌ | ✅ |
| 跨平台静默 | ⚠️ 受浏览器限制 | ✅(随客户端) |
4. hiprint 更适合的场景
- 实施 / 业务人员需要自己调整模板位置,研发不想改 CSS。
- 打印要求「预览 + 用户点打印」即可,不要求静默。
- 模板以固定面板 + 条码/二维码为主,已在 hiprint 生态内。
- 快速 PoC:引入 JS + 设计器 div即可演示。
示例(hiprint 典型流程,摘自官方用法):
hiprint.init();consttemplate=newhiprint.PrintTemplate();constpanel=template.addPrintPanel({width:100,height:130});panel.addPrintText({options:{width:140,height:15,top:20,left:20,title:"标题",textAlign:"center"},});template.design("#templateDesignDiv");5. web-print-pdf 更适合的场景
- 柜面 / 窗口:必须静默、指定打印机、连打多张。
- 版式已由Vue / React 组件 + CSS实现,希望打印即所见。
- 需要PDF 预览与最终出纸同一套渲染(减少「预览一套、打印一套」)。
- 统信 UOS、银河麒麟、macOS与 Windows 混部。
- 需要printHtmlByUrl拉内网报表,并带 Cookie / Header。
预览 + 打印示例:
importwebPrintPdffrom"web-print-pdf";// 1. 预览constpreview=awaitwebPrintPdf.printHtml(html,{paperFormat:"A4",printBackground:true},{paperFormat:"A4"},{action:"preview"});window.open(preview.printPreviewUrl);// 2. 确认后静默出纸awaitwebPrintPdf.printHtml(html,{paperFormat:"A4",printBackground:true},{printerName:"前台打印机",copies:1},{action:"print"});6. 推荐组合:hiprint 设计,web-print-pdf 出纸
很多项目可以这样拆职责:
| 环节 | 工具 |
|---|---|
| 模板设计 / 业务微调 | hiprint 设计器 |
| 定稿 HTML | 导出或同步为 HTML 片段 |
| 生产静默打印 | web-print-pdf + Web打印专家 |
这样保留 hiprint 的设计体验,又满足静默与跨平台——不必强行用 hiprint 独自承担出纸。
hiprint.design() → 得到 HTML ↓ webPrintPdf.printHtml(html, …, { action: 'print' })7. 开发体验对比
| 维度 | hiprint | web-print-pdf |
|---|---|---|
| 学习成本 | 设计器 + hiprint API | HTML/CSS + npm API |
| 与 Vue/React | 可集成,偏传统脚本 | 原生 ES Module |
| 样式控制 | 面板坐标 + 部分 style | 完整 CSS /@media print |
| 调试 | 设计器预览 | preview URL + 客户端日志 |
| 终端依赖 | 无(浏览器即可设计) | 需 Web打印专家出纸 |
官网专题指出:web-print-pdf 的优势之一是「前端能写出来的 layout,PDF 与纸面一致」——适合研发主导的项目;hiprint 的优势是「非研发也能改模板」。
8. 选型建议
| 你的需求 | 建议 |
|---|---|
| 只要设计器、手动打印 | hiprint |
| 只要静默、指定机、批量 | web-print-pdf |
| 既要设计器又要静默 | 组合 |
| 全平台国产 OS + Windows | 出纸用 web-print-pdf |
| 纯内网 OA,用户习惯点打印 | hiprint 或 window.print 即可 |
9. 小结
- hiprint解决「模板怎么设计、怎么在浏览器里预览」。
- web-print-pdf + Web打印专家解决「怎么静默、指定打印机、跨平台出纸」。
- 对立选型不如组合:设计用 hiprint,生产打印用 web-print-pdf。
客户端下载:http://webprintpdf.com/downloadApp/
更多 API 见 npm:https://www.npmjs.com/package/web-print-pdf
hiprint 为开源/社区打印设计组件,请以官方仓库文档为准。