更新记录

1.0.0(2026-08-13)

  • 首发:芯烨 XPrinter 票据打印 UTS API
  • Android:蓝牙经典 SPP、局域网 TCP、USB Host;内置 printer-lib 3.2.0
  • iOS:BLE/BT、局域网 TCP;内置 PrinterSDK v2.3.0
  • 鸿蒙:官方 printersdk 1.0.6(蓝牙/LAN/USB)已打包,无需另行安装
  • 能力:文本/多列、对齐加粗字号、走纸分隔线、条码、二维码、位图透传、切纸、开钱箱、蜂鸣、状态查询、纸宽 58/72/80、透传 sendRaw
  • 微信小程序本期不支持

平台兼容性

uni-app(4.11)

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

uni-app x(4.11)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
× × 5.0 1.0.0 12 1.0.0 × ×

breao-xprinter 使用说明

芯烨 XPrinter 票据打印插件,适用于收银、餐饮小票等芯烨热敏机场景。

当前版本:1.0.0

  • Android:蓝牙经典 SPP + 局域网 TCP + USB Host
  • iOS:BLE/BT + 局域网 TCP
  • 鸿蒙:官方 SDK(蓝牙 / 局域网 / USB,har 已内置)
  • 能力:文本/多列、对齐加粗字号、条码/二维码/位图、切纸/钱箱/蜂鸣、状态查询、纸宽 58/72/80、原始字节透传
  • 不做微信小程序端、芯烨云开放 API、全量 TSPL 标签排版引擎

建议调用顺序:initconnectBluetooth / connectLan / connectUsb → 打印指令 → disconnect / destroy。各异步方法均支持 success / fail / completefailerrCode / errMsg。插件为单例连接语义:再次 init 会销毁上一实例。


1. 环境要求

  • HBuilderX 4.11 及以上
  • uni-app Vue3(App-vue / App-nvue)或 uni-app x(App-Android / App-iOS;uni-app x 下鸿蒙为不支持)
  • 支持:App-Android、App-iOS、App-鸿蒙(仅 uni-app)
  • 不支持:H5、微信及其它小程序
  • Android 最低 API:21;iOS 最低 12;鸿蒙最低 API:12
  • App 真机调试须制作自定义基座;正式发版须购买授权后走云端传统打包
  • 授权绑定唯一 appid + 包名

2. 安装与引入

将插件目录放入工程的 uni_modules/breao-xprinter,或从插件市场导入后同步。官方 SDK 二进制已内置,无需再手动下载 jar / xcframework,也无需执行 ohpm install @xpsdk/printersdk

import {
  init,
  destroy,
  startBluetoothScan,
  stopBluetoothScan,
  getBondedDevices,
  connectBluetooth,
  connectLan,
  connectUsb,
  disconnect,
  getConnectionState,
  printText,
  printColumns,
  printBytes,
  sendRaw,
  setAlign,
  setBold,
  setFontSize,
  feed,
  printDivider,
  printBarcode,
  printQrcode,
  printImage,
  cutPaper,
  openCashBox,
  beep,
  getPrinterStatus,
} from '@/uni_modules/breao-xprinter'

3. API

3.1 init / destroy

init({
  transport: 'lan',
  paperWidthMm: 80,
  encoding: 'gbk',
  debug: false,
  onDisconnected(res) {
    console.log('disconnected', res)
  },
  success() {},
  fail(err) {
    console.error(err.errCode, err.errMsg)
  },
})

destroy({ success() {}, fail() {} })

3.2 扫描与连接

startBluetoothScan({
  timeout: 10000,
  success(res) {
    // res.devices: [{ name, address, rssi?, bonded? }]
  },
  fail(err) {},
})

getBondedDevices({ success(res) {}, fail(err) {} }) // Android 已配对列表

connectBluetooth({ address: 'XX:XX:XX:XX:XX:XX', success() {}, fail(err) {} })
connectLan({ host: '192.168.1.100', success() {}, fail(err) {} })
connectUsb({ success() {}, fail(err) {} }) // 须 init({ transport: 'usb' })

disconnect({ success() {}, fail() {} })

说明:iOS 请先扫描再连接;鸿蒙蓝牙传系统蓝牙设备 id;参数默认值见 §4。

3.3 打印与排版

