更新记录

1.0.3(2026-05-12)

  1. 完善鸿蒙端 TSPL、CPCL的图片打印功能

1.0.2(2026-05-12)

  1. 增加自定义指令接口setUserCommand和addCommand

1.0.1(2026-05-12)

  1. 完善ESC、TSPL-TSC、CPCL等打印指令
  2. 增加图片打印
查看更多

平台兼容性

uni-app(3.7.8)

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

uni-app x(3.7.7)

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

其他

多语言 暗黑模式 宽屏模式

ESC小票、TSPL-TSC标签、CPCL面单、ZPL斑马各种打印,支持所有端

功能介绍

  • 支持ESC小票、TSPL-TSC标签、CPCL面单、ZPL斑马
  • 支持所有端,包含iOS、Android、鸿蒙、小程序、pc等
  • 支持uniapp、uniapp-x
  • 打印文本、一维码、二维码、图片等
  • 支持蓝牙、Wi-Fi、usb、串口等多种连接方式
  • 支持所有类型打印机:佳博、启锐、芯烨、汉印、得力、容大、匠辛、快麦、印向未来、济强、芝柯、佳博、商米

集成步骤

  1. 拷贝demo里的AndroidManifest.xml、Info.plist、harmony-configs文件到项目根目录
  2. 本页面右上角可以点击"使用HBuilderX导入示例项目"下载demo,导入demo的时候选vue3,插件支持vue2和vue3
  3. 插件详细集成步骤可以参考https://www.jianshu.com/p/c1615a7880a7
  4. 如需定制或增加功能请点击插件标题下方的"进入交流群"私聊作者

接口

    import {
    ESC,
    CPCL,
    TSPL,
    ZPL,
    requestPermissionsFromUser,
    getResourcePath,
    HexUtils
} from "@/uni_modules/wrs-uts-comprint"

ESC/POS收据、小票打印,如超市、餐饮小票(普通热敏小票机 (如58mm、80mm))


let esc = new ESC()
  • 初始化打印机

esc.setInit()
  • 获取指令

let dataArray = esc.getCommand()
  • 打印并换行

esc.setPrint()
  • 打印并走纸n个单位

let n = 2
esc.setPrintAndFeed(n)
  • 打印并走纸n 行

let n = 2
esc.setPrintAndFeeds(n)
  • HT 水平定位

esc.setHorTab()
  • 设置绝对打印位置

let n = 2
esc.setAbsolutePrintPosition(n)
  • 设置相对横向打印位置

let n = 2
esc.setRelativePrintPositon(n)
  • 选择对齐方式

// 0:左对齐 1:居中对齐 2:右对齐
let n = 2
esc.setSelectJustification(n)
  • 设置左边距

let n = 2
esc.setLeftMargin(n)
  • 设置打印区域宽度

let n = 2
esc.setPrintingAreaWidth(n)
  • 设置横向和纵向移动单位

let x = 2
let y = 0
esc.setHorizontalAndVertical(x, y)
  • 开钱箱,产生钱箱控制脉冲

let foot = 0 // 0: F1 1:F5
let t1 = 255
let t2 = 255
esc.addGeneratePlus(foot, t1, t2)
  • 实时产生钱箱开启脉冲

/**
 * DLE DC4 实时产生钱箱开启脉冲
 * 在指定的钱箱插座引脚产生设定的开启脉冲,引脚由m 指定:
   m 连接引脚
   0 钱箱插座引脚2
   1 钱箱插座引脚5
 * 脉冲高电平时间为[t × 100 ms],低电平的时间为[t × 100 ms]
 */
let n = 2
let m = 255
let t = 255
esc.setCashboxPulse(n, m, t)
  • 选择打印纸传感器以输出缺纸信号

    /**
 * ESC c 3 选择打印纸传感器以输出缺纸信号
 * 传入参数说明
 * • 当n 为0 时:关闭纸将尽传感器
 * • 当n 为1 时:开启纸将尽传感器
 * • 当n 为2 时:开启纸将尽传感器
 * • 当n 为3 时:开启纸尽传感器
 * • 当n 为4 时:开启纸尽传感器
 */
let n = 0
esc.setPrintPageSignal(n)
  • 选择打印纸传感器以停止打印

    /**
 * ESC c 4 选择打印纸传感器以停止打印
* 传入参数说明
 * • 当n 为0 时:禁止纸将尽传感器
 * • 当n 为1 时:允许纸将尽传感器
 * • 当n 为2 时:允许纸将尽传感器
 */
let n = 0
esc.setSensorToStopPrint(n)
  • 允许/禁止按键

    /**
 * ESC c 5 允许/禁止按键
 * 允许/禁止按键
 * 传入参数说明
 * • 当n 为0 时,按键起作用。
 * • 当n 为1 时,按键被禁止。
 */
let n = 0
esc.setSelectKey(n)
  • 选择打印机

    /**
 * ESC = 选择打印机
 * 选择打印机,被选择的打印机可以接收主计算机发送的数据
 * 传入参数说明
 * • 当n 为0 时,打印机禁止
 * • 当n 为1 时,打印机允许。
 */
let n = 0
esc.setSelectPrinter(n)
  • 设置默认行间距

esc.setDefaultLineSpace()
  • 设置行间距

let n = 1
esc.setLineSpace(n)
  • 设置字符右间距

