更新记录
1.8(2022-12-14)
更新Android打印机sdk版本。
1.7(2022-09-26)
增加支持打印机多任务多份打印功能。
1.6(2022-07-18)
修复ios绘制图形设置整数不能设置小数问题。修复ios上传提时字体资源被拒问题。
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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//打印数据
});
});