printText({ content: 'Hello XPrinter', success() {}, fail() {} })
printColumns({ columns: ['品名', '数量', '金额'], widths: [2, 1, 1], success() {}, fail() {} })
setAlign({ align: 'center', success() {}, fail() {} })
setBold({ bold: true, success() {}, fail() {} })
setFontSize({ width: 2, height: 2, success() {}, fail() {} })
printBarcode({ content: '123456789012', type: 'CODE128', success() {}, fail() {} })
printQrcode({ content: 'https://example.com/order/1', success() {}, fail() {} })
printImage({ base64: '...', align: 'center', success() {}, fail() {} })
cutPaper({ mode: 'partial', success() {}, fail() {} })
openCashBox({ pin: 0, success() {}, fail() {} })
beep({ times: 1, duration: 3, success() {}, fail() {} })
printBytes({ data: arrayBuffer, success() {}, fail() {} })

3.4 状态查询

getConnectionState({
  success(res) {
    // res.state / res.address / res.transport / res.paperWidthMm
  },
  fail(err) {},
})

getPrinterStatus({
  success(res) {
    // res.online / paperWidthMm / transport / rawStatus(无回读时为 -1)
  },
  fail(err) {},
})
字段 说明
state 连接状态 disconnected / connecting / connected
online 是否已连接(getPrinterStatus)
paperWidthMm 当前纸宽配置
transport 当前传输方式
rawStatus 机型回读状态字节;不可读时为 -1

4. 可配置项

字段 位置 默认 说明
transport init bluetooth bluetooth / lan / usb;鸿蒙三通道均走官方 SDK;iOS 不支持 usb
paperWidthMm init 80 纸宽毫米:58 / 72 / 80
encoding init / printText gbk printText 默认编码;端不支持时请改用 printBytes
codePage init 代码页提示字符串,供对接官方 SDK / 固件时参考
lanPort init 9100 局域网默认 TCP 端口,可被 connectLan.port 覆盖
bleChunkSize init 端默认 BLE 单次写入字节数;Android 经典 SPP 忽略
bleWriteInterval init 端默认 BLE 分片写间隔毫秒;Android 经典 SPP 忽略
bleServiceUuid init BLE Service UUID;空则宽松匹配可写特征(iOS)
bleCharacteristicUuid init BLE Characteristic UUID;空则宽松匹配
debug init false 调试日志
onDisconnected init 被动断开回调
timeout startBluetoothScan 10000 扫描超时毫秒
includeBonded startBluetoothScan true 是否合并系统已配对设备(Android)
nameHints startBluetoothScan 内置关键字 名称过滤;默认含 XP-、XPrinter、芯烨、Printer、POS 等
address connectBluetooth 必填 Android 多为 MAC;iOS 为扫描结果 address;鸿蒙为系统蓝牙设备 id
timeout connectBluetooth 15000 连接超时毫秒
host connectLan 必填 打印机局域网 IP
port connectLan init.lanPort 或 9100 TCP 端口
timeout connectLan 10000 连接超时毫秒
deviceName connectUsb USB 设备名;空则尝试首个可用打印机类设备(Android / 鸿蒙)
content printText / printBarcode / printQrcode 必填 文本或码内容
encoding printText 覆盖 init.encoding 本次打印编码
newline printText true 打印后是否追加换行
columns printColumns 必填 多列文本字符串数组
widths printColumns 均分 各列相对宽度权重
data printBytes / sendRaw 必填 原始字节 ArrayBuffer
align setAlign / printImage left left / center / right
bold setBold 必填 是否加粗
width / height setFontSize 1 字号宽/高倍率,范围 1~8
lines feed 3 走纸行数
char printDivider - 分隔线字符
count printDivider 按纸宽估算 分隔字符重复次数
type printBarcode CODE128 CODE128 / CODE39 / EAN13 / EAN8 / UPC_A / UPC_E / ITF
height printBarcode 60 条码高度(点)
width printBarcode 2 条码模块宽度 2~6
hri printBarcode below none / above / below / both
moduleSize printQrcode 6 二维码模块大小 1~16
errorLevel printQrcode M L / M / Q / H
base64 printImage 推荐已光栅化 ESC 字节的 base64(可带 data: 前缀)
path printImage 本地路径;建议业务侧读文件后改传 base64 或 printBytes
mode cutPaper partial partial 半切 / full 全切
pin openCashBox 0 钱箱针脚 0 或 1
times beep 1 蜂鸣次数
duration beep 3 蜂鸣时长档位 1~9

不传参即用默认值。

4.1 transport 与端能力

transport Android iOS 鸿蒙
bluetooth 经典 SPP BLE 官方 SDK 蓝牙
lan TCP TCP 官方 SDK 网口
usb USB Host 不支持(9080009) 官方 SDK USB

