更新记录

1.0.3(2020-08-07)

更新示例工程。

1.0.2(2020-07-30)

初版。


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 10.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


基本使用方法

1. 在页面中引入:const printMgr = uni.requireNativePlugin('xfbao-PrinterManager')

2. 扫描设备:startBtDiscovery() / stopBtDiscovery()

3. 连接:portOpenBt() / portOpenWIFI()

4. 注册监听设备发现,连接和断开的回调:printMgr.registerCallback()

5. 打印接口:

  • 使用图片绝对路径打印:printImage()
  • 使用base64打印图片:saveBase64(), splitAndPrintImage()
  • 打印pdf:saveBase64(), printPdf()

6. 状态接口:

  • 连接是否成功:isOpened()
  • 连接实时状态:isConnected()

    //---------常用接口 start---------------------------------------------------------------\

    /**

    • 开启蓝牙扫描,只有汉印打印机HM系列的才会通过register的callback回调 */ startBtDiscovery()

    /**

    • 停止蓝牙扫描 */ stopBtDiscovery()

    /**

    • 注册回调,回调格式:{code,message,data}
    • code: 1,发现设备;2,连接成功;3,连接断开。 */ public void register(callback)

    /**

    • 取消注册 */ public void unregister()

    /**

    • 蓝牙连接设备。
    • @param mac 蓝牙地址。
    • @return 0:连接成功,-1:连接异常,-2:蓝牙地址错误,-3:打印机与 SDK 不匹配(握手指令错误)。 */ portOpenBT(mac)

    /**

    • WiFi连接设备。
    • @param printIP 打印机 IP 地址(查看自检页)。
    • @return 0:连接成功,-1:连接异常,-2:地址格式错误,
    • -3:打印机与 SDK 不匹配(握手指令错误)。 */ portOpenWIFI(printIP)

    /**

    • 断开函数。
    • @return 等于0:连接成功,-1 连接失败。 */ portClose()

    /**

    • 蓝牙是否连接。
    • 注意 :该接口只显示 PortOpen 和 PortClose 的结果,并不是监测实时的蓝牙状态(监测
    • 蓝牙的实时连接状态需要监听系统蓝牙广播)。
    • @return 等于true: 连接, false: 断开。 */ isOpened()

    /**

    • 蓝牙是否连接。
    • @return 等于true: 连接, false: 断开。 */ isConnected()

    /**

    • 打印图片。
    • @param imgPath 图片的绝对路径。
    • @param options
    • @param callback 回调函数,返回 res = code > 0 时正常,否则异常。 */ public void printImage(imgPath, options, callback)

    /**

    • 不能一次性传递过大的参数,因此base64与其他打印参数分开传递。 */ public void saveBase64(base64)

    /**

    • 从图片的base64按指定高度分割成多张图片后循环打印。
    • @param imgOpt
    • { // 以下所示值为默认值,都可以为空,imgOpt可以传null
    • x: 0, // 图片起始的 x 坐标
    • y: 0, // 图片起始的 y 坐标
    • size: // "small", "mid", "large"(默认),
    • isRotate: false, // 是否旋转
    • algType: 1, // 1: 抖动,0:黑白,2:聚集
    • light: 0, // -100 ~ 100
    • offset: "0", // 水平偏移量
    • horizontal: "300", // 水平方向的 dpi
    • vertical: "300", // 垂直方向的 dpi
    • qty: "1", // 打印次数
    • }
    • @param callback */ public void splitAndPrintImage(imgOpt, height, callback)

    /**

    • 打印pdf,须先调用saveBase64(base64Str)传入图片的base64字符串。 */ public void printPdf(imgOptions, callback)

    //---------常用接口 end ---------------------------------------------------------------\

    /**

    • 页标签开始指令。
    • @param offset:此值使所有字段将水平偏移指定的单位数量。
    • @param horizontal:水平方向的 dpi。(根据打印机的 dpi 设置,200dpi 打印机:8px=1mm)。
    • @param vertical:垂直方向的 dpi。(同上)
    • @param height:整个标签的高度。(单位:px)
    • @param qty :打印的次数。
    • @return 大于0:正常,否则异常。 */ printAreaSize(offset, horizontal, vertical, height, qty)

    /**

    • 页标签结束指令。
    • @return 大于0:正常,否则异常。 */ print()

    /**

    • 编码指令。
    • @param code:编码。
    • @return 大于 0:正常,否则异常。 */ encoding(code)

    /**

    • 走纸到下一张标签。
    • @return 大于 0:正常,否则异常。 */ form()

    /**

    • 注释。
    • @param note:注释的内容。
    • @return 大于 0:正常,否则异常。 */ note(note)

    /**

    • 终止指令。
    • @return 大于 0:正常,否则异常。 */ abort()

    /**

    • 文本打印。
    • @param command:文字的方向,总的有两种: 'T':水平。
    • 'T270':垂直。
    • @param font :字体点阵大小(单位:px)
    • 1:打印繁体字(24x24 或者 12x24,视中英文而定。)
    • 16:16x16 或 8x16,视中英文而定。
    • 24:24x24 或 12x24,视中英文而定。
    • 32:32x32 或 16x32,由 ID3 字体宽高各放大 2 倍。
    • @param x:起始点的横坐标。(单位:px)
    • @param y:起始点的纵坐标。(单位:px)
    • @param data:文本数据。
    • @param n:字体的特效: N的低4位 3 2 1 0
    • 加粗 - - - 1
    • 反白 - - 1 -
    • 倍宽 - 1 - -
    • 倍高 1 - - -
    • @param iscenter: 是否居中。
    • True:是。
    • False:否。
    • @param width:要居中的范围。(Iscenter=true 时才生效)单位:px。
    • @return 大于 0:正常,否则异常。 */ printTextCPCL(command, font, x, y, data, n, iscenter, width)

    /**

    • 文本打印。
    • @param command:文字的方向,总的有四种: 'T':水平。
    • 'T90':逆时针旋转 90 度。
    • 'T180':逆时针旋转 180 度。
    • 'T270':逆时针旋转 270 度。
    • @param font:字体点阵大小:(单位:px) 注意:英文固件只支持(0 和 1)。
    • 0:12x24。
    • 1:12x24(中文模式下打印繁体),英文模式下字体变成(9x17)大小
    • 2:8x16。
    • 3:20x20。
    • 4:32x32 或者 16x32,由 ID3 字体宽高各放大两倍。
    • 7:24x24 或者 12x24,视中英文而定。
    • 8:24x24 或者 12x24,视中英文而定。
    • 20:16x16 或者 8x16,视中英文而定。
    • 24:24x24 或者 12x24,视中英文而定。
    • 55:16x16 或者 8x16,视中英文而定。
    • 其它默认 24x24 或者 12x24,视中英文而定。
    • @param size:字体大小。(该功能被屏蔽统一参数传 0)
    • @param x:起始点的横坐标。(单位:px)
    • @param y:起始点的纵坐标。(单位:px)
    • @param data:文本数据。
    • @return 大于 0:正常,否则异常。 */ text(command, font, size, x, y, data)

    /**

    • 文本打印。
    • @param command:文字的方向,总的有两种: 'T':水平。
    • 'T270':垂直。
    • @param font:字体点阵大小(单位:px) 0:12x24。
    • 1:9x17。
    • @param x:起始点的横坐标。
    • @param y:起始点的纵坐标。
    • @param data:文本数据。
    • @param n:字体的特效: N的低4位 3 2 1 0
    • 加粗 - - - 1
    • 反白 - - 1 -
    • 倍宽 - 1 - -
    • 倍高 1 - - -
    • @return 大于 0:正常,否则异常。 */ printCodepageTextCPCL(command, font, x, y, data, n)

    /**

    • 计数。
    • @param ml:下次加减的数值。
    • @return 大于 0:正常,否则异常。 */ count(ml)

    /**

    • 设置字符宽高放大倍数。
    • @param width:宽的放大倍数。
    • @param height:高的放大倍数。
    • @return 大于 0:正常,否则异常。 */ setMag(width, height)

    /**

    • 对齐方式。
    • @param align:对齐方式总的有三种: 'CENTER':居中。
    • 'LEFT':左对齐。
    • 'RIGHT':右对齐。
    • @return 大于 0:正常,否则异常。 */ align(align)

    /**

    • 条码。
    • @param command:条码方向: BARCODE:水平方向
    • VBARCODE:垂直方向
    • @param type(String):条码类型: UPCA, UPCA2,
    • UPCA5, UPCE,
    • UPCE2, UPCE5 ,
    • EAN13, EAN132,
    • EAN135, EAN8,
    • EAN82, EAN85,
    • code39, code39C,
    • F39, F39C,
    • code93, I2OF5,
    • I2OF5C, I2OF5G,
    • code128, UCCEAN128,
    • CODABAR, CODABAR16,
    • MSI, MSI10,
    • MSI1010, MSI1110,
    • POSTNET, FIM
    • @param width:窄条的单位宽度。
    • @param ratio:宽条窄条的比例。比例如下:0=1.5:1 20=2.0:1 26=2.6:1
    • 1=2.0:1 21=2.1:1 27=2.7:1
    • 2=2.5:1 22=2.2:1 28=2.8:1
    • 3=3.0:1 23=2.3:1 29=2.9:1
    • 4=3.5:1 24=2.4:1 30=3.0:1
    • 25=2.5:1
    • @param height:条码高度。
    • @param x:条码的起始横坐标。(单位:px)
    • @param y:条码的起始纵坐标。(单位:px)
    • @param undertext:条码下方的数据是否可见。ture:可见,false:不可见。
    • @param number:字体的类型。
    • @param size:字体的大小。
    • @param offset:条码与文字间的距离。
    • @param data:条码数据。
    • @return 大于 0:正常,否则异常。 */ barcode(command, type, width, ratio, height, x, y, undertext, number, size, offset, data)

    /**

    • 打印二维码。
    • @param command:打印方向: BARCODE:水平方向。
    • VBARCODE:垂直方向。
    • @param x:二维码的起始横坐标。
    • @param y:二维码的起始纵坐标。
    • @param m:QR 的类型:类型 1 和类型 2;类型 2 是增加了个别的符号,提供了而外的功能。
    • @param u:单位宽度/模块的单元高度。范围是 1 到 32 默认为 6。
    • @param data:二维码的数据。
    • @return 大于 0:正常,否则异常。 */ printQR(command, x, y, m, u, data)

    /**

    • 打印 PDF417 码。
    • @param command:打印方向: BARCODE:水平方向。
    • VBARCODE:垂直方向。
    • @param x:二维码的起始横坐标。
    • @param y:二维码的起始纵坐标。
    • @param xD:最窄元素的单位宽度。范围是 1 到 32,默认为 2。
    • @param yD:最窄元素的单位高度。范围是 1 到 32,默认值是 6。
    • @param c :使用的列数。数据列不包括启动/停止字符和左/右指标。范围为 1 到 30;默认值是 3。
    • @param s:安全级别表示要检测到的错误的最大金额和/或校正。范围为 0 到 8;默认值是 1。
    • @param data:PDF417 码的数据。
    • @return 大于 0:正常,否则异常。 */ printPDF417(command, x, y, xD, yD, c, s, data)

    /**

    • 画矩形框。
    • @param x0:左上角的 X 坐标。(单位:px)
    • @param y0:左上角的 Y 坐标。(单位:px)
    • @param x1:右下角的 X 坐标。(单位:px)
    • @param y1:右下角的 Y 坐标。(单位:px)
    • @param width:线条的单位宽度。
    • @return 大于 0:正常,否则异常。 */ box(x0, y0, x1, y1, width)

    /**

    • 画直线。
    • @param x0:起始的 X 坐标。(单位:px)
    • @param y0:起始的 Y 坐标。(单位:px)
    • @param x1:结尾的 X 坐标。(单位:px)
    • @param y1:结尾的 Y 坐标。(单位:px)
    • @param width:线条的单位宽度。
    • @return 大于 0:正常,否则异常。 */ line(x0, y0, x1, y1, width)

    /**

    • 反白框。
    • @param x0:起始的 X 坐标。(单位:px)
    • @param y0:起始的 Y 坐标。(单位:px)
    • @param x1:结尾的 X 坐标。(单位:px)
    • @param y1:结尾的 Y 坐标。(单位:px)
    • @param width:反白框的宽度。
    • @return 大于 0:正常,否则异常。 */ inverseLine(x0, y0, x1, y1, width)

    /**

    • 打印图片。
    • @param x:图片起始的 x 坐标。(单位:px)
    • @param y:图片起始的 y 坐标。(单位:px)
    • @param url:图片的路径。
    • @return 大于 0 正常;等于-1 图片的宽度或者高度超出打印机的范围。 */ expandedByUrl(x, y, url)

    /**

    • 打印图片。
    • @param x:图片起始的 x 坐标。(单位:px)
    • @param y:图片起始的 y 坐标。(单位:px)
    • @param bmap:图片的 Bitmap 的对象。
    • @param type:图片算法。0:二值算法;1:半色调算法。
    • @param light:亮度(默认 0)。
    • @return 大于 0 正常;等于-1 图片的宽度或者高度超出打印机的范围。 */ expandedByBmp(x, y, Bitmap bmap, type, light)

    /**

    • 打印浓度。
    • @param contrast: 浓度类型,总的有四种:
    • 默认 =0
    • 中 =1
    • 黑暗 =2
    • 非常深 =3
    • @return 大于 0:正常,否则异常。 */ contrast(contrast)

    /**

    • 打印速度。
    • @param speed:速度类型,总的有 5 种:从 0 到 5 越来越快;5 是理想状态的最快速度。
    • @return 大于 0:正常,否则异常。 */ speed(speed)

    /**

    • 设置字间距。
    • @param setsp:间距。
    • @return 大于 0:正常,否则异常。 */ setSp(setsp)

    /**

    • 走纸再打印。
    • @param prefeed:走纸的距离。(单位:px)。
    • @return 大于 0:正常,否则异常。 */ prefeed(prefeed)

    /**

    • 打印后走纸一定距离。
    • @param posfeed:走纸的距离。(单位:px)
    • @return 大于 0:正常,否则异常。 */ postfeed(posfeed)

    /**

    • 设置蜂鸣器鸣叫时间。
    • @param beep:蜂鸣声的持续时间,(1/8)秒为单位指定。
    • @return 大于 0:正常,否则异常。 */ beep(beep)

    /**

    • 下划线。
    • @param uL:true:添加下划线,false:取消下划线。
    • @return 大于 0:正常,否则异常。 */ underline(uL)

    /**

    • 打印一页标签后延时。
    • @param wait:延时的单位是:1/8 秒。
    • @return 大于 0:正常,否则异常。 */ wait(wait)

    /**

    • 打印宽度。
    • @param pw:指定页面宽度。(单位:px)
    • @return 大于 0:正常,否则异常。 */ pageWidth(pw)

    /**

    • 行模式下设置行间距。
    • @param sF:间距。
    • @return 大于 0:正常,否则异常。 */ setlf(sF)

    /**

    • 设置字体与字符大小及行间距。
    • @param font:字体。
    • @param size:大小。
    • @param spacing:字体的高度。
    • @return 大于 0:正常,否则异常。 */ setlp(font, size, spacing)

    /**

    • 发数据函数。
    • @param bData:需要发给打印机的数据。
    • @return 大于 0:正常,否则异常。 */ writeData(byte[] bData)

    /**

    • 读数据函数。
    • @param second:读取时间(单位:秒)。
    • @return 读取到数据。 */ public byte[] readData(second)

    /**

    • 字体加粗。
    • @param bold: 加粗系数(范围:1-5)。
    • @return 大于 0:正常,否则异常。 */ setBold(bold)

    /**

    • 获取打印机状态
    • @return 0:打印机准备就绪。
    • 1:打印机打印中。
    • 2:打印机缺纸。
    • 6:打印机开盖。
    • 其他:出错。 */ getstatus()

    /**

    • 文字自动换行。
    • @param x:文字的起始的 x 坐标。(单位:PX)
    • @param y:文字的起始的 y 坐标。(单位:PX)
    • @param width:一行打印的宽度。(单位:PX)
    • @param size:字体。 3:20x20 或 10x20,视中英文而定。
    • 4:32x32 或 16x32,由 ID3 字体宽高各放大 2 倍。
    • 8:24x24 或 12x24,视中英文而定。
    • 55:16x16 或 8x16,视中英文而定。
    • @param isbole:加粗。true:加粗。false:不加粗。
    • @param isdouble :放大两倍字体。true:放大。false:不放大。
    • @param str:要打印的文本。
    • @return 大于 0:正常,否则异常。 */ autLine(x, y, width, size, isbole, isdouble, str)

    /**

    • 文字自动换行。
    • @param x:文字的起始的 x 坐标。(单位:PX)
    • @param y:文字的起始的 y 坐标。(单位:PX)
    • @param width:一行打印的宽度。(单位:PX)
    • @param size:字体。 3:20x20 或 10x20,视中英文而定。
    • 4:32x32 或 16x32,由 ID3 字体宽高各放大 2 倍。
    • 8:24x24 或 12x24,视中英文而定。
    • 55:16x16 或 8x16,视中英文而定。
    • @param isbole:加粗。true:加粗。false:不加粗。
    • @param isdouble :放大两倍字体。true:放大。false:不放大。
    • @param str:要打印的文本。
    • @return 大于 0:正常,否则异常。 */ autLine2(x, y, width, size, isbole, isdouble, str)

    /**

    • 文字在文本框内居中显示。
    • @param command:文字的方向,总的有两种: T:水平。
    • T270:垂直。
    • @param x:文本框起始的 x 坐标。
    • @param y:文本框起始的 y 坐标。
    • @param width:文本框的宽度(单位:px)。
    • @param size:字体。 3:16x16 或 8x16,视中英文而定。
    • 4:32x32 或 16x32,由 ID3 字体宽高各放大 2 倍。
    • 8:24x24 或 12x24,视中英文而定。
    • 55:16x16 或 8x16,视中英文而定。
    • @param str:要打印的文本。
    • @return 大于 0:正常,否则异常。 */ autCenter(command, x, y, width, size, str)

    /**

    • 设置打印机纸张类型。
    • @param page 0 1 2 3 4 5
    • A300 连续纸 标签纸 后黑标 前黑标 三寸黑标 两寸黑标
    • T300 连续纸 三寸黑标 两寸黑标 后黑标 标签纸 前黑标 */ public void papertype_CPCL(page)

    /**

    • 设置3英寸打印机纸张类型。
    • @param page 48:连续纸。
    • 49:标签纸。
    • 50:3寸左上黑标。
    • 51:3寸左下黑标。
    • 52:右上黑标。
    • 53:右下黑标。
    • 54:中上黑标。
    • 55:中下黑标。
    • 56:2寸左上黑标。
    • 57:2寸左下黑标。 */ public void papertype_CPCL_TWO(page)

    /**

    • 设置4英寸打印机纸张类型。
    • @param type:0:连续纸。
    • 2:标签纸。
    • 4:2寸黑标。
    • 5:3寸黑标。
    • 6:4寸黑标。
    • @return 空 */ public void setPaperFourInch(type)

    /**

    • 自检页。 */ public void setSelf()

    /**

    • 旋转 180 度打印。
    • @return 大于 0:正常,否则异常。 */ poPrint()

    /**

    • 获取打印完成时状态开关。
    • @param isopen: true:开。
    • false:关。 */ public void openEndStatic(isopen)

    /**

    • 获取打印完成时状态。
    • @param time:获取状态超时时间(单位 秒)。
    • @return 0:打印成功。
    • 1:打印失败(缺纸)。
    • 2:打印失败(开盖)。
    • -1:获取状态超时。
    • -2: 异常。 */ getEndStatus(time)

    /**

    • 打印机回退。
    • @param feed:回退距离。(单位/行,范围:1-255)。
    • @return 大于 0:正常,否则异常。 */ reverseFeed(feed)

    /**

    • 水印。
    • @param x:横坐标(px)。
    • @param y:纵坐标(px)。
    • @param size:字体大小。 55:16(px)。
    • 24:24(px)。
    • 56:32(px)。
    • 其他:24(px)。
    • @param background:背景黑度(0-255)。
    • @param data:数据。
    • @return 大于 0:正常,否则异常。 */ printBackground(x, y, size, background, data)

    /**

    • 获取打印机 SN。
    • @return 打印机 SN。 */ public getPrintSN()

    /**

    • 设置 Codepage。
    • @param codepage:代码页。 ISO8859-1 : 西欧语
    • ISO8859-2 :拉丁语(2)
    • ISO8859-3 :拉丁语(3)
    • ISO8859-4 :波罗的语
    • ISO8859-5 :西里尔语
    • ISO8859-6 :阿拉伯语
    • ISO8859-8 :希伯来语
    • ISO8859-9 :土耳其语
    • ISO8859-15 :拉丁语(9)
    • WPC1253 :希腊语(windows)
    • KU42:希腊语(ISO)
    • TIS18: 泰语
    • Khemr:高棉语
    • @return 大于 0:正常,否则异常。 */ country(codepage)

    /**

    • 设置 QRcode 版本。
    • @param version:版本号(范围 0-40)
    • QR 版本默认为 00,QR 版本为 00 时,QR 码效果同旧版,宽高会随数据量而改变。
    • 设置了版本号对二维码的数据量有范围要求,超出范围二维码不打印。
    • 具体查看结尾的表 1-1.
    • @return 大于 0:正常。
    • -1:断开连接。
    • -2:参数错误。 */ setQRcodeVersion(version)

    /**

    • 读取 QRcode 版本。
    • @return QRcode 版本。 */ public getQRcodeVersion()

    /**

    • 关闭高棉语输入指令。
    • @return 大于 0:正常。
    • -1:断开连接。
    • -2:异常。 */ setKhemrEnd()

    /**

    • 获取文字自动换行打印的高度。
    • @param x:文字的起始的 x 坐标。(单位:PX)
    • @param y:文字的起始的 y 坐标。(单位:PX)
    • @param width:一行打印的宽度。(单位:PX)
    • @param size:字体。 3:20x20 或 10x20,视中英文而定。
    • 4:32x32 或 16x32,由 ID3 字体宽高各放大 2 倍。
    • 8:24x24 或 12x24,视中英文而定。
    • 55:16x16 或 8x16,视中英文而定。
    • @param isbole:加粗。true:加粗。false:不加粗。
    • @param isdouble:放大两倍字体。true:放大。false:不放大。
    • @param str:要打印的文本。
    • @return 打印出的文字的总高度。(单位:PX) */ getAutLineHeight(x, y, width, size, isbole, isdouble, str)

    /**

    • 打印模式打印文本。
    • @param str:文本内容(以\r\n 结尾)
    • @return 大于 0 发送成功。 */ printData(str)

    /**

    • 行打印模式字体加粗。
    • @param bold:加粗倍数。
    • @return 大于 0 发送成功。 */ rowSetBold(bold)

    /**

    • 设置行模式的 X 坐标
    • @param x:x 坐标。
    • @return 大于 0 发送成功。 */ rowSetX(x)

隐私、权限声明

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

<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

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

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问