办事大厅最怕两件事:群众排队、窗口打印机乱选。叫号屏叫到了,窗口电脑还在弹浏览器打印框------窗口人员手忙脚乱,群众以为系统又挂了。
信息中心提的需求通常就这几句:
- 取号机 / 窗口打叫号小票(多半 80mm 热敏)
- 办结回执、受理通知打到窗口激光或针式
- 不要弹窗、尽量指定打印机
- 信创环境(统信 / 麒麟)也要能出纸
window.print 解决不了「指定机」和「少弹窗」;给窗口讲浏览器安全模型,他们只想听「一点就出纸」。
这类系统真正卡在哪
浏览器不允许网页随便静默捅打印机。大厅想稳,行业做法就一种:出纸电脑挂本机打印服务,页面把内容推过去。
老大厅系统里 Lodop / C-Lodop 不少。能跑的 Windows 窗口别全拆。烦的是信创工位、新 Vue 办事壳还要继续塞全局脚本,升级一次炸一次。
我现在新模块怎么接
小票和回执本身是 HTML 的,用 npm 包 web-print-pdf:工位装配套客户端,前端 async 调一下。统信 UOS、银河麒麟有对应客户端时,同一套前端调用能少维护两套打印脚本。
bash
npm install web-print-pdf
js
import webPrintPdf from 'web-print-pdf'
async function printHall(html, printerName, opts) {
return webPrintPdf.printHtml(
html,
{
paperFormat: opts.paperFormat || undefined,
width: opts.widthMm ? opts.widthMm + 'mm' : undefined,
margin: opts.margin || { top: '3mm', bottom: '3mm', left: '3mm', right: '3mm' },
printBackground: true,
},
{ printerName, copies: opts.copies || 1 },
{ action: 'print' } // 联调先 preview
)
}
// 叫号小票 → 热敏
await printHall(ticketHtml, '窗口3-叫号80', { widthMm: 80 })
// 办结回执 → A4 激光
await printHall(receiptHtml, '窗口3-回执激光', { paperFormat: 'A4' })
打印机名字写进窗口 / 科室配置。 别信「默认打印机」。名字用包里的 utils.getPrinterList() 抄。
回执已经是后端 PDF 的,走 printPdfByUrl / printPdfByBase64,别再转 HTML。客户端要能访问到政务内网地址,证书和鉴权链现场容易栽。
和 Lodop 怎么共存
老 Windows 窗口、老套打继续 Lodop。新上的信创工位、新事项回执走新方案。字典加打印引擎字段。对信息中心好讲话:不是推翻大厅,是新事项试点。
上线前窗口盯什么
客户端开机自启没有。
叫号机、回执机名字有没有装反。
高峰连打会不会把热敏卡死。
信创工位驱动名是否和配置里的 printerName 一致(名字差一个空格就打飞)。
包名搜 web-print-pdf。百度开发者中心这篇不放外链,细节以 npm 包说明为准。