开始使用
PrintLink 是什么
它解决什么问题、能打印什么内容、装在哪儿、支持哪些系统。
最后更新
PrintLink 是装在连接打印机的那台电脑上的打印服务。业务系统通过它直接调用 打印机出纸,不再依赖浏览器打印对话框或过时的打印插件。
它解决什么问题
网页本身碰不到打印机:window.print() 只能弹出浏览器的打印对话框,既不能
静默出纸,也不能选纸盒、双面、份数,更不知道打印机到底支持什么。
PrintLink 补上这一段:一个装在打印机旁边电脑上的小服务,业务系统把要打印的 内容交给它,由它完成排版、按打印机真实能力校验参数、然后出纸。
能打印什么
| 内容 | 什么时候用 |
|---|---|
| 服务端已经生成好的发票、报表、合同 | |
| 图片 | 照片、扫描件、已渲染好的图 |
| 模板文档 | 面单、小票、价签这类反复填数据的内容,用在线设计器做 |
| 网页(HTML) | 已经有网页版式的信纸、单据 |
| Hiprint 模板 | 已有 vue-plugin-hiprint 模板,见 Hiprint 模板 |
这几种可以混排在同一条任务里——比如「第一页照片、第二到四页报告 PDF、 第五页面单」,用户只看到一次预览、打印机只收到一条任务。见组合打印。
怎么用
业务系统的网页里加一个 <script> 标签引入 SDK,然后按三步走:
await client.connect(); // 连接本机 PrintLink
await client.ensureAuthorized(); // 首次由本机用户确认授权
await client.compose({ queueId }).addPdf(bytes).printAndWait();「本机」是关键:网页通过 127.0.0.1 连接同一台电脑上的 PrintLink,
所以网页部署在公网也没关系——用户在企业系统页面上点打印,纸从用户自己的
电脑出来,PrintLink 不需要对外暴露任何端口。
如果打印机不在用户电脑上(比如仓库里一台共享工作站),需要管理员显式开启 局域网或远程连接,见部署拓扑。
屏幕上看得到什么
- 托盘图标:随时暂停 / 启动服务。
- 控制台窗口:总览、打印机、任务、报表、打印机健康、安全与站点、设置。
- 预览窗口:调用预览时弹出,用户确认后才出纸。
- 浮动进度窗口(可选):打印时在屏幕角落显示进度。
支持的系统
| 平台 | 说明 |
|---|---|
| Windows 10 / 11 | 完整支持 |
| macOS 11+ | 支持 Apple 芯片机型 |
| Linux | 支持 CUPS 的发行版 |