最简单的 Web 打印方案:用 5 分钟上手 web-print-pdf(npm 包) - 实践

news/2025/10/10 11:22:46/文章来源:https://www.cnblogs.com/ljbguanli/p/19132682

最简单的 Web 打印方案:用 5 分钟上手 web-print-pdf(npm 包) - 实践

这篇文章给出一条“开箱即用、稳定、跨浏览器”的 Web 打印最简路线:使用 web-print-pdf(npm 包)。不需要安装浏览器插件、无需控件注册表操作,也不用学习繁琐的打印脚本,只需几行代码即可把 HTML、PDF、图片精准送到打印机。

为什么选择 web-print-pdf

  • 简单:API 极简,常见打印需求(PDF/HTML/图片、静默打印、批量打印)一步到位。
  • 可靠:通过本地服务与 Electron/无头内核协作,规避浏览器安全限制与差异。
  • 可控:纸张大小、方向、边距、份数、目标打印机、队列、并发都可配置。
  • 可移植:前端 npm 生态集成方便,后端、桌面端、混合架构都能无缝接入。

相比传统方案:

  • 和 Lodop 一类控件相比:无需控件安装、证书、浏览器兼容适配,前端接入更轻量。
  • 和纯浏览器方案相比:无需依赖用户交互弹窗或浏览器实验开关,静默打印更稳定。
  • 和重型可视化模板库相比:更聚焦“把已生成的内容稳妥印出”,学习成本更低。

5 分钟快速上手

1)安装
npm i web-print-pdf

确保运行时已部署本地打印服务(项目提供 Electron 打包与一键安装能力);前端仅调用 API 即可。

2)打印 PDF(最常见场景)
import { printPdfByUrl
} from 'web-print-pdf';
async function quickPrint() {
await printPdfByUrl({
url: 'https://example.com/order.pdf',
printer: 'HP-LaserJet',
copies: 1,
duplex: false,
paper: 'A4',
silent: true,
});
}
3)打印 HTML(自动生成或远程页面)
import { printHtmlByUrl, printHtmlByBase64
} from 'web-print-pdf';
// 远程 URL
await printHtmlByUrl({
url: 'https://example.com/preview.html', silent: true
});
// Base64 字符串(适合前端动态生成的 DOM + 样式)
await printHtmlByBase64({
base64: btoa('<html>...</html>'), silent: true
});
4)打印图片
import { printImageByUrl, printImageByBase64
} from 'web-print-pdf';
await printImageByUrl({
url: 'https://example.com/ticket.png', silent: true
});

典型业务场景

  • 电商/仓配:批量面单、拣货单、出库单静默打印;支持队列与并发控制,防止卡顿。
  • 连锁零售:小票、价签、标签快速打印,指定门店默认打印机自动落盘。
  • 医院/政务:表单、回执、凭证批量打印;纸张与边距严格可控,满足合规要求。
  • 制造/物流:工艺卡/条码标签打印;支持图片、PDF 混合任务一并下发。

配置项一览(常用)

小贴士:实际可用参数会因驱动与机型差异有所不同,建议先通过打印机列表与纸型查询接口进行校验。

和其它方案的对比

  • 对比 Lodop:无需安装与授权,API 与前端生态更友好;同时保留纸型与静默能力。
  • 对比 hiprint:后者偏重可视化模板设计,适合“模板搭建”;web-print-pdf 则专注“把内容稳定印出”,二者可互补。
  • 对比浏览器原生 window.print:无需用户点击、可静默、可选打印机、可批量、可并发。

最佳实践

常见问题

Q:支持哪些浏览器? 只要能调用前端接口即可,核心能力由本地服务/Electron 内核承担,规避浏览器差异。

Q:如何静默打印? 设置 silent: true,以及在部署时开启本地服务对应权限配置即可。

Q:如何指定纸张和边距? 通过 papermarginorientation 等参数,并结合打印机驱动能力。

Q:能否批量任务并发? 内置队列与并发控制,避免阻塞;也可按业务维度分组串行。

结语

如果你的目标是“最短时间把内容稳定打印出来”,web-print-pdf(npm 包)就是当前最简单、最有效的路径:

现在就为你的项目加入可靠的打印能力吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年塑木厂家最新推荐:实力厂家排行榜 —— 含围栏地板栈道等产品企业技术服务优势解析塑木地板/栈道/护栏/门板/凉亭/墙板/托盘厂家推荐

当前户外景观与公共设施建设中,塑木材料因环保耐用特性需求激增,但市场乱象凸显。多数消费者面临选品难题:部分厂家无核心技术,产品抗压、抗紫外线能力差,难适应不同地域气候;服务断层导致设计施工脱节,售后响应…

如何将GIS属性一键快速标注到AutoCAD图纸上?

假如有成百上千个地块、管线或设备需要标注名称和编号,手动逐个输入文本不仅耗时巨大,而且极易出错。借助GIS4CAD插件可以快速地将选定的GIS属性字段值(如地名、编号)作为文本快速标注到图纸实体上。此功能实现了“…

深入解析:设计模式(C++)详解——命令模式(2)

深入解析:设计模式(C++)详解——命令模式(2)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

坯子插件库 v3.2.1 for SketchUp 2022-2024下载与安装教程

