更新记录

1.0.1(2024-06-26)

增加usb连接打印机接口

1.0.0(2024-05-12)

道臻技术-标签打印机, 打印文本、图片、二维码等


平台兼容性

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
× × × × × × × × ×

道臻技术-标签打印机

集成步骤

  1. 集成插件步骤请参考https://www.cnblogs.com/wenrisheng/p/18323027
  2. 拷贝demo示例项目的AndroidManifest.xml到自己的项目里

接口文档


import {
    UTSLPAPI,
    bluetoothIsEnable
} from "@/uni_modules/wrs-uts-lpprint"

let api = new UTSLPAPI()
  • 初始化创建实例子

api.createInstance((resp) => {
    this.showMsg(JSON.stringify(resp))
    let opt = resp.opt
    switch (opt) {
        case "onStateChange": {
            let stateName = resp.stateName
            this.showMsg("打印机连接状态更新:" + stateName)
        }
        break;
        case "Info":
            break;
        case "onPrinterDiscovery":
            break;
        case "onPrintProgress":
            break;
        default:
            break;
    }
})
  • 判断蓝牙是否打开

let isEnable = bluetoothIsEnable()
if (isEnable) {

} else {

}
  • 获取当前蓝牙已经连接的打印机,先在手机设置-蓝牙里面连接上打印机

let params = {}
// params.modelName = "xx"
let resp = api.getAllPrinterAddresses(params)
console.log(JSON.stringify(resp))
let pairedPrintersStr = resp.pairedPrinters
if (pairedPrintersStr) {
    let pairedPrinters = JSON.parse(pairedPrintersStr)
    let length = pairedPrinters.length
    let itemArray = []
    for (let i = 0; i < length; i++) {
        let device = pairedPrinters[i]
        let shownName = device.shownName
        itemArray.push(shownName)
    }
    this.showActionSheet(itemArray, (index) => {
        let device = pairedPrinters[index]
        let macAddress = device.macAddress
        api.openPrinterByAddress(macAddress)
    })
} else {
    this.showModel("没有发现打印机", () => {}, () => {})
}
  • 连接打印机

连接状态通过createInstance里回调


let macAddress = "xxx" 
api.openPrinterByAddress(macAddress)
  • 当前是否有 USB 连接到手机的打印机设备

let params = {}
// params.prefixName = "xxx"
let hasPrinter = api.hasUsbPrinter(params)
  • 连接USB打印机设备

let params = {}
// params.prefixName = "xxx"
let suc = api.openUSBPrinterByAddress(params)
  • 获取打印机连接状态

let stateName = api.getPrinterState().stateName
switch (stateName) {
    // Disconnected
    case "Disconnected":
        this.showToast("请先连接打印机!")
        return false
        break;
    case "Connecting":
        this.showToast("正在连接打印机,请稍候")
        return false
        break;
    default:
        break;
}
  • 开始绘图任务

api.startJob({
    width: 200, // 单位毫米
    height: 200, // 单位毫米
    orientation: 0 // 0/90/180/270,默认值 0。
})
  • 绘制文本字符串

// 传入参数(需要绘制的文本字符串, 绘制的文本框左上角水平位置, 绘制的文本框左上角垂直位置, 绘制的文本框水平宽度, 绘制的文本框垂直高度, 文字大小, 字体风格)
api.drawText({
    text: "工业革命",
    x: 4,
    y: 5,
    width: 0, // 如果 width 为 0,则会根据绘制文本 的显示宽度,根据当前对齐方式进行以 x 为基准点的左中右对齐。默认值为 0。
    height: 0, // 与width雷同
    fontHeight: 10 // 0/90/180/270,默认值 0。
})
  • 绘制文本字符串

api.drawTextRegular({
    text: "工业革命",
    x: 4,
    y: 5,
    width: 0, // 如果 width 为 0,则会根据绘制文本 的显示宽度,根据当前对齐方式进行以 x 为基准点的左中右对齐。默认值为 0。
    height: 0, // 与width雷同
    fontHeight: 10, // 0/90/180/270,默认值 0。
    fontStyle: 0, // 0: REGULAR 1:BOLD 2:ITALIC 3:BOLDITALIC 4:UNDERLINE 8:STRIKEOUT
    lineSpace: 0 // 行间距,默认设置为 0 即可,1 表示当前字体的一倍行间距
})
  • 绘制带字体风格设置符的文本字符串

