vue3中使用js_initPrinter进行PDA扫码终端打印【无标题】

vue3中使用js_initPrinter进行PDA扫码终端打印

前置条件
需要在相应的终端安装它们设备支持的终端浏览器,此浏览器有打印插件所以来的sdk环境,这个对接时候一般都会提供,以及js中还用打印功能的例子都有。但是比较恶心的是,她们提供的例子开发文档比较粗糙,好多东西需要自己摸索。
开发环境及语言:vue3+ts+vite+vant

1、需要在进入页面后初始化js_initPrinter

<script lang="ts">
  import { defineComponent, onMounted } from 'vue'
  export default defineComponent({
    setup() {
      // 申明变量,注意对应的sdk挂载在windows上
      let Printer = window.Android_LcPrinter as any 
      onMounted(() => {
        // 不加try/catch是每次控制台都会爆红,因为项目UI框架用了vant,爆红造成Toast关闭不了,很头疼,现在也没找到为啥会出现这种情况,又遇到切解决掉的,万望指教。
        try {
          Printer?.js_initPrinter()
        } catch {}
      })
      return { 
    }
  })
</script>

2、做完第一步我们就可以在vue项目使用第三方给提供的打印方法来进行打印啦,具体使用如下

const printBarcode = (printData: any) => {
        console.log('print start')
        //打印一维码
        var barcodeparam = {
          text: printData.ppsFinishId,
          height: 120,
          barcodetype: 73
        }
        var mbarcodeparam = JSON.stringify(barcodeparam)
        var lineparam = {
          line: 10
        }
        var textlineparam = {
          line: 1
        }

        // 69码
        var mdmGoodsSign = printData.mdmGoodsSign ? printData.mdmGoodsSign : ''
        var mdmGoods69code = printData.mdmGoods69code ? printData.mdmGoods69code.slice(-4) : ''
        // 特别需要注意的是,如果想要调整打印文字的样式的话,开发文档提供的几个参数都需要设置才会起作用,否则一直没效果
        var param = {
          offset: 10,
          fontSize: 6,
          isBold: true,
          isUnderLine: false,
          text: mdmGoods69code + '  ' + mdmGoodsSign
        }
        var strParam = JSON.stringify(param)

        var ppsFinishNo = printData.ppsFinishNo ? printData.ppsFinishNo : ''

        const productLeader = printData.productLeader === null ? '' : printData.productLeader

        var param3 = {
          text: '箱数:' + printData.ppsFinishPutinBox + '  ' + '组长:' + productLeader + '  ' + '第 ' + ppsFinishNo + ' 托',
          fontSize: 1,
          offset: 20,
          align: 3
        }
        var strParam3 = JSON.stringify(param3)
        // 生产批号
        var param2 = {
          text: '生产批号:' + printData.mocProductorderTimes + '   ' + '打印次数: 1',
          fontSize: 1
        }
        var strParam2 = JSON.stringify(param2)

        var mlineparam = JSON.stringify(lineparam)
        var tlineparam = JSON.stringify(textlineparam)
        var size = {
          fontsize: 1
        }
        var sizeParam = JSON.stringify(size)
        Printer.js_printLine(tlineparam)
        Printer.js_printFontSize(sizeParam)
        Printer.js_printText1(strParam)
        Printer.js_printLine(tlineparam)
        Printer.js_printBarcode(mbarcodeparam)
        Printer.js_printLine(tlineparam)
        Printer.js_printText(strParam3)
        Printer.js_printLine(tlineparam)
        Printer.js_printText(strParam2)
        Printer.js_printLine(mlineparam)
        Printer.js_start()
      }

需要注意的是,如果想要调整打印文字的样式的话,开发文档提供的几个参数都需要设置才会起作用,否则一直没效果

var param = {
   offset: 10,
   fontSize: 6,
   isBold: true,
   isUnderLine: false,
   text: mdmGoods69code + '  ' + mdmGoodsSign
 }
 var strParam = JSON.stringify(param)
 Printer.js_printText1(strParam)

本来感觉能写还挺多的,结果发现也没啥😂😂,就这样吧

遇到的难点有两个:
1、控制总是爆红,加try/catch就好
2、修改文档样式不起作用,把文档中需要的参数都设置上就可以啦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值