更新记录

v1.1(2022-04-11)

文本标签打印 混合打印


平台兼容性

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


前言

此文档供有 uni-app 开发经验的人阅读。当 uni-app 需要调用 A980 手持打印机的时候,需要用到我们原生插件包。使用自定义基座打包生成 APP。

说明,本程序运行在手持设备 A980 android 9 新版上的手持打印机上,普通安卓设备运行

第一步:导入

// 获取 module
var printModule = uni.requireNativePlugin("lianjiao-pda-9")

第二步:测试

先初始化,否则偶发性报错34,在onload里APP启动时候就直接调用。

printModule.init((ret) => {
                    uni.showToast({
                        title: ret,
                        duration: 2000
                    });
                });

测试打印

printModule.sendControlCommand({
                    "name": "test"
                },(ret) => {
                    modal.toast({
                        message: ret,
                        duration: 1.5
                    });
                });

第三步:超市小票打印

var printData = {
                            name:"printMix",
                            top:8,
                            forwardMorePaper:8,
                            flag:"普通纸混合打印",
                            runOnNewThread:true,
                            data:[{
                                printType:0,
                                text:" [停车告知单] \n",
                                concentration:15,//打印浓度,一维码建议设置为20,二维码设置为15,文字也是15
                                align:1,
                                lineHeight:0,
                                isBold:false,
                                isDoubleHeight:true,
                                isDoubleWidth:true,
                                isUnderLine:true
                            },{
                                text:"车牌:京A88888\n",
                                concentration:15,//打印浓度,一维码建议设置为20,二维码设置为15,文字也是15
                                align:0,
                                lineHeight:0,
                                isBold:false,
                                isDoubleHeight:true,
                                isDoubleWidth:false,
                                isUnderLine:false
                            },{
                                text:"车型:小型车\n" +
                                    "用户类型:临时卡\n" +
                                    "路段:人民路一段\n" +
                                    "车位:RM-01001\n" +
                                    "入场时间:2022-02-23 14:08\n" +
                                    "收费员:张三\n" +
                                    "电话:13800000000\n" +
                                    "--------------------------------\n" +
                                    "温馨提示:\n" +
                                    "扫码缴费后,车辆不离场继续停放,存在恶意逃费行为的,将按第一次入场时间继续计费;\n" +
                                    "路边临时停车属于车位租赁停放,不承担车辆和财物保管责任。\n" +
                                    "服务监督电话:12315\n" +
                                    "--------------------------------\n" +
                                    "请扫码缴费:" ,
                                concentration:15,//打印浓度,一维码建议设置为20,二维码设置为15,文字也是15
                                align:0,
                                lineHeight:0,
                                isBold:false,
                                isDoubleHeight:true,
                                isDoubleWidth:false,
                                isUnderLine:false
                            },{
                                printType:2,
                                text:"1234567890",
                                desiredWidth:250,
                                desiredHeight:250,
                                displayCode:true,
                                concentration:15,
                                isAlignCenter:true
                            }]
                        }
                printModule.sendControlCommand(printData,(ret) => {
                    uni.showToast({
                        title: ret,
                        duration: 2000
                    });
                });

打印模块说明

当发送的对象 name 为 printMix 的时候,则为自定义模版打印。这个时候 data 必须有数据。 数据有三中形态 条形码,二维码和文字。用printType来区分,默认printType=0; printType = 0 表示文字 printType = 1 条形码 printType = 2 二维码 width:宽度; height:高度;

第四步:标签打印

标签打印适合不干胶打印,可打印形态也是三种,文字,条形码,二维码,但是不同的是,每个内容都需要自己设定x轴和y轴的坐标

printModule.sendControlCommand({
                    'name': 'printBmpLabel',
                    'data':[{
                        printType:1,
                        text:"713300650011",
                        desiredWidth:300,
                        desiredHeight:40,
                        displayCode:false,
                        left:-44,
                        top:0
                    },{
                        printType:0,
                        text:"W.T.P/N:713300650011",
                        textSize:24,
                        x:0,
                        y:64
                    },{
                        text:"QTY:679",
                        x:0,
                        y:90
                    },{
                        text:"Mfr P/N:P227012G",
                        y:116
                    },{
                        text:"DateCode:220114",
                        y:142
                    },{
                        text:"Lot NO:0114003",
                        y:168
                    },{
                        text:"PO NO:W221122444",
                        y:194
                    },{
                        text:"Supplier:PBH",
                        y:220
                    },{
                        text:"2022/1/19 11:23:30",
                        y:246
                    },{
                        text:"MS:S96801MAINFPC",
                        y:272
                    },{
                        text:"MSL:1",
                        x:260,
                        y:72
                    },{
                        text:"COO:CN",
                        x:260,
                        y:98
                    },{
                        printType:2,
                        text:"713300650011|679|P227012G|220114|0114003|W221122444|PBH|S96801MAINFPC|1|CN",
                        desiredWidth:170,
                        desiredHeight:170,
                        displayCode:false,
                        left:225,
                        top:105
                    }]
                },(ret) => {
                    uni.showToast({
                        title: ret,
                        duration: 2000
                    });
                });

第七步:检测黑标

当打印完成后,如果是不干胶打印的,打印完一个之后没有走到退纸位置,则可以调用检测黑标,则会调用检测方法,走纸到下一个标签开始位置。如果觉得撕纸还是不方便,可以再手动走纸一个单位。 记得黑标检测应该再打印完成事件触发回调之后再调用。

printModule.sendControlCommand({
                    'name': 'checkBlack'
                },(ret) => {
                    uni.showToast({
                        title: ret,
                        duration: 2000
                    });
                });

隐私、权限声明

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

1.申请存储空间权限,因为使用三方SDK,三方打印机需要获取本地图片打印。所以需要存储权限。 2.申请电话权限,三方SDK使用电话权限,用来获取识别码。

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

插件不采集任何数据

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

插件不含任何广告

许可协议

This site may include third party contents that are licensed to you under their own terms Any third party contents. Even if such contents are governed by other agreements, the disclaimer, limitations on, and exclusions of damages also apply to the extent allowed by applicable law.

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