let n = 1
esc.setCharacterRightSpace(n)
  • 选择打印模式

    /**
 * ESC ! 选择打印模式
 * 传入参数说明
 * 根据n 的值设置字符打印模式
 */
let n = 1
esc.setPrintMode(n)
  • 选择/取消用户自定义字符

/**
 * ESC % 选择/取消用户自定义字符
 * • 当n 为0 时,不使用用户自定义字符。
 * • 当n 为1 时,使用用户自定义字符。
 */
let n = 1
esc.setUserDefinitionCharacter(n)
  • 选择/取消下划线模式

/**
 * ESC – 选择/取消下划线模式
 * 传入参数说明
 * • 当n 为0 时:取消下划线模式
 * • 当n 为1 时:选择下划线模式(1 点宽)
 * • 当n 为2 时:选择下划线模式(2 点宽)
 */
let n = 1
esc.setUnderlineMode(n)
  • 取消用户自定义字符

/**
 * ESC ? 取消用户自定义字符
 * 传入参数说明
 * 取消用户自定义字符中代码为n 的字符。取消后,此字符使用内部字库
 */
let n = 1
esc.setCancleUserDefinitionCharacter(n)
  • 选择/取消加粗模式

/**
 * ESC E 选择/取消加粗模式
 * 传入参数说明
 * 当n 为0 时,取消加粗模式。
 * 当n 为1 时,选择加粗模式。
 */
let n = 1
esc.setBoldMode(n)
  • 选择/取消双重打印模式

    /**
 * ESC G 选择/取消双重打印模式
 *传入参数说明
 *• 当n 位为0 时,取消双重打印模式。
 *• 当n 位为1 时,选择双重打印模式。
 */
let n = 1
esc.setDoublePrintMode(n)
  • 选择字体

    /**
 * ESC M 选择字体
 * 传入参数说明
 * • 当n 位为0 时, 选择标准ASCII 码字体(12 × 24)
 * • 当n 位为1 时, 选择压缩ASCII 码字体(9 × 17))
 */
let n = 1
esc.setSelectFont(n)
  • 选择国际字符集

    /**
 * ESC R 选择国际字符集
 * 传入参数说明
 * • 当n 位为0 时, 选择美国(默认)
 * • 当n 位为1 时, 选择法国
 * • 当n 位为2 时, 选择德国
 * • 当n 位为3 时, 选择英国
 * • 当n 位为4 时, 选择丹麦I
 * • 当n 位为5 时, 选择瑞典
 * • 当n 位为6 时, 选择意大利
 * • 当n 位为7 时, 选择西班牙I
 * • 当n 位为8 时, 选择日本
 * • 当n 位为9 时, 选择挪威
 * • 当n 位为10 时, 选择丹麦II
 * • 当n 位为11 时, 选择西班牙II
 * • 当n 位为12 时, 选择拉丁美洲
 * • 当n 位为13 时, 选择韩国
 * • 当n 位为14 时, 选择斯洛维尼亚/克罗帝亚
 * • 当n 位为15 时, 选择中国
 */
let n = 1
esc.setInternationalCharacters(n)
  • 选择/取消顺时针旋转90 度

    /**
 * ESC V 选择/取消顺时针旋转90 度
 * 传入参数说明
 * • 当n 位为0 时, 取消顺时针旋转90 度模式
 * • 当n 位为1 时,选择顺时针旋转90 度模式
 */
let n = 1
esc.setRotate90(n)
  • 选择字符代码页

    /**
 * ESC t 选择字符代码页
 * 传入参数说明
 * • 当n 位为0 时, 选择PC437 [美国,欧洲标准](默认)
 * • 当n 位为1 时, 选择日文片假名
 * • 当n 位为2 时, 选择PC850 [多语言]
 * • 当n 位为3 时, 选择PC860 [葡萄牙语]
 * • 当n 位为4 时, 选择PC863 [加拿大-法语]
 * • 当n 位为5 时, 选择PC865 [北欧]
 * • 当n 位为6 时, 选择West Europe
 * • 当n 位为7 时, 选择Greek
 * • 当n 位为8 时, 选择Hebrew
 * • 当n 位为9 时, 选择PC755:East Europe
 * • 当n 位为10 时, 选择Iran   
 *   
 * • 当n 位为16 时, 选择WPC1252
 * • 当n 位为17 时, 选择PC866:Cyrillice*2
 * • 当n 位为18 时, 选择PC852:Latin2
 * • 当n 位为19 时, 选择PC858
 * • 当n 位为20 时, 选择Inrall
 * • 当n 位为21 时, 选择Latvian
 * • 当n 位为22 时, 选择Arabic
 * • 当n 位为23 时, 选择PT151,1251
 * • 当n 位为24 时, 选择PC747
 * • 当n 位为25 时, 选择WPC1257
 * 
 * • 当n 位为27 时, 选择Vietnam
 * • 当n 位为28 时, 选择PC864
 * • 当n 位为29 时, 选择PC1001
 * • 当n 位为30 时, 选择Uygur
 * 
 * • 当n 位为255 时, 选择Uygur
 * 打印机支持代码页请以打印机自检测试页为准
 */
let n = 1
esc.setCodePage(n)
  • 选择/取消倒置打印模式

    /**
 * ESC { 选择/取消倒置打印模式
 * 传入参数说明
 * • 当n 位为0 时, 选择PC437 [美国,欧洲标准](默认)
 * • 当n 位为1 时, 选择日文片假名
 */
