更新记录

1.0.5(2024-08-14)

  1. 修复usb内部循环问题

1.0.4(2024-03-21)

  1. 优化库

1.0.3(2024-02-22)

  1. 增加浓度、打印速度、水印、行间距等接口
查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:4.4,iOS:不支持,HarmonyNext:不确定 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

汉印打印机,支持打印文本、图片、文件、二维码、一维码,支持Wi-Fi、蓝牙、usb连接

开发文档

型号A300E

快速接入

    import {
    UTSPrinterHelper
} from '@/uni_modules/wrs-uts-hmae'
  1. 蓝牙连接接口,蓝牙地址(大写) 动态扫描蓝牙获取mac地址请参考插件https://ext.dcloud.net.cn/plugin?id=13533
UTSPrinterHelper.portOpenBT(this.macAddress, (resp) => {
    this.showMsg(JSON.stringify(resp))
    if (resp.flag) {
        if (resp.result == 0) {
            this.showMsg("连接成功")
        }
    }
})
  1. wifi连接
    UTSPrinterHelper.portOpenWIFI(this.ip, (resp) => {
    this.showMsg(JSON.stringify(resp))
    if (resp.flag) {
        if (resp.result == 0) {
            this.showMsg("连接成功")
        }
    }
})
  1. USB连接 动态获取所有连接的usb设备请参考插件https://ext.dcloud.net.cn/plugin?id=13300
    UTSPrinterHelper.portOpenUSB(parseInt(this.deviceId), (resp) => {
    this.showMsg(JSON.stringify(resp))
    if (resp.flag) {
        if (resp.result == 0) {
            this.showMsg("连接成功")
        }
    }
})
  1. 设置SDK编码

UTSPrinterHelper.languageEncode = "GBK" // GBK、iso8859-1
  1. 设置行模式的X坐标,必须放在setlp函数之前,横坐标(单位:dot)

