更新记录

1.0.0(2023-08-11)

芝柯打印机,支持Wi-Fi、蓝牙、USB等方式连接,打印文本、pdf、图片、二维码、条形码等


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.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原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

芝柯打印机,支持Wi-Fi、蓝牙、USB等方式连接,打印文本、pdf、图片、二维码、条形码等

支持定制,联系方式 QQ:252797991


var zhikePrint = uni.requireNativePlugin("wrs-zhikePrint");
  1. USB连接打印机,只要通过USB连接上打印机即可,无需调用连接接口 监听/获取USB连接信息可以采用USB插件https://ext.dcloud.net.cn/plugin?id=13300

  2. 蓝牙连接 蓝牙address可以通过蓝牙插件获取https://ext.dcloud.net.cn/plugin?id=13533


                var params = {};
                params.address = this.address;
                zhikePrint.connectBluetooth(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                })

断开蓝牙


zhikePrint.disconnectBluetooth()
  1. wifi连接

                var params = {};
                params.ip = this.ip; // 打印机IP
                zhikePrint.connectWifi(params)
  • 字符串指令形式打印

                var str = "! 0 200 200 400 1\n" +
                    "GAP-SENSE\n" +
                    "SETBOLD 2\n" +
                    "SETMAG 2 2 \n" +
                    "T 24 0 16 24 惠州-惠东1仓网格站\n" +
                    "SETBOLD 1\n" +
                    "SETMAG 1 1 \n" +
                    "B 128 2 1 75 16 80 11234567890643\n" +
                    "T 24 0 152 165 11234567890643\n" +
                    "SETSP 2\n" +
                    "ML 35\r\n" +
                    "T 24 0 16 230 " +
                    "托盘:TP00933\r\n" +
                    "SKU:59\r\n" +
                    "容器数:4\r\n" +
                    "打印时间:2021-04-02T22:11:59.305\r\n" +
                    "ENDML\r\n" +
                    "SETSP 0\n" +
                    "SETSP 2\n" +
                    "ML 35\r\n" +
                    "T 24 0 240 264 " +
                    "SKU件数:519\r\n" +
                    "打印人:卢子红\r\n" +
                    "ENDML\r\n" +
                    "SETSP 0\n" +
                    "FORM\n" +
                    "PRINT\n";
                var params = {};
                params.str = str;
                params.sendType = this.sendType;
                zhikePrint.printStr(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                    var flag = resp.flag;
                    if (flag) { // 打印成功

                    } else {

                    }
                });
  • 接口形式打印

                var data = [];
                data.push({
                    lineType: "pageSetup",
                    pageWidth: 580,
                    pageHeight: 400
                });
                data.push({
                    lineType: "drawQrCode",
                    start_x: 10,
                    start_y: 10,
                    text: "123456789012",
                    rotate: 0,
                    ver: 6,
                    lel: 4
                });
                data.push({
                    lineType: "print",
                    horizontal: 0,
                    skip: 0
                });
                var params = {};
                params.data = data;
                params.sendType = this.sendType;
                zhikePrint.print(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                    var flag = resp.flag;
                    if (flag) { // 打印成功

                    } else {

                    }
                });

data里面的对象可以为一下几种:

  1. 设置页面宽高

{
    lineType: "pageSetup",
    pageWidth: 580, // 打印纸宽度
    pageHeight: 400, // 打印纸高度
    r: 0, 旋转180度打印(r可选参数) 0:不旋转;1:旋转90;2:旋转180;3:旋转270
    gap: 0 // 走纸方式(gap可选参数),不走纸;1:设置标签检测;2:设置左黑标检测指令;3:设置右黑标检测指令
}

参数r和gap需要同时传才有效
  1. 打印文字

{
    lineType: "drawText",
    text_x: 0, // 文字起始横坐标
    text_y: 0, // 文字起始纵坐标
    text: "we5455", // 要打印的文本内容
    fontSize: 1, // fontSize - 字体大小
    rotate: 0, // 旋转角度(逆时针) 支持 0; 90; 180 ;270;
    bold: 1, // 打印粗细
    reverse: false, // 反向打印
    underline: false // 下划线
}
  1. 打印条形码

{
    lineType: "drawBarCode",
    start_x: 0, // 条形码起始横坐标
    start_y: 0, // 条形码起始纵坐标
    text: "we5455", // 条形码的内容
    type: 1, // 条形码类型  0:CODE39; 1:CODE128;2:CODE93; 3:CODEBAR; 4:EAN8; 5:EAN13; 6:UPCA; 7:UPC-E; 8:I2OF5
    rotate: 0, // 旋转角度 支持 0:水平条码;1:竖直条码
    linewidth: 1, // 条形码线宽度
    height: 10 // 条形码高度
}
  1. 打印二维码

{
    lineType: "drawQrCode",
    start_x: 0, // 二维码起始横坐标
    start_y: 0, // 二维码起始纵坐标
    text: "we5455", // 二维码内容
    rotate: 0, // 旋转角度
    ver: 6, // 二维码放大倍数,值的范围是1-32,默认填6
    lel: 4 // 二维码版本型号,值的范围是1-40,越大标识尺寸越大,尺寸17+n*4,0表示自动
}
  1. 打印图片

{
    lineType: "drawImageFormFile",
    start_x: 0, // 横坐标
    start_y: 0, // 纵坐标
    filepath: "/xxxx/xx/aa.png", // 本地图片绝对路径
}
  1. 打印图片

{
    lineType: "drawImageFormFile",
    start_x: 0, // 横坐标
    start_y: 0, // 纵坐标
    bmp_size_x: 0, // 位图高
    bmp_size_y: 0, // 位图宽
    path: "/xxxx/xx/aa.png", // 本地图片绝对路径
}
  1. 设置打印次数

{
    lineType: "setPrintTime",
    time: 1
}
  1. 执行打印操作,数组一定以这个结尾才能执行打印

{
    lineType: "print",
    horizontal: 0,
    skip: 0 // 走纸方式,0:不走纸;1:设置标签检测;2:设置左黑标检测指令;3:设置右黑标检测指令;
}
  • 打印PDF

                var absPath = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (absPath.endWith('/')) {
                    absPath = absPath.substring(0, absPath.length - 1)
                }

                // 静态普通文件夹下的站点
                let path = absPath + "/static/test.pdf"

                var params = {};
                params.maxWeight = 560;
                params.path = path;
                params.sendType = this.sendType;
                zhikePrint.printPDF(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                })

                var params = {};
                params.data = “0102FF”;
                params.sendType = this.sendType;
                zhikePrint.writeBytes(params, (resp) => {
                    this.showMsg(JSON.stringify(resp))
                })

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.usb.host" android:required="true"/> <uses-permission android:name="android.usb.USB_PERMISSION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Android 12在不申请定位权限时,必须加上android:usesPermissionFlags="neverForLocation",否则搜不到设备 --> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

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

插件不采集任何数据

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

暂无用户评论。

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