api.drawRichText({
    text: "工业革命",
    x: 4,
    y: 5,
    width: 0, // 如果 width 为 0,则会根据绘制文本 的显示宽度,根据当前对齐方式进行以 x 为基准点的左中右对齐。默认值为 0。
    height: 0, // 与width雷同
    fontHeight: 10, // 0/90/180/270,默认值 0。
    fontStyle: 0 // 0: REGULAR 1:BOLD 2:ITALIC 3:BOLDITALIC 4:UNDERLINE 8:STRIKEOUT
})
  • 绘制带缩进功能的文本字符串

api.drawTextWithIndent({
    text: "工业革命",
    x: 4,
    y: 5,
    width: 0,
    height: 0, 
    fontHeight: 10, 
    fontStyle: 0, 
    lineSpace: 0
})

api.drawTextWithScale({
    text: "工业革命",
    x: 4,
    y: 5,
    width: 0,
    height: 0, 
    fontHeight: 10, 
    fontStyle: 0, 
    lineSpace: 0
})
  • 绘制 QRCode 二维码

api.draw2DQRCode({
    text: "http://www.dothantech.com/",
    x: 10,
    y: 10,
    width: 40
})
  • 打印 Bitmap 图片

api.printBitmap({
    url: "/xxx/xxx/aa.png", //  本地图片绝对路径
    printParam: {}
})
  • 提交数据打印,结束绘图任务提交打印(跟随打印机设置,无特殊需求,推荐使用此种方式)

api.commitJob()

var jobParams = {}
// 间隔类型,0:默认纸张类型,随打印机设置 1:使用带定位孔的标签纸进行定位 2:使用间隙纸进行打印 3:使用黑标纸进行打印;
// jobParams.GAP_TYPE = 0 
// 间隔长度,用于设置纸张间隔长度,单位是 0.01 毫米
// jobParams.GAP_LENGTH_01MM = 1
// 打印浓度,打印浓度参考值,范围为(0-14),0 表示最小打印浓度,14 表示最大打印浓度,5 表示默认打印浓度;
// jobParams.PRINT_DENSITY = 1
//  打印速度,范围为(0-4): 0 表示最小打印速度,2 表示默认打印速度,4 表示最大打印速度;
// jobParams.PRINT_SPEED = 1
//  设置打印方向,值为 0,90,180,270;
// jobParams.PRINT_DIRECTION = 0
// 设置打印份数
// jobParams.PRINT_COPIES = 1

api.commitJobWithParam(jobParams)
  • 结束绘图任务

api.endJob()
  • 取消打印任务

api.cancel()
  • 断开当前已连接打印机

api.closePrinter()
  • 断开打印机连接

api.quit()
  • 设置打印机打印浓度

api.setPrintDarkness({
    darkness: 0 // 打印浓度,取值范围 0-15,0:随打印机设置;1:最淡;6:正常;15:最 浓;
})
  • 设置打印机打印速度

api.setPrintSpeed({
    speed: 0 // 打印速度,取值范围 0-5,0:随打印机设置;1:最慢;3:正常;5:最快;
})
  • 设置打印机纸张间隔类型

api.setPrintPageGapType({
    gapType: 0 // 纸张间隔类型,0:连续纸;1:定位孔;2:间隙纸;3:黑标纸
})
  • 设置打印机纸张间隔长度(跳距)

api.setPrintPageGapLength({
    gapLength: 0 // 纸张间隔长度,单位:毫米
})
  • 设置绘制相关的参数值

api.setDrawParam({

})
  • 设置后续绘制内容的顺时针旋转角度

api.setItemOrientation({
    orientation: 0 // 后续绘制内容的顺时针旋转角度(0/90/180/270),默认值为 0
})
  • 设置后续绘制动作的水平对齐方式

api.setItemHorizontalAlignment({
    alignment: 0 // 0: left 1: center 2: right 
})
  • 设置后续绘制动作的垂直对齐方式

api.setItemVerticalAlignment({
    alignment: 0 // 0: top 1: middle 2: bottom 
})

隐私、权限声明

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

蓝牙、定位

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

插件不采集任何数据

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

暂无用户评论。

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