let n = 1
esc.setInvertPrintMode(n)
  • 选择字符大小

    /**
 * GS ! 选择字符大小
 * 传入参数说明
 *(1 ≤ 纵向放大倍数≤ 8,1 ≤ 横向放大倍数≤ 8)
 *一个byte 有8 位,用0 到2 位选择字符高度,4 到6 位选择字符宽度
 * • 当n 位为0 时, 正常
 * • 当n 位为16 时,2(倍宽)
 * • 当n 位为32 时,3(倍宽)
 * • 当n 位为48 时,4(倍宽)
 * • 当n 位为64 时,5(倍宽)
 * • 当n 位为80 时,6(倍宽)
 * • 当n 位为96 时,7(倍宽)
 * • 当n 位为112 时,8(倍宽)
 * 
 * • 当n 位为16 时,2(倍高)
 * • 当n 位为32 时,3(倍高)
 * • 当n 位为48 时,4(倍高)
 * • 当n 位为64 时,5(倍高)
 * • 当n 位为80 时,6(倍高)
 * • 当n 位为96 时,7(倍高)
 * • 当n 位为112 时,8(倍高)
 * 若需要倍宽倍高,请在同等倍数下相加 如17为倍宽倍高
 */
let n = 0
esc.setCharacterSize(n)
  • 设置字符大小

// width: 0、16、32、48、64、80、96、112
// height:0~7
let width = 16
let height = 1
esc.setCharcterSize(width, height)
  • 选择/取消黑白反显打印模式

    /**
 * GS B 选择/取消黑白反显打印模式
 * 传入参数说明
 * • 当n 位为0 时,取消反显打印
 * • 当n 位为1 时,选择反显打印
 */
let n = 0
esc.setReverseMode(n)
  • 打印光栅位图,下面是在小程序里的例子(app端可以调用addOriginrastBitImage接口):

    /**
 * GS B 选择/取消黑白反显打印模式
 * 传入参数说明
 * • 当n 位为0 时,取消反显打印
 * • 当n 位为1 时,选择反显打印
 */

    wx.canvasGetImageData({
      canvasId: 'canvasOut',
      x: 0,
      y: 0,
      width: canvasWidth,
      height: canvasHeight,
      success: function (res) {
        console.log("获取画布数据成功")
        let width = res.width
        let height = res.height
        let data = res.data
        esc.setImageData(width, height, data)
      },
      complete: function (res) {
        console.log("finish")
      },
      fail: function (res) {
        console.log(res)
        wx.showToast({
          title: '获取画布数据失败',
          icon: 'none',
        })
      }
    })
  • 选择HRI 字符的打印位置

    /**
    * GS H 选择HRI 字符的打印位置
    * 传入参数说明
    * • 当n 位为0 时,不打印
    * • 当n 位为1 时,条码上方
    * • 当n 位为2 时,条码下方
    * • 当n 位为3 时,条码上、下方
    */
let n = 0
esc.setHRIPosition(n)
  • 选择HRI 使用字体

    /**
 * GS f 选择HRI 使用字体
 * 传入参数说明
 * • 当n 位为0 时,标准ASCII 码字符(12 × 24)
 * • 当n 位为1 时,压缩ASCII 码字符(9 × 17)
 */
let n = 0
esc.setHRIFont(n)
  • 选择条码宽度

let n = 2 // 2 ≤ n ≤ 6
esc.setBarcodeWidth(n)
  • 选择条码高度

let n = 2 // 1 ≤ n ≤ 255
esc.setBarcodeHeight(n)
  • 打印条码128类型条码

let n = "sssss125"
esc.setCode128(n)
  • 打印条码

let t = "CODE128" // 条码类型 "UPC-A", "UPC-E", "EAN13", "EAN8", "CODE39", "ITF", "CODABAR", "CODE93", "CODE128"
let n = "sssss125" // 条码内容
esc.setBarcodeContent(t, n)
  • 设置汉字字符模式

    /**
 * FS ! 设置汉字字符模式
 * 传入参数说明
 * • 当n 位为0 时,取消倍宽、倍高、取消下划线
 * • 当n 位为4 时,选择倍宽
 * • 当n 位为8 时,选择倍高
 * • 当n 位为128 时,选择下划线
 */
let n = 0
esc.setChineseCharacterMode(n)
  • 选择汉字模式

esc.setSelectChineseCharacter()
  • 取消汉字模式

esc.setCancelChineseCharacter()
  • 选择/取消汉字下划线模式

    /**
 * FS - 选择/取消汉字下划线模式
 * 传入参数说明
 * • 当n 位为0 时,取消汉字下划线
 * • 当n 位为1 时,选择汉字下划线(1 点宽)
 * • 当n 位为2 时,选择汉字下划线(2 点宽)
 */
let n = 0
esc.setCancelUnderLine(n)
  • 设置汉字字符左右间距

    /**
 * FS S 设置汉字字符左右间距
 * 传入参数说明
 * 分别将汉字的左间距和右间距设置为n1 和n2
 * 传入点数,1mm=8dot
 */
let n1 = 1
let n2 = 1
esc.setChineseCharacterSpace(n1, n2)
  • 选择/取消汉字倍高倍宽

    /**
 * FS W 选择/取消汉字倍高倍宽
 * • 当n 的最低位为0,取消汉字倍高倍宽模式。
 * • 当n 的最低位为1,选择汉字倍高倍宽模式。
 */
