更新记录
1.0.0(2025-05-30)
可以通过sdk连接到内置打印机来打印,支持58和80mm热敏打印机,两种打印规格,切刀
平台兼容性
uni-app
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | - | - | - | - | 5.0 | × | √ |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | - | × | × | × | × |
uni-app x
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | 5.0 | × | √ | × |
概述
emin-printer封装一敏打印模块,支持一敏旗下的所有商用硬件的打印服务,设备应用于包括外卖接单,打印小票,扫描,收款,团购核销,点餐预约等一系列商业场景。
功能说明
-
一敏打印服务介绍 一敏打印服务是系统预置的功能,用于管理一敏打印机设置和外接打印机的添加。开发者可以通过本服务配置内置打印机,以及添加外接打印机无需额外适配。该插件完整实现了Android原生库PrinterSDK(com.sunmi:printerx)的所有功能,方便开发者直接通过Uniapp和UniappX平台调用打印服务,实现跨平台需求。
-
一敏新emin-printer打印说明
为了更方便开发者调用一敏品牌的打印机,也为了简化开发者打印相关开发难度,一敏官方于2024年3月底对一敏打印SDK做了重构,通过本次升级,扩展了SDK功能,提高了SDK使用的上手速度,统一并简化了所有设备打印业务的SDK封装
-
新旧功能对比示
对比项 旧版SDK 新版SDK 支持打印类型 仅支持热敏小票打印机按行打印 支持热敏小票、热敏标签、文件打印等多种方式 适配范围 仅针对一敏内置打印机 支持所有一敏设备 指令支持 仅支持ESC标准指令 支持ESC、TSPL以及将来扩展更多指令 友好度 构建复杂样式内容困难 构建复杂样式简单易上手 -
注意事项
从应用市场下载插件导入自己项目后,要先制作自定义插件后,才可以运行使用(示例程序已经打好基座,可以直接运行)
emin-printer插件需在 Android 5.0 版本及以上方可正常使用
尽量使用 HBuilderX 4.0+ 以上版本,以便更好在uni-app和uni-app x中使用uts插件
使用前要先调用initPrinter()方法初始化打印机,才可以正常打印,打印结束要及时调用closePrinter关闭打印服务
-
打印机状态说明
getPrinterStatus()
返回值说明:当前打印机状态
-1 -> 未连接服务 3 -> 开盖 4 -> 打印头温度过高 7 -> 缺纸 0 -> 打印机正常
完整代码示例
<template>
<view>
<button @click="printTest()">打印测试</button>
<view>打印机状态:{{printerStatus}}</view>
</view>
</template>
<script>
import {initPrinter,deInitPrinter,getPrinterStatus,setPageFormat,setPrinterDensity,printAndLineFeed,partialCut,fullCut,setFontMultiple,setFontBold,setFontItalic,
setFontUnderline,setFontLineSpacing,setFontChineseSpace,printText,printTextWithAli,setCodeAlignment,printBitmapColorChartWithAlign,printBitmapColorChart,
printBarCodeWithFull,printQRCodeWithFull}from "@/uni_modules/emin-printer";
export default {
data() {
return {
printerStatus:'',
}
},
methods: {
printTest(){
//初始化打印服务
initPrinter()
//获取打印机实时状态 返回值说明:当前打印机状态 -1 ->未连接服务 3 -> 开盖 4 -> 打印头温度过高 7 -> 缺纸 0 -> 打印机正常
this.printerStatus = getPrinterStatus()
//设定纸张规格 format 纸张规格 取值(80/58)
setPageFormat(58)
//设置打印浓度 density 要设置的浓度值 取值(70,80,90,100,110,120,130,140,150)
setPrinterDensity(150)
//走纸 0<value<1016 如果 value 取值大于 1016 则选择 1016
printAndLineFeed(80)
//切纸(半切)
partialCut()
/**
* 设置字符倍数
* wide 取值范围 0<= wide<=8
* high 倍高 取值范围 0<= wide<=8
*/
setFontMultiple(1,1)
/**
* 设置字符是否加粗
* bold true 字符加粗 false 字符取消加粗
*/
setFontBold(true)
/**
* 设置字符斜体
* italic true 字符斜体 ,false 字符取消斜体
*/
setFontItalic(true)
/**
* 设置字符下划线
* underline 0 取消下划线 1 轻下划线 2 重下划线
*/
setFontUnderline(1)
/**
* 设置字符间距
* space 设置字符间距位 anint 个锤子点距,(1mm = 8dots) 范围(0<= anint <= 255)
*/
setFontLineSpacing(4)
/**
* 设置中文字符间距
* chsLeftSpace 距离小票左边距 范围(0<chsLeftSpace<255)
* chsRightSpace 距离小票右边距 范围(0<chsRightSpace<255)
*/
setFontChineseSpace(2,2)
/**
* 设置打印全局对齐方式
* alignmentMode 0 居左 1 居中 2 居右
*/
setCodeAlignment(1)
//打印文字
printText('=====小票打印测试=====')
/**
* 文字打印添加对齐方式
* text 待打印的文本
* anInt 0 左对齐 1 居中 2 右对齐
*/
printTextWithAli('文字打印添加对齐方式',2)
/**
* 图片单色打印添加对齐方式
* base64String 图片
* alignmentMode 打印文本的对齐方式 0=居左 1=居中 2=居右
*/
let base64String = "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"
printBitmapColorChartWithAlign(base64String,2)
/**
* 图片单色打印
* base64String 图片
*/
printBitmapColorChart(base64String)
/**
* 一维码打印传全参数
* data 一维码的内容
* barCodeType 一维码类型
* width 一维码宽度取值范围 2<= width <= 6
* height 一维码的高度,取值范围 24<= height<= 250
* textposition HRI 字符的位置,取值范围 0<= height<= 3
* alignmentMode 一维码对齐方式 0=居左 1=居中 2=居右
*/
printBarCodeWithFull('123456789',0,4,100,2,1)
/**
* 二维码打印传全参数
*
* data 二维码的内容
* size 二维码的大小 取值范围 1<= size <= 11
* errorlevel 二维码的纠错级别 取值范围 0<= level<= 3
* alignments 一维码对齐方式 0=居左 1=居中 2=居右
*/
printQRCodeWithFull('987654321',8,2,1)
//全切
fullCut()
//注销打印服务
deInitPrinter()
}
},
}
</script>