更新记录

1.7(2022-09-26)

增加支持打印机多任务多份打印功能。

1.6(2022-07-18)

修复ios绘制图形设置整数不能设置小数问题。修复ios上传提时字体资源被拒问题。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 15

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


精臣打印机uniapp原生插件接口

精臣打印机 支持型号:B11/B50、D11、B3S、B21、P1、B16、B32、P1S系列,打印机sdk最新版本3.1.6。

1. 获取插件对象

var JCPrinter = uni.requireNativePlugin('JC-Printer');

示例代码

<script>

    //插件对象
    var JCPrinter = uni.requireNativePlugin('JC-Printer');

    export default {
    }

</script>

2. 设置打印机回调

<script>

    //插件对象
    var JCPrinter = uni.requireNativePlugin('JC-Printer');

    export default {

        onLoad() {

            //设置打印机回调
            JCPrinter.setCallback(function(res){
                console.log(res);
            });
        }
    }

</script>

3. 扫描获取已经配对打印机列表,从列表里选择一个打印机来连接

//扫描获取已经配对打印机列表
JCPrinter.scanPrinter(function(devices){
    console.log(devices);
    for (var i = 0; i < devices.length; i++) {
        var device = devices[i];
        var name = device.name;//打印机名称
        var address = device.address;//用这地址连接蓝牙打印机
    }
});

4. 连接打印机

//连接打印机
JCPrinter.openPrinter({
    address:"E1:E2:18:03:00:87"//打印机地址,从列表里选择一个打印机获取地址
}, function(ret) {
    console.log(ret);//true:连接成功 false:连接失败
});

5. 关闭打印机连接

//关闭打印机连接
JCPrinter.closePrinter();

6. 判断打印机是否连接

//判断打印机是否连接
var ret = JCPrinter.isConnected();
console.log(ret);//true:连接 false:断开

7. 开始打印任务

JCPrinter.startJob(Object, Callback);

Object参数说明

参数 类型 默认 必需 说明
totalQuantityOfPrints int 1 打印总份数=打印任务数x每个任务份数
density int 浓度,取值范围-2~5(-2、-1和0模糊档位,D11系列中的D12支持,B21系列支持;D11不支持4和5档位;)
paperType int 纸张类型,1:间隙纸,2:黑标纸,3:连续纸,4:定孔纸,5:透明纸
printMode int 打印模式,1:热敏打印模式,2:热转印模式 根据打印机型号设置

Callback 返回 Object 参数说明

熟悉 类型 说明
type String 回调事件名称
data Object 回调事件参数
type 说明 data
onDrawStart 开始绘制打印内容回调事件,在这里绘制打印内容,生成打印数据并提交打印
onPrintProgress 打印进度回调事件 var quantityIndex = data;//打印第几份
onPrintCompleted 打印完成回调事件
onPrintError 打印错误回调事件 var errorCode = data.errorCode;//错误代码

示例代码

var that = this;
//开始打印任务,多任务的任务数n = totalQuantityOfPrints / onePageNumbers
JCPrinter.startJob({
    totalQuantityOfPrints:2,//打印总份数=打印任务数x每个任务份数,配合onePageNumbers使用
    density:3,//浓度,取值范围-2~5(-2、-1和0模糊档位,D11系列中的D12支持,B21系列支持;D11不支持4和5档位;)
    paperType:1,//纸张类型,1:间隙纸,2:黑标纸,3:连续纸,4:定孔纸,5:透明纸
    printMode:1//打印模式,1:热敏打印模式,2:热转印模式 根据打印机型号设置
}, function(res){
    console.log(res);
    if (res.type == "onDrawStart") {
        var pageIndex = res.data;//第几个任务,0开始,多任务回调多次
        //绘制打印内容,生成打印数据并提交打印
        that.commitJob();
    } else if (res.type == "onPrintProgress") {
        var quantityIndex = res.data;//打印第几份
    } else if (res.type == "onPrintCompleted") {
        //结束打印
        JCPrinter.endJob();
    } else if (res.type == "onPrintError") {
        var errorCode = res.data.errorCode;//错误代码
        //结束打印
        JCPrinter.endJob();
    }
}); 

8. 提交打印数据

//提交打印数据
JCPrinter.commitJob({
    onePageNumbers:1,//单个任务页的份数,配合totalQuantityOfPrints使用
    printData:json//json打印数据
});

9. 取消打印任务

//取消打印任务
JCPrinter.cancelJob();

10. 结束打印任务

//结束打印任务
JCPrinter.endJob();

JSON绘制相关接口

1. 初始化画板

//初始化画板
JCPrinter.drawEmptyLabel({
    width:60,//宽
    height:80,//高
    rotate:0//旋转
});

2. 绘制文字

//绘制文字
JCPrinter.drawLabelText({
    x:10,//位置x
    y:35,//位置y
    width:30,//宽
    height:10,//高
    value:"Print Text 1",//内容
    //fontFamily:"",//暂时用默认字体
    fontSize:5,//字体大小
    lineModel:2,
    lineSpace:1,
    mFontStyles:[0,0,0,0]
});

3. 绘制绘制一维码

//绘制绘制一维码
JCPrinter.drawLabelBarCode({
    x:25,
    y:45,
    width:20,
    height:10,
    codeType:20,
    value:"0012345678900",
    fontSize:3,
    rotate:0,
    textHeight:5,
    textPosition:0
});

4. 绘制二维码

//绘制二维码
JCPrinter.drawLabelQrCode({
    x:30,
    y:30,
    width:15,
    height:15,
    codeType:31,
    value:"www.baidu.com",
    rotate:0
});

5. 绘制图形

//绘制图形
JCPrinter.drawLabelGraph({
    x:40,
    y:50,
    width:10,
    height:10,
    graphType:1,
    cornerRadius:0,
    lineWidth:0.5,
    lineType:0,
    rotate:0
});

6. 绘制图像

//绘制图像
var imagePath = plus.io.convertLocalFileSystemURL("_www/static/logo.png");
JCPrinter.drawLabelImage({
    x:40,
    y:45,
    width:10,
    height:10,
    imagePath:imagePath,
    imageProcessingType:1,
    imageProcessingValue:127,
    rotate:0
});

7. 绘制线

//绘制线
JCPrinter.drawLabelLine({
    x:20,
    y:55,
    width:30,
    height:0.5,
    lineType:1,
    rotate:0
});

8. 生成JSON打印数据

//生成JSON打印数据
JCPrinter.generateLabelJson(function(json){
    console.log(json);
    //提交打印数据
    JCPrinter.commitJob({
        onePageNumbers:1,//单个任务页的份数,配合totalQuantityOfPrints使用
        printData:json//打印数据
    });
});

隐私、权限声明

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

蓝⽛定位权限

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

插件自身不采集任何数据,插件使用的精臣打印机 SDK采集数据请参考其官方说明:https://www.niimbot.com/cnweb/

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

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