let n = 0
esc.setChineseCharacteHeightWidth(n)
  • 设置黑标定位偏移量

    /**
 * GS ( F 设置黑标定位偏移量
 * 该命令用于选择黑标定位控制允许,且设置切/撕纸位置或起始打印位置相对于黑标检测的偏移值。该值以点数计算。
 * p
 * 传入点数
 * 
 * a = 1, 2; 
 * a=1:设置起始打印位置相对于黑标检测位置的偏移量
 * a=2:设置切/撕纸位置相对于黑标检测位置的偏移量
 * 
 * m = 0, 48
 * m=0 或48,选择偏移量为前进纸方向计算;
 * 
 * 0 ≤ n ≤ 1700
 */
let p = 1
let a = 1
let m = 0
let n = 0
esc.setBlackMaskOffset(p, a, m, n)
  • 设置黑标至打印起始位置

esc.setBlackMarkStart()
  • 选择切纸模式并切纸

esc.setCutter()
  • 选择切纸模式并切纸
    /**
* GS V 选择切纸模式并切纸
* 传入参数说明
* 传入点数,1mm=8dot
* 进纸n 并且半切纸
*/
let n = 1
esc.setCutter(n)
  • 打印机来单打印蜂鸣提示
    /**
 * ESC B 打印机来单打印蜂鸣提示
 * 传入参数说明
 * 1 ≤ n ≤ 9
 * 1 ≤ t ≤ 9
 * n 是指蜂鸣器鸣叫次数。
 * t 是指蜂鸣器鸣每次数鸣叫时间为(t × 50) ms
 */
let n = 1
let t = 50
esc.setSound(n, t)
  • 打印机来单打印蜂鸣提示及报警灯闪烁
    /**
 * ESC C 打印机来单打印蜂鸣提示及报警灯闪烁
 * 传入参数说明
 * 1 ≤ m ≤ 20,1 ≤ t ≤ 20,0 ≤ n ≤ 3
 * 
 * m:指报警灯闪烁次数或蜂鸣器鸣叫次数
 * 
 * t:指报警灯闪烁间隔时间为(t × 50) ms 或蜂鸣器鸣叫间隔时间为(t × 50) ms
 * 
 * 当n = 0 时,蜂鸣器不鸣叫,同时报警灯不闪烁
 * 当n = 1 时,蜂鸣器鸣叫
 * 当n = 2 时,报警灯闪烁
 * 当n = 3 时,蜂鸣器鸣叫,同时报警灯闪烁
 */

let m = 1
let n = 1
let t = 50
esc.setOrderTip(m, t, n)
  • 设置QRCode 模块大小为n dot
/**
 * 设置QRCode 模块大小为n dot
 * 传入参数说明
 * 1 ≤ n ≤ 15
 * [默认值] n = 3
 */
let n = 3
esc.setSelectSizeOfModuleForQRCode( n)
  • 选择QRCode 纠错等级
    /**
 * 选择QRCode 纠错等级
 * 传入参数说明
 * n      功能        纠错能力
 * 48    选择纠错等级  L 7
 * 49    选择纠错等级  M 15
 * 50    选择纠错等级  Q 25
 * 51    选择纠错等级  H 30
 */
let n = 48
esc.setSelectErrorCorrectionLevelForQRCode( n)
  • 存储QRCode 数据(d1...dk)到符号存储区

let n = "https://www.baidu.com"
esc.setStoreQRCodeData( n)
  • 打印QRCode

esc.setPrintQRCode()
  • 设置文字

let n = "54"
esc.setText(n)
  • 添加自定义指令

let n = 0xff
esc.setUserCommand(n)
  • 添加自定义指令

let command = "\r\n"
esc.addCommand(command)
  • 打印并换行

esc.setPrintAndLineFeed()
  • 切纸

esc.setCutPaper()
  • 打印图片,支持iOS、Android、harmony

let url = getResourcePath("/static/ic_priter.png")
esc.addOriginrastBitImage(url, width, (resp) => {
})

TSPL-TSC标签打印,国内兼容性极好,如物价、物流标签(通用型桌面条码机 (如佳博3120TU))


let tspl = new TSPL()
  • 获取打印指令

let dataArray = tspl.getCommand()
  • 添加自定义指令

let n = 0xff
tspl.setUserCommand(n)
  • 添加自定义指令

let command = "\r\n"
tspl.addCommand(command)
  • 设定卷标纸的宽度和长度

/**
 * 该指令用于设定卷标纸的宽度和长度
 * 传入参数说明
 * width:标签宽度 单位mm
 * height:标签高度 单位mm
 */
let width = 50
let height = 70
tspl.setSize(width, height)
  • 定义两张卷标纸间的垂直间距距离

let n = 0
tspl.setGap(n)
  • 设定黑标高度及定义标签印完后标签额外送出的长度

let n = 0
tspl.setBline(n)
  • 控制在剥离模式时(peel-off mode)每张卷标停止的位置

/**
 * 该指令用于控制在剥离模式时(peel-off mode)每张卷标停止的位置,在打印
 * 下一张时打印机会将原先多推出或少推出的部分以回拉方式补偿回来。该指令仅
 * 适用于剥离模式。
 * 传入参数说明
 * 纸张停止的距离 单位mm 
 */
let n = 0
tspl.setOffset(n)
  • 控制打印速度

    /**
 * 该指令用于控制打印速度
 *  传入参数说明
 * 1<=printSpeed<=6
 * 实际支持速度以自检页为准
 */
