更新记录
1.0.1(2024-06-26)
增加usb连接打印机接口
1.0.0(2024-05-12)
道臻技术-标签打印机, 打印文本、图片、二维码等
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.6.8,Android:4.4,iOS:不支持,HarmonyNext:不确定 |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
道臻技术-标签打印机
集成步骤
- 集成插件步骤请参考https://www.cnblogs.com/wenrisheng/p/18323027
- 拷贝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)
let params = {}
// params.prefixName = "xxx"
let hasPrinter = api.hasUsbPrinter(params)
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
})
api.draw2DQRCode({
text: "http://www.dothantech.com/",
x: 10,
y: 10,
width: 40
})
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
})