Vue + lodop 静默打印

Posted lee576

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue + lodop 静默打印相关的知识,希望对你有一定的参考价值。

静默打印是什么?简单来说就是不需要用户点击"打印",自动去打印,但是使用浏览器web打印不可避免的要弹出以下画面

面对这种问题也只能用"富客户端"技术来解决,在浏览器的沙盒安全模型中无法做到,那么只能使用插件的技术,这个我们就不自己花力气去做了,我找来了 lodop 这个免费的打印组件,功能还是挺强大的,下载下图的发行包

解压后安装下图两个exe

 如果你的系统是64位的,可以安装 install_lodop64.exe

上图的 LodopFuncs.js 是客户端要使用的核心库文件,把它拷贝加入到你自己的Vue项目,并在它的最后一行加入,导出getLodop这个函数

export  getLodop ;

在使用的地方import 进来

import  getLodop  from '../components/lib/LodopFuncs'

然后就可以使用了(由于html是从数据库读出来,存在异步渲染,所以注意使用 this.$nextTick 等渲染完成后再操作,具体lodop的用法在这里不表了,官方网站有很详细的文档)


      let findTemplate = null
      this.condition = []
      // 查询模板
      this.condition.push(FieldName: 'template_name', ConditionalType: '0', FieldValue: '供应商与客户')
      await this.axios.post('BasePrintTemplate/QueryCondition', this.condition)
        .then((response) => 
          if (Array.isArray(response.data.Data)) 
            findTemplate = response.data.Data[0].template_html
          
        )
        .catch((error) => 
          this.$message(
            message: error.response.Message,
            type: 'warning'
          )
        )
      // 绑定模板
      if (findTemplate) 
        const printData = this.table.data
        const Component = Vue.extend(
          template: `<div>$findTemplate</div>`,
          data () 
            return 
              printItems: printData
            
          ,
          methods: 
          
        )
        const component = new Component().$mount()
        this.templateHtml = component.$el.innerHTML

        // 等待渲染完成后再调用打印方法
        this.$nextTick(() => 
          let LODOP = getLodop() // 调用getLodop获取LODOP对象
          LODOP.PRINT_INIT('')
          LODOP.ADD_PRINT_HTML(0, 0, '100%', '100%', this.templateHtml)
          // LODOP.PREVIEW()
          LODOP.PRINT()
        )
      

以上是关于Vue + lodop 静默打印的主要内容,如果未能解决你的问题,请参考以下文章

lodop第三方插件的使用

LODOP安装参数 及静默安装

Vue2 中使用C-Lodop打印控件时无法调整二维码大小问题

LODOP打印生成的二维码

有用过lodop插件打印呢的吗?

了解 lodop打印控件 的进来看看