let n = 2
tspl.setSpeed(n)
  • 该指令用于控制打印时的浓度

    /**
 * 该指令用于控制打印时的浓度
  传入参数说明
 * 1<=printDensity<=15
 */
let n = 2
tspl.setDensity(n)
  • 该指令用于定义打印时出纸和打印字体的方向

/**
 * 该指令用于定义打印时出纸和打印字体的方向
 * 传入参数说明
 * direction=0或direction=1
 */
let n = 2
tspl.setDirection(n)
  • 该指令用于定义打印时出纸和打印字体的方向

let direction = 0 // 0:FORWARD 1:BACKWARD
let mirror = 0 // 0: NORMAL    1: MIRROR
tspl.addDirection(direction, mirror)
  • 该指令用于定义卷标的参考坐标原点。坐标原点位置和打印方向有关

    /**
 * 该指令用于定义卷标的参考坐标原点。坐标原点位置和打印方向有关
 * 传入参数说明
 * x 水平方向的坐标位置,单位dots
 * y 垂直方向的坐标位置,单位dots
 * 打印机分辨率200 DPI:  1 mm = 8  dots
 * 打印机分辨率300 DPI:  1 mm = 12 dots
 */
let x = 0 
let y = 0
tspl.setReference(x, y)
  • 该指令表示标签打印偏移量多少设置

    /**
 * 该指令表示标签打印偏移量多少设置
 * 传入参数说明  点数dot
 * n 偏移量 ,单位dot 1mm=8 dots
 * 打印机分辨率200 DPI:  1 mm = 8  dots
 * 打印机分辨率300 DPI:  1 mm = 12 dots
 */
let n = 0
tspl.setShift(n)
  • 该指令用于选择对应的国际字符集

    /**
 * 该指令用于选择对应的国际字符集
 * 传入参数说明
 *  001:USA
 *  002:French
 *  003:Latin America
 *  034:Spanish
 *  039:Italian
 *  044:United Kingdom
 *  046:Swedish
 *  047:Norwegian
 *  049:German
 */
let n = "001"
tspl.setCountry(n)
  • 该指令用于选择对应的国际代码页

/**
 * 该指令用于选择对应的国际代码页
 * 传入参数说明
 * 8-bit codepage 字符集代表
 * 437:United States
 * 850:Multilingual
 * 852:Slavic
 * 860:Portuguese
 * 863:Canadian/French
 * 865:Nordic
 * 
 * Windows code page
 * 1250:Central Europe
 * 1252:Latin I
 * 1253:Greek
 * 1254:Turkish
 * 
 * 以下代码页仅限于12×24 dot 英数字体
 * WestEurope:WestEurope
 * Greek:Greek
 * Hebrew:Hebrew
 * EastEurope:EastEurope
 * Iran:Iran
 * IranII:IranII
 * Latvian:Latvian
 * Arabic:Arabic
 * Vietnam:Vietnam
 * Uygur:Uygur
 * Thai:Thai
 * 1252:Latin I
 * 1257:WPC1257
 * 1251:WPC1251
 * 866:Cyrillic
 * 858:PC858
 * 747:PC747
 * 864:PC864
 * 1001:PC1001
 */
let n = "437"
tspl.setCodepage(n)
  • 该指令用于清除图像缓冲区(image buffer)的数据

tspl.setCls()
  • 该指令用于将标签纸向前推送指定的长度
/**
 * 该指令用于将标签纸向前推送指定的长度
 * 传入参数说明  点数dots
 * 打印机分辨率200 DPI:1 mm = 8  dots
 * 打印机分辨率300 DPI:1 mm = 12 dots
 */
let n = 1
tspl.setFeed(n)
  • 该指令用于将标签纸向后回拉指定的长度
    /**
 * 该指令用于将标签纸向后回拉指定的长度
 * 传入参数说明  点数dots
 * 打印机分辨率200 DPI:1 mm = 8  dots 
 * 打印机分辨率300 DPI:1 mm = 12 dots
 */
let n = 1
tspl.setBackFeed(n)
  • 该指令用于控制打印机进一张标签纸

tspl.setFromfeed()
  • 根据Size找到下一张标签纸的位置
/**
 * 在使用含有间隙或黑标的标签纸时,若不能确定第一张标签纸是否在正确打印位
 * 置时,此指令可将标签纸向前推送至下一张标签纸的起点开始打印。标签尺寸和
 * 间隙需要在本条指令前设置
 * 注:使用该指令时,纸张高度大于或等于30 mm
 */
tspl.setHome()
  • 该指令用于打印出存储于影像缓冲区内的数据

tspl.setPagePrint()
  • 打印份数

let n = 1 // 打印份数,1≤n≤65535
tspl.setPrint(n)
  • 该指令用于控制蜂鸣器的频率,可设定10 阶的声音,每阶声音的长短由第二个参数控制
    /**
 * 该指令用于控制蜂鸣器的频率,可设定10 阶的声音,每阶声音的长短由第二个参数控制
 * 传入参数说明
 * level        音阶:0-9
 * interval 间隔时间:1-4095
 */
let level = 1
let interval = 500
tspl.setSound(level, interval)
  • 该指令用于设定打印机进纸时,若经过所设定的长度仍无法侦测到垂直间距,则打印机在连续纸模式工作

let limit = 1
tspl.setLimitfeed(limit)
  • 打印自检页

