可否通过QZ Tray原始代码实现数据直接保存为PDF而非打印
QZ Tray 直接生成PDF文件的实现说明
结论
可以直接实现,QZ Tray 2.2及以上版本原生支持直接将条码、标签等原始内容渲染为PDF文件,无需触发打印流程,也不需要调用系统打印服务。
实现逻辑
- 无需指定实体打印设备,直接调用QZ Tray内置的PDF渲染接口即可
- 支持传入的内容格式和QZ Tray打印支持的格式完全一致,包括ZPL、EPL、CPCL等条码打印语言,以及HTML、SVG、图片等通用格式
- 整个生成过程在本地静默完成,不会弹出打印预览、也不会进入系统打印队列
核心调用示例(JS端)
import qz from 'qz-tray' // 初始化QZ连接后执行 qz.websocket.connect() .then(() => { // 配置PDF输出参数 const printConfig = qz.configs.create("PDF_RENDER") printConfig.set({ outputType: "pdf", // 可选:指定本地保存路径,不填则返回PDF的Blob数据供前端自行处理 outputPath: "/Users/yourname/Desktop/barcode_label.pdf", units: "mm", // 自定义PDF尺寸,适配标签/条码大小 size: { width: 100, height: 80 } }) // 传入原始条码/标签内容,完成生成 return qz.print(printConfig, [ // 示例为ZPL格式的条形码内容,可替换为你自己的原始代码 "^XA^FO20,20^BCN,60,Y,N,N^FD987654321012^FS^XZ" ]) }) .then(() => console.log("PDF文件生成成功")) .catch(err => console.error("生成失败:", err)) .finally(() => qz.websocket.disconnect())
注意事项
- 低于2.2版本的QZ Tray无内置PDF渲染功能,需先升级到最新稳定版后再使用该能力
- 若不需要直接保存到本地磁盘,可删除
outputPath参数,调用完成后会返回PDF的二进制Blob数据,可自行实现前端下载、上传等后续处理 - 生成的PDF清晰度和实际打印输出的效果完全一致,不会出现渲染偏差
内容的提问来源于stack exchange,提问作者lets code
相关产品推荐
相关产品推荐