坯子插件库 v3.2.1 for SketchUp 2022-2024 是一款专为 SketchUp 2022 至 2024 版本设计的插件管理工具,集插件下载、安装、卸载及更新功能于一体,支持一键操作简化流程。该工具内置丰富插件资源库,涵盖建筑构件、线…

免费绿色版识别软件,OCR识别软件!最全安装使用教程(附下载地址)

软件介绍 这个OCR识别非常的小巧,支持离线,支持所有的Windows系统,非常适合老电脑或者不联网的电脑使用, 软件为绿色免安装,解压出来双击“识别”程序就启动了(没有反应的就鼠标右键用管理员身份运行)。 之前也…

实用指南:云原生网络基础设施的核心组件Envoy

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

zookeeper常用操作 - 吾辈当奋斗

cd /home/zookeeper/bin# 登录客户端sh zkCli.sh# 查看有几个服务注册到此ls /services # 查看下面的实例,具体的IP+端口ls /services/lulu

基于旋转不变子空间(ESPRIT)算法的DOA估计

一、ESPRIT算法核心原理 1.1 旋转不变性基础 ESPRIT通过阵列的几何对称性构建旋转不变性,利用两个子阵列接收信号的相位差直接估计DOA。对于均匀线阵(ULA),相邻阵元间距为d,信号入射角θ的相位延迟为:两个子阵列…

zedboard + AD-FMCOMMS3-EBZ HDL VIVADO 工程构建(二) 构建HDL项目

zedboard + AD-FMCOMMS3-EBZ HDL VIVADO 工程构建(二) 构建HDL项目 Build an HDL project — HDL documentation构建工程,需要 Linux 环境, windows 11 下 使用 WSL2

2025年超微粉碎机优质实力厂家推荐,产品涵盖低温无尘粉碎机/液氮冷冻/万能/锤式粉碎机!

江阴市中凯机械制造有限公司通过十几年的发展,公司严格按照ISO9001质量体系标准实施规范管理,产品质量上乘,公司从2011年创立就开始针对各种中药材、高分子材料的低温粉碎领域的研发、制造及销售,已有十余年的生产…

2025 年高低温试验箱制造厂家最新推荐排行榜:精选优质品牌,助力企业精准选购可靠测试设备恒温恒湿试验箱/高低温试验箱厂家推荐

随着电子、半导体、汽车、航天等领域对产品可靠性要求不断提升,高低温试验箱作为关键测试设备,市场需求日益增长,但行业乱象也让企业选购难度加大。部分厂家缺乏核心技术,设备精度不足、稳定性差,无法满足高端测试…

MySQL数据库入门指南,5分钟掌握连接与基础操作命令

你是否经常在操作MySQL时卡在第一步?连数据库都进不去还谈什么后续操作?作为开发者必备技能,MySQL的基础命令就像学骑自行车要先学会扶车把一样重要。今天我们就用最直白的语言,拆解那些看似简单却容易出错的MySQL…

一堆todo - 吾辈当奋斗

框架springboot springSecurity devops+CICD k8s+docker 单点登录 SSO SOA-架构设计模式 Spring Cloud-微服务基础分布式事务 event+listener jdk8特性 jdk17特性 maven 多线程 分布式锁的各种实现-zookeeper+redis 设…

大规模图神经网络高效训练新方法

本文介绍了一种名为全局邻居采样的新型图神经网络训练方法,该方法通过缓存节点特征到GPU内存,显著减少了CPU与GPU间的数据传输,在混合CPU-GPU训练环境中实现了2到14倍的速度提升,同时保持或提高了模型准确性。大规…

10 10

P4169 cdq分治有时间戳,可以转换为四个方向的带时间戳的二维偏序 故可以用 cdq 分治解决, 然后发现我TLE了故需要使用归并排序来优化常数p4197 线段树合并很容易可以发现可以把询问离线下来,按照可走道路权值从小到…

cocos3节点监听不到TOUCH_START问题

我们知道,可以使用类似如下的代码监听2d node的点击事件: this.node.on(Node.EventType.TOUCH_START, this.emitEvent, this); 但是发现监听不生效,排查原因后发现: 原因是:不能像下图这有直接在mask节点上监听,…

Rudin 数学分析第二章

感觉拓扑非常难。 5 \(\{x+\frac{1}y\mid x\in\{1, 2, 3\},\ y\in\mathbb Z^+\}\),极限点为 \(\{1,2,3\}\)。 6 若有点 \(x\) 是 \(E\) 的

Gitee DevOps平台:中国企业数字化转型的加速器

Gitee DevOps平台:中国企业数字化转型的加速器 在数字化转型浪潮席卷全球的背景下,软件开发效率已成为企业核心竞争力的关键指标。作为国内领先的一站式DevOps平台,Gitee通过全流程研发支持与自动化交付能力,正在重…

aardio在其他窗体调用主窗体的函数

aardio在其他窗体调用主窗体的函数主窗体函数必须这样写mainForm.save = function() {try{console.log("save")var file = io.file("data.json","w")//data = {"test"="…

全社会是否真的需要一套AI元人文实践框架?

全社会是否真的需要一套AI元人文实践框架? 一、引言:AI发展的伦理困境与价值迷失 人工智能技术正以前所未有的速度重塑人类社会的各个领域。然而,随着技术的快速发展,一系列伦理问题与价值困境也日益凸显:数据隐私…