tspl.setSelfTest()
  • 该指令用于在标签上画线
    /**
 * 该指令用于在标签上画线
 * 传入参数说明
 * x 线条左上角X 坐标,单位dots
 * y 线条左上角Y 坐标,单位dots
 * width  线宽,单位dots
 * height 线高,单位dots
 */
let x = 0
let y = 0
let width = 10
let height = 10
tspl.setBar(x, y, width, height)
  • 该指令用于在卷标上绘制矩形方框
    /**
 * 该指令用于在卷标上绘制矩形方框
 * x_start 方框左上角X 坐标,单位dots
 * y_start 方框左上角Y 坐标,单位dots
 * x_end 方框右下角X 坐标,单位dots
 * y_end 方框右下角Y 坐标,单位dots
 * thickness 方框线宽,单位dots
 */
let x_start = 0
let y_start = 0
let x_end = 10
let y_end = 10
let thickness = 1
tspl.setBox(x_start, y_start, x_end, y_end, thickness)
  • 该指令用来画一维码
    /**
* 该指令用来画一维码
* 传入参数说明
* x 左上角水平坐标起点,以点(dot)表示
* y 左上角垂直坐标起点,以点(dot)表示
* codetype codetype
* height 条形码高度,以点(dot)表示
*readable 0 表示人眼不可识,1 表示人眼可识
*rotation 条形码旋转角度,顺时针方向 0,90,180,270
* narrow 窄bar 宽度,以点(dots)表示
* wide 宽bar 宽度,以点(dot)表示
* content 打印内容
*/
let x = 0
let y = 0
let codetype = "128" // 128、128M、EAN128、25、25C、39、39C、39S、93、EAN13、EAN13+2、EAN13+5、EAN8、EAN8+2、EAN8+5、CODA、POST、UPCA、UPCA+2、UPCA+5、UPCE13、UPCE13+2、UPCE13+5、CPOST、MSI、MSIC、PLESSEY、ITF14、EAN14
let height = 50
let readable = 0
let rotation = 0
let narrow = 0
let wide = 0
let content =""
tspl.setBarCode(x, y, codetype, height, readable, rotation, narrow, wide, content)
  • 打印图片,支持Android、ios、鸿蒙
let url = getResourcePath("/static/ic_priter.png")
let x = 30
let y = 100
let nWidth = 300
tspl.drawImage(url,x, y, nWidth, (resp) => {})
  • 打印图片,下面是在小程序里的例子

    /**
 * GS B 选择/取消黑白反显打印模式
 * 传入参数说明
 * • 当n 位为0 时,取消反显打印
 * • 当n 位为1 时,选择反显打印
 */

    wx.canvasGetImageData({
      canvasId: 'canvasOut',
      x: 0,
      y: 0,
      width: canvasWidth,
      height: canvasHeight,
      success: function (res) {
        console.log("获取画布数据成功")
        let width = res.width
        let height = res.height
        let data = res.data
        let x = 0
        let y = 0
        let mode = 0
        tspl.setBitmapData(x, y, mode,width, height, data)
      },
      complete: function (res) {
        console.log("finish")
      },
      fail: function (res) {
        console.log(res)
        wx.showToast({
          title: '获取画布数据失败',
          icon: 'none',
        })
      }
    })
  • 将指定的区域删除

/**
 * 将指定的区域删除
 * 传入参数说明
 * x_start 反相区域左上角X 坐标,单位dot
 * y_start 反相区域左上角Y 坐标,单位dot
 * x_width 反相区域宽度,单位dot
 * y_height 反相区域高度,单位dot
 **/
let x_start = 0
let y_start = 0
let x_width = 100
let y_height = 300
tspl.setErase(x_start, y_start, x_width, y_height)
  • 将指定的区域反相打印

/**
 * 将指定的区域反相打印
 * 传入参数说明
 * x_start 反相区域左上角X 坐标,单位dot
 * y_start 反相区域左上角Y 坐标,单位dot
 * x_width 反相区域宽度,单位dot
 * y_height 反相区域高度,单位dot
  **/
let x_start = 0
let y_start = 0
let x_width = 100
let y_height = 300
tspl.setReverse(x_start, y_start, x_width, y_height)
  • 该指令用于打印字符串

    /**
 * 该指令用于打印字符串
 * 传入参数说明
 * x 文字X 方向起始点坐标
 *  y 文字Y 方向起始点坐标
 *  font 字体名称
 *  1 8×12 dot 英数字体
 *  2 12×20 dot 英数字体
 *  3 16×24 dot 英数字体
 *  4 24×32 dot 英数字体
 *  5 32×48 dot 英数字体
 *  6 14×19 dot 英数字体OCR-B
 *  7 21×27 dot 英数字体OCR-B
 *  8 14×25 dot 英数字体OCR-A
 *  9 9×17 dot 英数字体
 *  10 12×24 dot 英数字体
 *  TSS16.BF2 简体中文16×16(GB 码)
 *  TSS20.BF2 简体中文20×20(GB 码)
 *  TST24.BF2 繁体中文24×24(大五码)
 *  TSS24.BF2 简体中文24×24(GB 码)
 *  K 韩文24×24Font(KS 码)
 * TSS32.BF2 简体中文32×32(GB 码)
 * rotation 文字旋转角度(顺时针方向) 0, 90, 180, 270
 */
