产品说:点打印直接出纸,别弹框。
你搜 silent print、Print.js silent,装了俩库,框还在。
这事我踩过。不是库不行,是浏览器就不让网页随便开打印机。要是网页能偷偷打,家里纸得被广告站抽干。
所以 Print.js、react-to-print,底层多半还是浏览器那套打印。Chrome kiosk 之类只适合固定终端,办公室电脑别想靠改设置交差。
那业务系统怎么办?
能静默的,几乎都长一个样:本机跑个小程序,网页用 WebSocket/HTTP 把活丢给它。QZ、Lodop、各种打单助手,都是这个思路。
前端如果想少受罪,可以找带 npm 的。我用过 web-print-pdf:
bash
npm install web-print-pdf
js
import webPrintPdf from 'web-print-pdf'
await webPrintPdf.printHtml(
`<div style="padding:24px">
<h1>出库单 #A-10086</h1>
<p>数量:12</p>
</div>`,
{ paperFormat: 'A4', printBackground: true },
{ copies: 1 },
{ action: 'print' }
)
电脑上要装客户端,没开就连不上------别以为装个 npm 就完事。联调先 preview 再 print,省纸。
跟 jsPDF 别混
jsPDF 是下载 PDF 文件的。用户要的是纸,就别在下载库上死磕。服务端出文件用 Puppeteer;本机出纸走打印代理。混为一谈,排期会很难看。
对外官网低频打印,继续 window.print 挺好。ERP、小票、面单,老老实实上本地客户端吧。