更新记录

3.1.1(2026-05-30)

-上传示例工程

3.1.0(2026-05-30)

  • 从旧版 uni-native-plugin-shangmi-printer-v3.0 迁移至 UTS 插件格式
  • 架构改为 UTS 薄壳 + Kotlin 桥接(PrinterBridge.kt)
  • 使用 import { xx } from '@/uni_modules/ly028-SMPrinter' 替代 uni.requireNativePlugin
  • 所有 API 方法、参数格式、返回格式与旧版保持完全兼容
  • 新增 iOS 空实现占位

平台兼容性

uni-app(4.18)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × 4.4 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.18)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

ly028-SMPrinter 商米打印机 UTS 打印插件

📌 旧版原生插件(非 UTS 版本):https://ext.dcloud.net.cn/plugin?id=6957

商米打印机热敏打印插件,支持图文混合、二维码、条码等多种格式混合打印,支持网络/本地图片,支持扫码枪监听。

全局只需调用一个方法即可完成绑定服务然后打印,软件退出后会自动解绑打印服务。只用一个方法即可,无过多繁琐操作,减少操作步骤。

适用平台

  • Android(商米 Sunmi 设备)

安装方式

方式一:插件市场下载(推荐)

从 DCloud 插件市场搜索 ly028-SMPrinter 并导入。

方式二:本地 uni_modules

uni_modules/ly028-SMPrinter/ 放到项目 uni_modules/ 目录下。

快速使用

极简模式(推荐)

只需调用 transactionPrinter 一个方法,内部自动处理服务绑定+打印+自动解绑:

import { transactionPrinter } from '@/uni_modules/ly028-SMPrinter'

// 只用一个方法即可完成绑定服务然后打印
transactionPrinter({
    contents: [
        { content: 'Hello World', type: 'TEXT', fontSize: 30 },
        { content: 'wx:liu2774', type: 'QR', align: 'center', qrSize: 6 },
        { type: 'PIC', url: 'http://example.com/logo.jpg', align: 'center' }
    ]
}, res => {
    console.log('打印结果:', res)
})

软件退出后会自动解绑打印服务,无需手动调用 unBindService

完整模式

如需手动控制服务生命周期,也可以自行绑定/解绑:

import {
    bindService,
    transactionPrinter,
    unBindService
} from '@/uni_modules/ly028-SMPrinter'

// 1. 绑定服务
bindService(res => {
    console.log('绑定结果:', res)
})

// 2. 混合打印
transactionPrinter({
    contents: [
        { content: '姓名:    刘永', type: 'TEXT', fontSize: 30 },
        { content: '微信:    liu2774', type: 'QR', align: 'left', qrSize: 4 },
        { type: 'BARCODE', align: 'center', content: 'liu2774', symbology: 8 }
    ]
}, res => {
    console.log('打印结果:', res)
})

// 3. 退出时解绑(可省,插件退出时自动解绑)
unBindService(res => {})

API 文档

打印方法(核心)