let x = 0
let y = 0
let font = "TSS16.BF2"
let rotation = 300
let xScal = 1
let yScal = 1
let str = "adfadfa"
tspl.setText(x, y, font, rotation, xScal, yScal, str)
  • 该指令用来打印二维码

/**
 * 该指令用来打印二维码
 * x 二维码水平方向起始点坐标
 * y 二维码垂直方向起始点坐标
 * ECC level 选择QRCODE 纠错等级
 *   L 7%
 *   M 15%
 *   Q 25%
 *   H 30%
 *  width 二维码宽度1-10
 * mode 手动/自动编码
 *   A Auto
 *   M Manual
 * rotation 旋转角度(顺时针方向) 0,90,180,270
 * content  内容
 */
let x = 0
let y = 0
let level = "L"
let width = 5
let mode = "A"
let rotation = 0
let content = "adfadfa"
tspl.setQrcode(x, y, level, width, mode,, rotation, content)
  • 该指令用来起动Key1 的预设功能

/**
 * 该指令用来起动Key1 的预设功能
 * 传入参数说明
 * ON 开启按键
 * OFF 关闭按键
 */
let n = "ON"
tspl.setKey1(n)
  • 该指令用来起动Key2 的预设功能

    /**
* 该指令用来起动Key2 的预设功能
* 传入参数说明
* ON 开启按键
* OFF 关闭按键
*/
let n = "ON"
tspl.setKey2(n)
  • 该指令用来启动/关闭剥离模式,默认值为关闭

/**
 * 该指令用来启动/关闭剥离模式,默认值为关闭
 * 传入参数说明
 * ON  起动剥离模式
 * OFF 关闭剥离模式
 *  
 */
let n = "ON"
tspl.setPeel(n)
  • 此命令是用来启用/禁用撕纸位置走到撕纸处,此设置关掉电源后将保存在打印机内

    /**
 * 此命令是用来启用/禁用撕纸位置走到撕纸处,此设置关掉电源后将保存在打印机内
 * 传入参数说明
 * ON 启用撕纸位置走到撕纸处
 * OFF 禁用撕纸位置走到撕纸处,命令在起始位置有效
 * BATCH
 */
let n = "ON"
tspl.setTear(n)
  • 此命令是用来启用/禁用撕纸位置走到撕纸处,此设置关掉电源后将保存在打印机内

    /**
* 此命令是用来启用/禁用撕纸位置走到撕纸处,此设置关掉电源后将保存在打印机内
 * 传入参数说明
* ON 启用撕纸位置走到撕纸处
* OFF 禁用撕纸位置走到撕纸处,命令在起始位置有效
*/
let n = "ON"
tspl.setStripper(n)
  • 此设置用于启用/禁用打印头合盖传感器。如果禁用合盖传感器,打印机头被打开时,将不会传回错误信息。

    /**
 * 此设置用于启用/禁用打印头合盖传感器。如果禁用合盖传感器,打印机头被打开时,将不会传回错误信息。
 * 此设置将保存在打印机内存。
 * 传入参数说明
 * ON  启用打印头合盖传感器
 * OFF 禁用打印头合盖传感器
 */
let n = "ON"
tspl.setHead(n)
  • 此命令将禁用/启用标签机在无纸或开盖错误发生后,上纸或合盖后重新打印一次标签内容

    /**
 * 此命令将禁用/启用标签机在无纸或开盖错误发生后,上纸或合盖后重新打印一次标签内容
 * 传入参数说明
 * OFF 禁止此功能
 * ON 启用此功能
 */
let n = "ON"
tspl.setReprint(n)
  • 设定开启/关闭碳带感应器,即切换热转式/热感印式打印。通常打印机于开启电

    /**
 * 设定开启/关闭碳带感应器,即切换热转式/热感印式打印。通常打印机于开启电
 *源时,碳带感应器即会自动检测打印机是否已装上碳带,并藉此决定使用热感式
 *或热转式打印。此项设定并不会存于打印机中。此方法仅适用于热转式机器。
 * 传入参数说明
 * OFF 禁止此功能
 * ON 启用此功能
 */
let n = "ON"
tspl.setRibbon(n)
  • 此命令用于设置切刀状态,关闭打印机电源后,该设置将会被存储在打印机内存中。

    /**
 * 此命令用于设置切刀状态,关闭打印机电源后,该设置将会被存储在打印机内存中。
 * 传入参数说明
 * OFF 关闭切刀功能
 * BATCH 在PRINT 命令结束后切纸
 * pieces 0-65535,用于设置每几个标签进行切纸
 */
let n = 1
tspl.setCut(n)
  • 开钱箱,产生钱箱控制脉冲

let foot = 0 // 0: F1 1:F5
let t1 = 255
let t2 = 255
tspl.addCashdrwer(foot, t1, t2)

CPCL便携式面单打印,如快递电子面单(快递便携面单机 (如佳博M322))


let cpcl = new CPCL()
  • 获取指令

let dataArray = cpcl.getCommand()
  • 添加自定义指令

let n = 0xff
cpcl.setUserCommand(n)
  • 添加自定义指令

let command = "\r\n"
cpcl.addCommand(command)
  • 获取指令

    /**
     * 标签初始化指令
     * offset:标签横向偏移量,一般为0
     * height:标签最大高度
     * qty:标签数量
     */
let offset = 0
let height = 500
let qty = 1
cpcl.initial(offset, height, qty)
  • 该指令用于控制打印速度

    /**
 * 该指令用于控制打印速度
 *  传入参数说明
 * 1<=level<=5
 * 实际支持速度以自检页为准
 */