5. 完整示例

import {
  init,
  connectLan,
  setAlign,
  printText,
  printQrcode,
  cutPaper,
  destroy,
} from '@/uni_modules/breao-xprinter'

init({
  transport: 'lan',
  paperWidthMm: 80,
  encoding: 'gbk',
  success() {
    connectLan({
      host: '192.168.1.100',
      port: 9100,
      success() {
        setAlign({ align: 'center' })
        printText({ content: '芯烨小票' })
        printQrcode({ content: 'https://example.com/order/1' })
        cutPaper({
          mode: 'partial',
          success() {
            destroy({})
          },
        })
      },
      fail(err) {
        console.error(err.errCode, err.errMsg)
      },
    })
  },
  fail(err) {
    console.error(err.errCode, err.errMsg)
  },
})

6. 权限

请在应用 manifest / 隐私弹窗中按需声明,并说明用于连接芯烨打印机与发送打印数据。

平台 权限 说明
Android android.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMIN API≤30 经典蓝牙扫描与连接
Android android.permission.BLUETOOTH_SCAN、android.permission.BLUETOOTH_CONNECT Android 12+ 蓝牙扫描与连接
Android android.permission.ACCESS_FINE_LOCATION、android.permission.ACCESS_COARSE_LOCATION 旧系统蓝牙发现
Android android.permission.INTERNET、android.permission.ACCESS_NETWORK_STATE、android.permission.ACCESS_WIFI_STATE 局域网打印
Android 系统 USB 权限弹窗 USB Host 打印(插件内请求)
iOS NSBluetoothAlwaysUsageDescription、NSBluetoothPeripheralUsageDescription 蓝牙打印
iOS NSLocalNetworkUsageDescription 局域网打印
鸿蒙 ohos.permission.INTERNET 局域网打印
鸿蒙 ohos.permission.ACCESS_BLUETOOTH、ohos.permission.DISCOVER_BLUETOOTH、ohos.permission.MANAGE_BLUETOOTH 蓝牙打印

7. 错误码(908)

含义
9080001 成功
9080002 失败(连接/打印/IO 等)
9080003 未调用 init,或 SDK 未就绪
9080004 蓝牙未开启
9080005 未连接打印机
9080006 参数非法
9080007 当前运行平台不支持
9080008 驱动创建失败或不匹配
9080009 当前端不支持该 transport 或接口
9080010 能力未实现(如端侧扫描限制)

8. 平台注意

  • Android 蓝牙为经典 SPP;可用 nameHints 覆盖默认 XP- / XPrinter / 芯烨 等过滤
  • iOS 蓝牙为 BLE:须先 startBluetoothScan,再用扫描结果中的 address 连接
  • 局域网默认端口 9100;机型不同可用 connectLan.port 覆盖
  • USB:Android 与鸿蒙支持;请先 init({ transport: 'usb' })connectUsb
  • 鸿蒙蓝牙 address 为系统蓝牙设备 id;局域网 connectLan 会按 host,port 交给官方 SDK
  • printImage 推荐传入已光栅化的 ESC 字节 base64;仅传 path 时请先在业务侧读文件再 printBytes
  • getPrinterStatus 以连接态为主;部分机型无状态回读时 rawStatus 为 -1
  • 切换 transport 或彻底释放资源时,请 destroy 后再重新 init

隐私、权限声明

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

Android: android.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMIN(API≤30); android.permission.BLUETOOTH_SCAN、android.permission.BLUETOOTH_CONNECT(Android 12+); android.permission.ACCESS_FINE_LOCATION、android.permission.ACCESS_COARSE_LOCATION; android.permission.INTERNET、android.permission.ACCESS_NETWORK_STATE、android.permission.ACCESS_WIFI_STATE。 USB Host 打印需系统 USB 权限授权。 iOS: NSBluetoothAlwaysUsageDescription、NSBluetoothPeripheralUsageDescription、NSLocalNetworkUsageDescription。 鸿蒙: ohos.permission.INTERNET、ohos.permission.ACCESS_BLUETOOTH、ohos.permission.DISCOVER_BLUETOOTH、ohos.permission.MANAGE_BLUETOOTH。 用途:芯烨打印机扫描、连接与打印。

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

不采集、不上传任何数据;打印内容仅经本机蓝牙、USB 或局域网发至已连接的芯烨打印机。可选集成芯烨官方 SDK 仅用于本地设备通信

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

暂无用户评论。