UTSPrinterHelper.rowSetX(x, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 设置行模式字体大小与行高

let font = "5"
let size = "2"
let spacing = "32"
UTSPrinterHelper.setlp(font, size, spacing, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 行打印模式字体加粗

let bold = "5"
UTSPrinterHelper.rowSetBold(bold, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 字体加粗

let bold = "5"
UTSPrinterHelper.setBold(bold, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 行打印模式打印文本

let str = "xxxxx"
UTSPrinterHelper.printData(str, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 是否已经打开

let isOpened = UTSPrinterHelper.isOpened() 
  1. 断开连接
    UTSPrinterHelper.portClose((resp) => {
    this.showMsg(JSON.stringify(resp))
})
  1. 打印文件
let filePath = "/xxx/xxx.png"
    UTSPrinterHelper.printBinaryFile((filePath, resp) => {
    this.showMsg(JSON.stringify(resp))
})
  1. 打印图片

let image = "/xxx/xxx.png" // 需打印图片的Bitmap的对象(需自己调节好图片尺寸,200dpi  8px=1mm)
let x = 0 // 图片起始的x坐标。(单位:dot
let y = 0 // 图片起始的y坐标。(单位:dot)   
let type = 0// 图片算法。0:二值算法;1:半色调算法 2:聚合算法 
let compressType = 0 // 0:不压缩,1:整体压缩,(适合较小的图片)2:分包压缩,(适合较大的图片)
let light = 0// 亮度(范围 -100 到 100)
UTSPrinterHelper.printBitmapCPCL(image, x, y, type, compressType, light, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印图片,该接口只可以由于行模式(里面已包含开头接口和Print接口)。

let image = "/xxx/xxx.png" // 需打印图片的Bitmap的对象(需自己调节好图片尺寸,200dpi  8px=1mm)
let x = 0 // 图片起始的x坐标。(单位:dot
let y = 0 // 图片起始的y坐标。(单位:dot)   
let type = 0// 图片算法。0:二值算法;1:半色调算法 2:聚合算法 
let compressType = 0 // 0:不压缩,1:整体压缩,(适合较小的图片)2:分包压缩,(适合较大的图片)
let isform = true// 是否定位,(连续纸模式下只能使用false)  
let segments = 1 // 分包次数(不小于1)默认1 
UTSPrinterHelper.printBitmap(image, x, y, type, compressType, isform, segments, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印自身

let result = UTSPrinterHelper.printSelf()
  1. 获取电压

let result = UTSPrinterHelper.getVoltage()
  1. 获取打印机版本号

let result = UTSPrinterHelper.getPrinterVersion()
  1. 设置标签高度

let offset = "0" // 上下文对象
let horizontal = "200" // 打印机水平方向dpi(根据实际打印机dpi设置)
let vertical = "200" //打印机垂直方向dpi(根据实际打印机dpi设置)   
let height = "100"// 标签高度 (单位:dot)200dpi  8 dot = 1mm,300dpi 12 dot = 1mm
let qty = "1" // 打印次数

UTSPrinterHelper.printAreaSize(offset, horizontal, vertical, height, qty, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 走纸

let prefeed = "40" // 走纸的距离。(单位:dot)
UTSPrinterHelper.prefeed(prefeed, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印完走纸

let prefeed = "40" // 走纸的距离。(单位:dot)
UTSPrinterHelper.postfeed(prefeed, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 蜂鸣器

let beep = "40" // 蜂鸣声的持续时间,(1/8)秒为单位
UTSPrinterHelper.beep(prefeed, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 下划线

let enable = true // 
UTSPrinterHelper.underline(enable, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 设置双色打印

let layer = 0 // layer需要打印的颜色, 0:红色,1:黑色
let result = UTSPrinterHelper.setLayer(layer) 
  1. 对齐方式

let align = "left" // left、right、center
UTSPrinterHelper.align(align, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 文本打印

let command = "text" // 文字的方向 text:水平。text90:逆时针旋转90度。text180:逆时针旋转180度。text270:逆时针旋转270度
let font = "7" // 字体点阵大小
let size = "0" // 字体大小。(该功能被屏蔽统一参数传0)
let x = "0" // 横坐标(单位 dot)
let y = "0" // 纵坐标(单位 dot)
let data = "xxxx" // 文本数据 
UTSPrinterHelper.text(command, font, size, x, y, data, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印条码

let command = "barcode" // barcode:水平方向 vbarcode:垂直方向 
let type = "7" // 条码类型:upca、upca2、upca5、upce、upce2、upce5、ean13、ean132、ean135、ean8、ean82、ean85、code39、code39c、f39、f39c、code93、i20f5、i20f5c、i20f5g、code128、uccean128、codabar、codabar16、msi、msi10、msi1010、msi1110、postnet、fim
let width = "1" // 窄条的单位宽度
let ratio = "1" // 宽条窄条的比例
let height = "50" // 条码高度
let x = "0" // 条码的起始横坐标
let y = "0" // 条码的起始纵坐标
let undertext = true // 条码下方的数据是否可见
let number = "7" // 字体的类型 (undertext=true才生效) 
let size = "0" // 字体的大小(undertext=true才生效)
;et offset = "5" // 条码与文字间的距离(undertext=true才生效) 
let data = "123456789" // 条码数据  
UTSPrinterHelper.barcode(command, type, width, ratio, height, x, y , undertext, number, size, offset, data, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印标签起定位作用(连续纸不可用)

UTSPrinterHelper.form( (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印

UTSPrinterHelper.print( (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 设置蓝牙名字

let name = "bbb"
let result = UTSPrinterHelper.setBluetoothName(name) 
  1. 设置保存

let result = UTSPrinterHelper.saveParameter() 
  1. 选择字库打印文本,该接口通过传输字库的名字,选择对应的字库打印机,字库需要通过工具先下载给打印机。

let command = "text" // 文字的方向 text:水平。text90:逆时针旋转90度。text180:逆时针旋转180度。text270:逆时针旋转270度
let fontName = "7" // 字库名称:SIMSUN.TTF、TT0003M_.TTF 
let xScale = "1" // x轴方向字体放大倍数 
let yScale = "1" // y轴方向字体放大倍数
let x = "0" //起始横坐标
let y = "0" // 起始纵坐标
let data = "123456789" // 条码数据  
UTSPrinterHelper.barcode(command, fontName, xScale, yScale, x, y,  data, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印矩形框

let x1 = "1" //左上角的X坐标。(单位:dot)
let y1 = "1" // 左上角的Y坐标。(单位:dot)
let x2 = "7" // 右下角的X坐标。(单位:dot) 
let y2 = "7" // 右下角的Y坐标。(单位:dot)
let width = "1" //线条的单位宽度。 (默认:1)

UTSPrinterHelper.box(x1, y1, x2, y2, width, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印直线

let x1 = "1" //左上角的X坐标。(单位:dot)
let y1 = "1" // 左上角的Y坐标。(单位:dot)
let x2 = "7" // 右下角的X坐标。(单位:dot) 
let y2 = "7" // 右下角的Y坐标。(单位:dot)
let width = "1" //线条的单位宽度。 (默认:1)

UTSPrinterHelper.line(x1, y1, x2, y2, width, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 获取打印机SN

UTSPrinterHelper.line((resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印机回退

var feed = 1 // feed | 回退距离。(单位:行,范围:1-255)。
UTSPrinterHelper.reverseFeed(feed, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印文本

var str = "465454" // 
UTSPrinterHelper.printText(str, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. expanded

let str1 = ""
let str2 = ""
let image = ""
let i1 =0
let i2 = 0
UTSPrinterHelper.expanded(str1, str2, image, i1, i2, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. setPaperFourInch

var value = 0 // 0、4、5、6
UTSPrinterHelper.setPaperFourInch(value, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. papertype_CPCL_TWO

var value = 0 // 48、49、50、51、52、53、54、55、56、57
UTSPrinterHelper.papertype_CPCL_TWO(value, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. 打印二维码

let command = "barcode" // barcode:水平方向 vbarcode:垂直方向
let x = "0" 
let y = "0"
let m ="1" //  QR的类型:1:普通类型 2:在类型1的基础上增加了个别的符号
let u = "6" // 单位宽度/模块的单元高度,范围是1到32默认为6
let data = "45451" // 二维码的数据 
UTSPrinterHelper.printQR(command, str2, image, i1, i2, (resp)=>{
    let flag = resp.flag
    if(flag) {
        let result = resp.result
        if(result > 0) { // 发送成功

        }
    }
}) 
  1. setIsListenerBT

let enable = true 
UTSPrinterHelper.setIsListenerBT(enable) 
  1. setDisConnectBTListener

UTSPrinterHelper.setDisConnectBTListener(()=>{

}) 
  1. sendUpdateToPrint 暂未实现

  2. 文本打印自动换行(不能使用泰语)


var x = "0" //  文字的起始的x坐标。(单位:dot)
var y = "0" // 文字的起始的y坐标。(单位:dot)  
var width= 100, // 一行打印的宽度。(单位:dot)
var size = 10 // 字体大小<br />3:20x20或10x20,视中英文而定。<br/>4:32x32或16x32,由ID3字体宽高各放大2倍。<br/>8:24x24或12x24,视中英文而定。<br/>55:16x16或8x16,视中英文而定。
var isbole = true // true:加粗。<br/>false:不加粗
var isdouble = true // 字体大小翻倍<br />true:放大。<br/>false:不放大。   
var str = "afasdf" // 打印文本 
UTSPrinterHelper.autLine(x, y, width, size, isbole, isdouble, str) 
  1. 文本打印自动换行(打印机固件必须在A300 V1.01.40.01以上且文本字节数不得超过1024,超过部分自动忽略。)

var x = "0" //  文字的起始的x坐标。(单位:dot)
var y = "0" // 文字的起始的y坐标。(单位:dot)  
var width= "100", // 一行打印的宽度。(单位:dot)
var size = 10 // 字体大小<br />3:20x20或10x20,视中英文而定。<br/>4:32x32或16x32,由ID3字体宽高各放大2倍。<br/>8:24x24或12x24,视中英文而定。<br/>55:16x16或8x16,视中英文而定。
var isbole = true // true:加粗。<br/>false:不加粗
var isdouble = true // 字体大小翻倍<br />true:放大。<br/>false:不放大。   
var str = "afasdf" // 打印文本 
UTSPrinterHelper.autLine2(x, y, width, size, isbole, isdouble, str) 
  1. 设置字符宽高放大倍数

var width= "100", // 字体宽度的放大倍数
var height= "100", // 字体高度的放大倍数
UTSPrinterHelper.setMag(width, height) 
  1. 打印PFD417码

var command = "BARCODE"// 水平方向:BARCODE 垂直方向:VBARCODE
var x = "0" //  PDF417的起始横坐标。(单位:dot) 
var y = "0" // PDF417的起始纵坐标。(单位:dot)  
var XD = "2" // 最窄元素的单位宽度。范围是1到32,默认为2
var YD = "6" // 最窄元素的单位高度。范围是1到32,默认值是6
var C = "3" // 使用的列数,数据列不包括启动/停止字符和左/右指标,范围为1到30;默认值是3
var S = "1" // 安全级别表示要检测到的错误的最大金额和/或校正,范围为0到8;默认值是1
var data = "ssss" // PDF417码的数据 

UTSPrinterHelper.printPDF417(command, x, y, XD ,  YD,  C,  S ,  data) 
  1. 打印浓度

var contrast = "0"// 浓度类型,总的有四种:<br/>默认 = 0<br/>中 = 1<br/>黑暗 = 2<br/>非常深 = 3
UTSPrinterHelper.contrast(contrast) 
  1. 打印速度

var speed = "0"// 速度类型,总的有5种:从0到5越来越快;5是理想状态的最快速度
UTSPrinterHelper.speed(speed) 
  1. 设置行间距

var sp = "1"//  间距(单位:行)
UTSPrinterHelper.setSp(sp) 
  1. 获取打印机状态

  | status == 0       | 打印机正常 |
  | status == -1      | 发送失败   |
  | (status & 2) == 2 | 缺纸       |
  | (status & 4) == 4 | 开盖       |
var status = UTSPrinterHelper.getPrinterStatus() 
  1. 旋转180度打印

var status = UTSPrinterHelper.poPrint() 
  1. 水印

var x = 0 //  横坐标(单位:dot) 
var y = 0 // 纵坐标(单位:dot) 
var size = 2 // 字体大小<br />55:16X16(dot)。<br/>24:24X24(dot)。<br/>56:32X32(dot)。<br/>其他:24X24(dot)。
var background = 6 // 背景黑度(0-255)
var data = "ssss" // 数据 

UTSPrinterHelper.printBackground(x, y, size, background, data) 

隐私、权限声明

1. 本插件需要申请的系统权限列表:

蓝牙、usb

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问