let level = 1

cpcl.setSpeed(level)
  • 该指令用于打印出存储于影像缓冲区内的数据

cpcl.setPagePrint()
  • 打印

cpcl.addPrint()
  • 该指令用于指示打印机让蜂鸣器发出给定时间长度的声音

/**
 * 该指令用于指示打印机让蜂鸣器发出给定时间长度的声音
 * 传入参数说明
 * length        蜂鸣持续时间,以1/8秒为单位递增
 */
let length = 4
cpcl.setSound(length)
  • 该指令用于绘制线条

    /**
 * 该指令用于绘制线条
 * 传入参数说明
 * x0 起始点的X 坐标,单位dots
 * y0 起始点的Y 坐标,单位dots
 * x1 终止点的X 坐标,单位dots
 * y1 终止点的Y 坐标,单位dots
 * width  线宽,单位dots
 */
let x0 = 0
let y0 = 0
let x1 = 5
let y1 = 5
let width = 1
cpcl.line(x0, y0, x1, y1, width)
  • 该指令用于反色绘制线条

    /**
* 该指令用于反色绘制线条
* 传入参数说明
* x0 起始点的X 坐标,单位dots
* y0 起始点的Y 坐标,单位dots
* x1 终止点的X 坐标,单位dots
* y1 同y0
* width  反色区域高度,单位dots
*/
let x0 = 0
let y0 = 0
let x1 = 5
let y1 = 5
let width = 1
cpcl.inverseline(x0, y0, x1, y1, width)
  • 该指令用于绘制矩形方框

/**
 * 该指令用于绘制矩形方框
 * x_start 方框左上角X 坐标,单位dots
 * y_start 方框左上角Y 坐标,单位dots
 * x_end 方框右下角X 坐标,单位dots
 * y_end 方框右下角Y 坐标,单位dots
 * width 方框线宽,单位dots
 */
let x_start = 0
let y_start = 0
let x_end = 5
let y_end = 5
let width = 1
cpcl.setBox(x_start, y_start, x_end, y_end, width)
  • 该指令用来画一维码

    /**
* 该指令用来画一维条码
* 传入参数说明
* command 表示条码的旋转角度, BARCODE: 横向打印条码 VBARCODE:纵向打印条码
* type 表示条码类型,128、UPCA、UPCE、EAN13、EAN8、39、93、CODABAR
* height 条码的单位高度,以点(dot)表示
* x 条码横向起始位置,以点(dot)表示
* y 条码纵向起始位置,以点(dot)表示
* data 条码数据
*/
let command = "BARCODE"
let type = "128"
let height = 5
let x = 5
let y = 1
let data = "xxx"
cpcl.addBarcode(command, type, height, x, y, data)
  • 该指令用于添加一维码文本

/**
* 该指令用于添加一维码文本
* 传入参数说明
* num 表示注释条码时要使用的字体号
* size 忽略该参数,输入任意数字即可
* offset 文本距离条码的单位偏移量
*/
let num = 1
let size = 3
let offset = 0

cpcl.setBarCodeText(num, size, offset)
  • 打印图片,支持Android、iOS、鸿蒙
let url = getResourcePath("/static/ic_priter.png")
let x = 0;
let y = 0
let nWidth = 385
cpcl.addEGraphics(url,x, y, nWidth, (resp) => {

})
  • 该指令用于打印字符串

/**
 * 该指令用于打印字符串
 * 传入参数说明
 * command 表示文本的旋转角度 TEXT、TEXT90、TEXT180、TEXT270
 * font 字体, 1、2、3、4、5、6、7、8、10、11、13、20、24、41、42、43、44、45、46、47、48、49、55
 * x 文字X 方向起始点坐标
 * y 文字Y 方向起始点坐标
 * data 要打印的文本
 */
let font = 1
let x = 0
let y = 0
let data = "xxx"
cpcl.addText(font, x, y, data)
  • 该指令用于将字体放大指定倍数

/**
    * 该指令用于将字体放大指定倍数
    * 传入参数说明
    * w 宽度放大倍数,有效放大倍数为1-10
    * h 高度放大倍数,有效放大倍数为1-10
    */
let width = 1
let height = 1
cpcl.addSetmag(width, height)
  • 该指令用于对字体加粗

    /**
  * 该指令用于对字体加粗
  * 传入参数说明
  * value 为0时不加粗
  */
let n = 1
cpcl.setBlod(n)
  • 设置对齐方式
let n = 1 // 0:左对齐 1:居中 2:右对齐
cpcl.addJustification(n)
  • 打印二维码

let x = 0
let y = 0
let text = "https://www.baidu.com"
cpcl.addBQrcode(x, y, text)
  • 设置页面宽度

let width = 50
cpcl.addPagewidth(width)

ZPL斑马(Zebra)工业机


let zpl = new ZPL()
  • 获取打印命令

let dataArray = zpl.getCommand()
  • 开始打印
zpl.addStart()
  • 结束打印

    zpl.addEnd()
  • 打印自检

zpl.addSelfTest()
  • 增加自定义命令

let n = "\r\n"
zpl.addCommand(n)

连接打印机方式

蓝牙连接

wifi连接、USB连接、串口连接


let dataArray = esc.getCommand()
gpsdk.writeDataImmediately(dataArray)

隐私、权限声明

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

蓝牙

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

插件不采集任何数据

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