前端VUE项目实现静默打印,无需用户手动确认

一、基础环境配置

  1. 安装核心依赖

    lua 复制代码
    npm install vue-plugin-hiprint socket.io-client jquery --save

    需同时安装socket.io-client实现静默打印通信,jquery用于DOM操作。

  2. 全局引入插件

    main.js中配置:

    javascript 复制代码
    javascriptCopy Code
    import { hiPrintPlugin } from 'vue-plugin-hiprint'
    import $ from 'jquery'
    
    Vue.use(hiPrintPlugin, '$hiprint')
    Vue.prototype.$ = $
    hiPrintPlugin.disAutoConnect() // 禁用自动连接客户端:ml-citation{ref="4,5" data="citationList"}
  3. 样式文件配置

    复制node_modules/vue-plugin-hiprint/dist/print-lock.css到项目public目录,并在index.html添加:

    ruby 复制代码
    htmlCopy Code
    <link rel="stylesheet" href="<%= BASE_URL %>print-lock.css" media="print">:ml-citation{ref="3,5" data="citationList"}

二、静默打印实现

  1. 客户端安装

    下载electron-hiprint客户端并以管理员身份安装,配置默认打印机和TOKEN(如TEST_PRINT)。

  2. 打印模板初始化

    php 复制代码
    javascriptCopy Code
    const template = new this.$hiprint.PrintTemplate({
      settingContainer: '#printSettings'
    })
    const panel = template.addPrintPanel({
      width: 210,
      height: 297,
      paperFooter: 340
    })
    panel.addPrintText({
      options: {
        width: 100,
        height: 20,
        title: '产品条码',
        textType: 'barcode' // 支持条形码/二维码:ml-citation{ref="13,19" data="citationList"}
      }
    })
  3. 静默打印触发

    php 复制代码
    javascriptCopy Code
    // 连接打印客户端
    const socket = io("http://localhost:17521", {
      transports: ["websocket"],
      auth: { token: "TEST_PRINT" }
    })
    
    // 发送打印指令
    socket.emit("news", {
      html: template.getHtml(),
      pageSize: 'A4',
      printer: '打印机名称' // 不填则使用默认打印机:ml-citation{ref="4,6" data="citationList"}
    })

三、企业级优化方案

  1. 批量打印处理

    ini 复制代码
    javascriptCopy Code
    const batchData = [{id:1}, {id:2}]
    batchData.forEach(item => {
      panel.updateElement('barcode', { title: item.id })
      socket.emit("news", { html: template.getHtml() })
    }):ml-citation{ref="16,19" data="citationList"}
  2. PDF静默打印

    php 复制代码
    javascriptCopy Code
    this.$hiprint.hiwebSocket.send({
      type: 'url_pdf',
      pdf_path: 'http://example.com/file.pdf',
      copies: 2 // 打印份数:ml-citation{ref="6,8" data="citationList"}
    })

四、常见问题解决

  1. 跨域问题
    需确保客户端和前端项目同域名或配置HTTPS。
  2. Node版本兼容
    推荐使用Node 16.x版本,高版本可能出现兼容性问题11。
  3. 样式冲突
    如遇UI框架样式干扰,需重写print-lock.css中的关键样式。
相关推荐
nbwenren3 分钟前
2026实测:Gemini 3 镜像站视觉能力实践——拍照原型图,一键生成 HTML+CSS 代码
前端·css·html
Lee川5 分钟前
Prisma 实战指南:像搭积木一样设计古诗词数据库
前端·数据库·后端
jinanwuhuaguo22 分钟前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
广州华水科技28 分钟前
深度测评2026年单北斗GNSS位移监测系统推荐,与高口碑变形监测设备一同引领行业新风尚
前端
Alice-YUE1 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
是上好佳佳佳呀2 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
CDN3603 小时前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库
之歆3 小时前
Day07_CSS盒子模型 · 样式继承 · 用户代理样式
前端·css
DanCheOo4 小时前
AI 应用的安全架构:Prompt 注入、数据泄露、权限边界
前端·人工智能·prompt·安全架构