打印机

接口描述

该接口调用设备硬件进行打印,提供三方app自行打印,具体打印内容由三方app按照格式定义。

注:由于打印是耗时操作,请自行实现等待对话框。

接入方式

List<Line> lineList = new ArrayList<>();
PnrService.getInstance(mContext).doPrint(lineList, new PnrTransListener() {
        @Override
        public void onResult(String response) {
                Timber.e(response);
                Map resultMap = new Gson().fromJson(response, Map.class);
                String responseCode = resultMap.get(PnrResponseKey.KEY_RESPONSECODE).toString();
                if ("00".equals(responseCode)){
                        Timber.e("打印成功");
                }else {
                        Timber.e("打印失败");
                }
        }
});

请求参数

  • listener 为结果监听,不能为空;
    onResult(String response) 为结果回调, response 为json串,值参见 返回结果
  • lineList 为Line对象组成的列表,Line为抽象类。
    具体实现如下:
List<Line> lineList = new ArrayList<>();
lineList.add(new ImgLine(openAsset("logo.bmp")));//打印一张图片
lineList.add(new TextLine("标准文本"));
lineList.add(new TextLine("居右加粗大字体文本", new VectorFormat().setAlignment(Layout.Alignment.ALIGN_OPPOSITE).setSize(30).setBold(true)));
lineList.add(new TextDivisionLine("标准带横线文本"));
lineList.add(new TextDivisionLine("小字体带横线文本", new VectorFormat().setSize(16)));
lineList.add(new TwoColumnLine("姓名:", "张三"));
lineList.add(new ThreeColumnLine("名称", "数量", "单价"));
lineList.add(new DivisionLine());//虚线
lineList.add(new DivisionLine(true));//实线
lineList.add(new QRLine("这是一个测试二维码"));
lineList.add(new BarCodeLine("20210313165232564855"));//条码
lineList.add(new TextLine(" "));//空行

请根据需求自行组装需要打印的内容,如有需要可自定义Line的子类以完成打印

返回结果

  • response 为json字符串。
    其内字段如下:
字段名称 中文描述 数据类型 要求 说明
responseCode 系统返回码 String M 参见 系统返回码
message 错误信息 String C 当返回码为非00时出现

Demo参考

Demo参考