更新记录
1.0.20260424(2026-04-23)
- 更新README
1.0.20260423(2026-04-23)
- 支持打印热敏小票
3.0.20250402(2025-04-02)
更新README
查看更多
平台兼容性
uni-app(5.0)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| - |
√ |
× |
× |
√ |
× |
5.0 |
× |
× |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(5.0)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
- |
- |
- |
- |
插件文档
引入插件
- 点击插件试用引入到项目
- 打包自定义基座包
- 按照下方示例测试
- 先插件试用,完全符合需求后购买
- 目前已测试设备 sunmi V2/sunmi V2S
插件方法
| 方法 |
描述 |
| testLabelPrinter(width,height) |
打印标签小票最简示例 |
| labelPrinter(jsonData,success【成功】,fail【失败】) |
打印标签小票方法 |
| testThermalPrinter(width,height) |
打印热敏小票最简示例 |
| thermalPrinter(jsonData,success【成功】,fail【失败】) |
打印热敏小票方法 |
标签小票打印说明
labelPrinter 支持以下能力:
- 文本
- 条码
- 二维码
- 图片
- 图形
labelPrinter 参数1:jsonData 参数描述
export type LabelPrinterParamOption = {
rect : LabelPrinterItemOption,
items : LabelPrinterItemOption[],
count : number
}
LabelPrinterItemOption 参数描述
| 参数名 |
类型 |
描述 |
| type |
string |
text 文本 / barcode 条码 / qr 二维码 / image 图片 / area 图形 |
| text |
string |
文本内容;text/barcode/qr 场景常用 |
| setWidth |
number |
宽度 |
| setHeight |
number |
高度 |
| setPosX |
number |
X 坐标 |
| setPosY |
number |
Y 坐标 |
| setAlign |
string |
对齐方式:DEFAULT/LEFT/CENTER/RIGHT |
| setRotate |
string |
旋转:ROTATE_0/ROTATE_90/ROTATE_180/ROTATE_270 |
| setStyle |
string |
图形样式(area):RECT/CIRCLE/OVAL/PATH |
| setEndX |
number |
图形终点 X(area) |
| setEndY |
number |
图形终点 Y(area) |
| setThick |
number |
图形线条粗细(area) |
| base64Image |
string |
base64 图片数据(image 必填) |
| setAlgorithm |
string |
图片算法(image):BINARIZATION/DITHERING |
| setValue |
number |
图片算法阈值(image + BINARIZATION 可用) |
| setDotWidth |
number |
条码线宽(barcode) |
| setBarHeight |
number |
条码高度(barcode) |
| setReadable |
string |
条码可读文本位置:POS_NONE/POS_ONE/POS_TWO/POS_BOTH |
| setSymbology |
string |
条码类型:UPC_A/UPC_E/JAN13/JAN8/CODE39/ITF/CODABAR/CODE93/CODE128 |
| setDot |
number |
二维码点大小(qr) |
| setErrorLevel |
string |
二维码纠错级别(qr):L/M/Q/H |
| setFont |
string |
字体(text) |
| setTextSize |
number |
字体大小(text) |
| setTextWidthRatio |
number |
字宽比例(text) |
| setTextHeightRatio |
number |
字高比例(text) |
| setTextSpace |
number |
字间距(text) |
| enableBold |
boolean |
粗体(text) |
| enableUnderline |
boolean |
下划线(text) |
| enableStrikethrough |
boolean |
删除线(text) |
| enableItalics |
boolean |
斜体(text) |
热敏小票打印说明
thermalPrinter 支持以下能力:
- 文本
- 按列打印
- 条形码
- 二维码
- 图片
- 分割线
thermalPrinter 参数1:jsonData 参数描述
export type ThermalPrinterParamOption = {
rect : ThermalPrinterItemOption,
items : ThermalPrinterItemOption[]
}
ThermalPrinterItemOption 参数描述
| 参数名 |
类型 |
描述 |
| type |
string |
text 文本 / columns 按列打印 / barcode 条码 / qr 二维码 / image 图片 / line 分割线 |
| text |
string |
文本内容;text/barcode/qr/line 场景常用 |
| setWidth |
number |
宽度 |
| setHeight |
number |
高度 |
| setPosX |
number |
X 坐标 |
| setPosY |
number |
Y 坐标 |
| setAlign |
string |
对齐方式:DEFAULT/LEFT/CENTER/RIGHT |
| setRotate |
string |
旋转:ROTATE_0/ROTATE_90/ROTATE_180/ROTATE_270 |
| columnsText |
string[] |
按列打印的列文本(columns) |
| columnsWidth |
string[] |
按列打印列宽(columns,内部会转为数字) |
| columnsAlign |
string[] |
按列对齐(columns):0 左 / 1 中 / 2 右 |
| base64Image |
string |
base64 图片数据(image 必填) |
| setAlgorithm |
string |
图片算法(image):BINARIZATION/DITHERING |
| setValue |
number |
图片算法阈值(image + BINARIZATION 可用) |
| setDotWidth |
number |
条码线宽(barcode) |
| setBarHeight |
number |
条码高度(barcode) |
| setReadable |
string |
条码可读文本位置:POS_NONE/POS_ONE/POS_TWO/POS_BOTH |
| setSymbology |
string |
条码类型:UPC_A/UPC_E/JAN13/JAN8/CODE39/ITF/CODABAR/CODE93/CODE128 |
| setDot |
number |
二维码点大小(qr) |
| setErrorLevel |
string |
二维码纠错级别(qr):L/M/Q/H |
| setFont |
string |
字体(text) |
| setTextSize |
number |
字体大小(text) |
| setTextWidthRatio |
number |
字宽比例(text) |
| setTextHeightRatio |
number |
字高比例(text) |
| setTextSpace |
number |
字间距(text) |
| enableBold |
boolean |
粗体(text) |
| enableUnderline |
boolean |
下划线(text) |
| enableStrikethrough |
boolean |
删除线(text) |
| enableItalics |
boolean |
斜体(text) |
| lineType |
string |
分割线类型(line):EMPTY 空白 / DOTTED 虚线 / SOLID 实线 |
| lineOffset |
number |
分割线高度(line) |
参考链接
- 标签小票文档
- 热敏小票文档
引入插件
import * as sunmi from '@/uni_modules/cms-sunmi';
uniapp 完整示例代码
<template>
<view >
<button @click="testLabelPrinter" type="primary">标签打印(最简)</button>
<button @click="labelPrinter" type="primary">标签打印(全功能)</button>
<button @click="labelPrinterImage" type="primary">标签打印图片</button>
<button @click="testThermalPrinter" type="primary">热敏打印(最简)</button>
<button @click="thermalPrinterDemoByDoc" type="primary">热敏打印(全功能)</button>
</view>
</template>
<script setup>
import * as sunmi from '@/uni_modules/cms-sunmi';
function testThermalPrinter(){
sunmi.testThermalPrinter(400, 240);
}
function thermalPrinterDemoByDoc(){
sunmi.thermalPrinter(JSON.stringify({
rect: {
setWidth: 400,
setHeight: 240
},
items: [
{
type: 'line',
lineType: "DOTTED",
lineOffset: 30
},
{
type: 'text',
text: '商米热敏小票 Demo',
setAlign: 'CENTER',
setTextSize: 32,
enableBold: true,
},
{
type: 'line',
lineType: "EMPTY",
lineOffset: 30
},
{
type: 'columns',
columnsText: ['商品', '数量', '金额'],
columnsWidth: ['16', '6', '10'],
columnsAlign: ['0', '1', '2'],
},
{
type: 'columns',
columnsText: ['门禁卡', '2', '31.80'],
columnsWidth: [16, 6, 10],
columnsAlign: [0, 1, 2],
},
{
type: 'line',
lineType: "SOLID",
lineOffset: 30
},
{
type: 'barcode',
text: '250015001590010005',
setSymbology: 'CODE128',
setReadable: 'POS_TWO',
setBarHeight: 80,
setDotWidth: 2,
setAlign: 'CENTER',
},
{
type: 'qr',
text: 'https://www.sunmi.com',
setDot: 8,
setErrorLevel: 'M',
}
]
}),(res)=>{
// 此处是成功回调
console.log(res)
},(err)=>{
// 此处是失败回调
console.error(err)
})
}
function testLabelPrinter() {
sunmi.testLabelPrinter(400, 240);
}
function labelPrinterImage() {
sunmi.labelPrinter(JSON.stringify({
"items": [{
"type": "image",
"setPosX": 0,
"setPosY": 0,
"setWidth": 200,
"setHeight": 200,
"base64Image": `data:image/png;base64,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`
}],
"rect": {
"setWidth": 400,
"setHeight": 240
},
"count": 1
}), res => {
console.log('success:', res);
}, err => {
console.log('fail:', err);
})
}
function labelPrinter() {
sunmi.labelPrinter(JSON.stringify({
"items": [{
"setText": "品名:门禁卡",
"setPosX": 0,
"setPosY": 0,
"setTextSize": 30,
"setTextWidthRatio": 0,
"setTextHeightRatio": 0,
"setWidth": 208,
"setAlign": "LEFT",
"setRotate": "ROTATE_0",
"setTextSpace": 0,
"enableUnderline": false,
"enableStrikethrough": false,
"enableItalics": false,
"enableBold": false,
"type": "text",
"text": "品名:门禁卡"
},
{
"setText": "15.90元/500g",
"setPosX": 17,
"setPosY": 45,
"setTextSize": 24,
"setTextWidthRatio": 0,
"setTextHeightRatio": 0,
"setWidth": 152,
"setAlign": "LEFT",
"setRotate": "ROTATE_180",
"setTextSpace": 0,
"enableUnderline": true,
"enableStrikethrough": false,
"enableItalics": false,
"enableBold": false,
"type": "text",
"text": "15.90元/500g"
},
{
"setText": "5.3折",
"setPosX": 316,
"setPosY": 8,
"setTextSize": 24,
"setTextWidthRatio": 0,
"setTextHeightRatio": 0,
"setWidth": 96,
"setAlign": "LEFT",
"setRotate": "ROTATE_270",
"setTextSpace": 0,
"enableUnderline": false,
"enableStrikethrough": false,
"enableItalics": false,
"enableBold": true,
"type": "text",
"text": "5.3折"
},
{
"setText": "250015001590010005",
"setPosX": 16,
"setPosY": 112,
"setDotWidth": 1,
"setBarHeight": 56,
"setReadable": "POS_TWO",
"setSymbology": "CODE128",
"setAlign": "LEFT",
"setRotate": "ROTATE_0",
"type": "barcode",
"text": "250015001590010005"
},
{
"setText": "2025-01-03 14:04:51",
"setPosX": 136,
"setPosY": 208,
"setTextSize": 24,
"setTextWidthRatio": 0,
"setTextHeightRatio": 0,
"setWidth": 224,
"setAlign": "LEFT",
"setRotate": "ROTATE_180",
"setTextSpace": 0,
"enableUnderline": false,
"enableStrikethrough": false,
"enableItalics": true,
"enableBold": false,
"type": "text",
"text": "2025-01-03 14:04:51"
},
{
"setText": "供应商:000035",
"setPosX": 20,
"setPosY": 84,
"setTextSize": 24,
"setTextWidthRatio": 0,
"setTextHeightRatio": 0,
"setWidth": 208,
"setAlign": "LEFT",
"setRotate": "ROTATE_0",
"setTextSpace": 0,
"enableUnderline": false,
"enableStrikethrough": false,
"enableItalics": false,
"enableBold": false,
"type": "text",
"text": "供应商:000035"
},
{
"setText": "00150",
"setPosX": 248,
"setPosY": 9,
"setTextSize": 30,
"setTextWidthRatio": 0,
"setTextHeightRatio": 0,
"setWidth": 99,
"setAlign": "LEFT",
"setRotate": "ROTATE_90",
"setTextSpace": 0,
"enableUnderline": false,
"enableStrikethrough": false,
"enableItalics": false,
"enableBold": false,
"type": "text",
"text": "00150"
},
],
"rect": {
"setWidth": 400,
"setHeight": 240
},
"count": 1
}), res => {
console.log('success:', res);
}, err => {
console.log('fail:', err);
})
}
</script>
需要帮助?有其他插件的需求?联系我!