1***@qq.com
1***@qq.com
  • 发布:2018-10-23 10:52
  • 更新:2022-01-22 00:19
  • 阅读:12338

vue h5+app蓝牙打印小票

分类:HTML5+

参考网址:

链接蓝牙:https://blog.csdn.net/cxgasd/article/details/78208708

蓝牙打印机指令:https://www.jianshu.com/p/c0b6d1a4823b

1,打印出来的文本是字节流,平常的换行,样式都用不了

2,一行字母有32个字符,一行全部 中文有16个字符 ,1中文=2字母 ,js判断字符串个数

strLen: function(val) {  
    var len = 0;  
    for (var i = 0; i < val.length; i++) {  
        var a = val.charAt(i);  
        if (a.match(/[^\x00-\xff]/ig) != null) {  
            len += 1;  
        } else {  
            len += 0.5;  
        }  
    }  
    return len;  
}

实现字符串 拼接的方法: 左右对齐是中间填空格,隔行是一行32个空格

  1. 蓝牙打印机指令 可以实现 文字放大,图案

    btOutStream.write(0x1B);
    btOutStream.write(0x40);
    //或者
    // btOutStream.write([0x1B,0x40]);

//打印小票
printComponent:{

    //字符个数  
    strLen:function(val) {  
      var len = 0;  
      for (var i = 0; i < val.length; i++) {  
        var a= val.charAt(i);  
        if (a.match(/[^\x00-\xff]/ig) != null) {  
          len += 1;  
        }else {  
          len += 0.5;  
        }  
      }  
      return len;  
    },  

    //空格  
    spacing:function(str){  
       var blank="";  
       var row=Math.ceil(this.strLen(str)/16); //行数  
       var len=(16*row-this.strLen(str))*2;  
       for(var i=0;i<len;i++){  
            blank+=' ';  
       }  
       console.log((str+blank).length);  
       return str+blank;  
    },  

    //左右对齐  
    justify:function(str1,str2){  
       var blank="";  
       var len=(16-this.strLen(str1)-this.strLen(str2))*2;  
       for(var i=0;i<len;i++){  
            blank+=' ';  
       }  
       return str1+blank+str2;  
    },  

    //分割线  
    newline:function(){  
      var line="--------------------------------";  
      return line;  
    },  

    //打印(拣货单)  
    print3:function(_this){   
       var str='';  
       //str+='   —YOULENONG—  ';  
       str+=this.spacing(' ');  
       str+=this.spacing('订单号:'+_this.order_no);  

       for(var i=0;i<_this.goodsArr.length;i++){  
           var v=_this.goodsArr[i];  
           str+=this.spacing(v.goods_name);  
           str+=this.justify('销价:'+v.goods_price+'/'+v.unit,'购买量:'+v.goods_num);  
           str+=this.spacing('货号:'+v.product_no);  
           //str+=this.justify('折扣:-xxx','折后:xxx');  
           str+=this.newline();  
       }  
       str+=this.spacing(new Date().Format('MM-dd hh:mm:ss'));  
       str+=this.spacing(' ');  
       str+=this.spacing(' ');  
       str+=this.spacing(' ');  
       _this.bluetoothTool.sendData(str);  //把字符串 发给蓝牙,打印  
    }  

}

附件有代码,我删减了,不保证运行成功,得看懂vue

1 关注 分享
Neil_HL

要回复文章请先登录注册

FullStack

FullStack

系统打印、AirPrint、支持ipad、打印图片 pdf webView:[https://ext.dcloud.net.cn/plugin?id=7147](https://ext.dcloud.net.cn/plugin?id=7147)
2022-01-22 00:19
w***@qq.com

w***@qq.com

有完整demo吗
2019-08-13 19:53
guixin

guixin

这个文字加粗js可以实现么。。。
2018-12-18 19:00
1***@qq.com

1***@qq.com (作者)

刚测试,别用中文的()
2018-11-08 11:56