方法 参数 说明
transactionPrinter(options, callback) options, callback 核心方法:混合打印 TEXT/QR/BARCODE/PIC。内部自动绑定服务,无需手动 bindService
printText(options, callback) options, callback 打印简单键值对文本({contents:[{title,content}]}
printLabTag(options, callback) options, callback 打印定制标签,使用预定义布局 QR + 5 行文本

💡 推荐使用 transactionPrinter 一个方法完成所有打印需求,无需关心服务绑定和解绑,软件退出后自动解绑。

基础方法

方法 参数 说明
bindService(callback) callback: (result) => void 绑定 Sunmi 打印服务(一般不需要手动调用)
unBindService(callback) callback: (result) => void 解绑打印服务(软件退出自动解绑,一般不需要手动调用)

设备信息

方法 参数 说明
getPrinterSerialNo(callback) callback: (result) => void 获取打印机序列号
getPrinterModal(callback) callback: (result) => void 获取打印机型号
getPrinterVersion(callback) callback: (result) => void 获取打印机固件版本
getSN(callback) callback: (result) => void 获取终端设备序列号

硬件交互

方法 参数 说明
initScanner(options, callback) options: {}, callback 注册扫码枪监听,扫码数据通过 callback 回调

内容项类型

transactionPrintercontents 数组支持以下类型:

TEXT(文本)

默认类型,可不传 type。支持对齐方式和字体大小:

{
    type: 'TEXT',           // 可省略,默认 TEXT
    content: '姓名:    Matt-刘永',
    align: 'left',          // left | center | right,默认 left
    fontSize: 25            // 字体大小,默认 25
}

QR(二维码)

生成并打印二维码:

{
    type: 'QR',
    content: 'wx:liu2774',  // 二维码内容
    align: 'center',
    qrSize: 5               // 二维码尺寸 4-16,默认 5
}

BARCODE(条码)

支持 9 种条码类型:

{
    type: 'BARCODE',
    content: 'liu2774',     // 条码内容
    align: 'center',
    symbology: 8,           // 条码类型 0-8,默认 8 (CODE128)
    height: 162,            // 条码高度 1-255,默认 162
    width: 2,               // 条码宽度 2-6,默认 2
    textPosition: 2         // 文字位置 0-3,默认 2(下方)
}

symbology 条码类型对照:

类型
0 UPC-A
1 UPC-E
2 JAN13(EAN13)
3 JAN8(EAN8)
4 CODE39
5 ITF
6 CODABAR
7 CODE93
8 CODE128

PIC(图片)

支持网络图片和本地图片:

{
    type: 'PIC',
    url: 'http://m.liuyong028.cn/default.jpg',  // 网络URL 或 本地文件路径
    align: 'center'
}

标签打印

printLabTag 使用预定义 Android 布局,格式为 QR 码 + 5 行文本:

import { printLabTag } from '@/uni_modules/ly028-SMPrinter'

printLabTag({
    qr: { qrTxt: 'wx:liu2774', qrSize: 350 },  // 左侧二维码
    t1: { txt: 'IN21002662', fontsize: 50 },    // 右侧第1行
    t2: { txt: '笔记本电脑', fontsize: 40 },     // 右侧第2行
    t3: { txt: '联想ThinkPadL13', fontsize: 40 },// 右侧第3行
    t4: { txt: 'www.liuyong028.cn', fontsize: 35 }, // 底部左
    t5: { txt: '打印日期:2022-07-08', fontsize: 35 } // 底部右
}, res => {
    console.log('标签打印结果:', res)
})

返回格式

所有方法通过 callback 返回结果,格式统一:

// 成功
{ code: 0, msg: "打印成功" }
{ code: 0, msg: "获取成功", data: "xxxx" }  // getter 方法

// 失败
{ code: 1, msg: "打印服务未初始化" }

注意事项

  1. 仅支持商米 Sunmi 设备,依赖 com.sunmi:printerlibrary:1.0.13
  2. 极简使用:只需调用 transactionPrinter 一个方法,内部自动绑定服务并打印
  3. 自动解绑:软件退出后会自动解绑打印服务,无需手动调用 unBindService
  4. 标签打印(printLabTag)使用 Android 布局渲染后打印,支持自定义字体
  5. 扫码枪监听(initScanner)注册后持续监听,扫码即回调
  6. 图片打印支持网络 URL(http/https)和本地文件路径

旧版迁移

旧版原生插件地址:https://ext.dcloud.net.cn/plugin?id=6957

主要变化:

项目 旧版(原生插件) 新版(UTS 插件)
调用方式 uni.requireNativePlugin('LY028-NativeSdk-Printer') import { xxx } from '@/uni_modules/ly028-SMPrinter'
API 签名 使用 @UniJSMethod 注解 UTS 导出函数
参数格式 完全一致 完全兼容
返回格式 {code, msg, data} {code, msg, data} 完全一致

许可证

MIT

隐私、权限声明

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

Android: BIND_PRINT_SERVICE(打印服务)、CAMERA(扫码枪,可选)

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

插件不采集任何数据

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