实现android 设备连接小票打印机打印小票的功能时,发现了一个好用的库:https://github.com/AlexMofer/ProjectX/tree/master/printer

android设备如何连接打印机https://blog.csdn.net/qq_25452989/article/details/82843071

我们要实现的效果:

Android 设备接入小票打印机 爱宝小票打印机_第1张图片

实现时主要就是依靠printer这个库.实现页面显示的重点写过了,把中文字符串分割成数组:

https://blog.csdn.net/qq_25452989/article/details/83107296

代码:

//必须引入printer库   compile 'am.util:printer:2.1.0'ByteArrayOutputStream byteArrayOutputStream = null;PrinterWriter printerWriter = null;ArrayList data = new ArrayList<>();data.clear();/** * PrinterWriter58mm * 宽度 32 英文字符 16个中文字符 * 一行最多容纳16个汉字 32个数字 或者英文字母 或者空格 */try {    printerWriter = new PrinterWriter58mm(PrinterWriter.HEIGHT_PARTING_DEFAULT, 300);    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    printerWriter.setEmphasizedOn();    printerWriter.setFontSize(1);    printerWriter.print("YCLOSET");    printerWriter.printLineFeed();    printerWriter.setFontSize(0);    printerWriter.print("衣二三");    printerWriter.printLineFeed();    printerWriter.print("发现新的自己");    printerWriter.printLineFeed();    printerWriter.print("--------------------------------");    printerWriter.printLineFeed();    printerWriter.setAlignLeft();    printerWriter.print("订单号:" + receiptsInfoMapBean.orderNo);    printerWriter.printLineFeed();    printerWriter.print("客户:" + receiptsInfoMapBean.consignee);    printerWriter.printLineFeed();    printerWriter.print("总数量:" + receiptsInfoMapBean.stockInfoList.size());    printerWriter.printLineFeed();    printerWriter.print("--------------------------------");    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    printerWriter.print(" 品牌        商品名        条码 ");    printerWriter.setEmphasizedOff();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    for (int i = 0; i < receiptsInfoMapBean.stockInfoList.size(); i++) {        PickCheckResult.ReceiptsInfoMapBean.StockInfoListBean stockInfoListBean =                receiptsInfoMapBean.stockInfoList.get(i);        //名字        String productName = stockInfoListBean.productName;        LogUtil.d("productName--->" + productName);        String standardNo = stockInfoListBean.standardNo;        String brandName = stockInfoListBean.brandName;        int stockCode = stockInfoListBean.stockCode;        productName = productName.replaceAll("[a-zA-Z]", "");        //衣服名字的长度        int length = productName.length();        //一共有几行        int lines = (length + 2) / 3;        //中间的一行        int center = (lines + 1) / 2;        //转为char数组        char[] chars = productName.toCharArray();        //计数 第几行了        int k = 0;        //存两个单词的品牌        String[] split = null;        for (int j = 0; j < chars.length; j += 3) {            String s1 = String.valueOf(chars[j]);            for (int l = 1; l < 3; l++) {                if (j + l < chars.length)                    s1 = s1.concat(String.valueOf(chars[j + l]));            }            k++;            if (k == center) {                printerWriter.setAlignCenter();                String right = s1 + "   " + stockCode;                int length1 = brandName.length();                if (length1 > 13) {                    if (brandName.contains(" ")) {                        split = brandName.split(" ");                    } else {                        split = new String[]{brandName.substring(0, length1 / 2), brandName.substring(length1 / 2, length1)};                    }                } else {                    brandName = brandName.trim();                    for (int l = 0; l < 13 - length1; l++) {                        brandName = brandName.concat(" ");                    }                    printerWriter.print(brandName + right);                    printerWriter.printLineFeed();                }            } else {                if (split == null) {                    printerWriter.setAlignCenter();                    if (lines == k) {                        printerWriter.print(s1 + "(" + standardNo + ")");                    } else {                        printerWriter.print(s1);                    }                    printerWriter.printLineFeed();                }            }            //英文名字比较长啊......            if (split != null && split.length > 1) {                printerWriter.setAlignLeft();                if (k == center) {                    for (int l = 0; l < 13 - split[0].trim().length(); l++) {                        split[0] = split[0].concat(" ");                    }                    printerWriter.print(split[0] + s1 + "   " + stockCode);                }                if (k == center + 1) {                    for (int l = 0; l < 13 - split[1].trim().length(); l++) {                        split[1] = split[1].concat(" ");                    }                    if (k == lines) {                        printerWriter.print(split[1] + s1 + "(" + standardNo + ")");                    } else {                        printerWriter.print(split[1] + s1);                    }                    split = null;                }                printerWriter.printLineFeed();            }        }        printerWriter.setAlignCenter();        printerWriter.printLineFeed();    }    printerWriter.print("--------------------------------");    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    printerWriter.print("质检时间:" + receiptsInfoMapBean.operateTime);    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    printerWriter.print("质检员:" + receiptsInfoMapBean.operateAdminName);    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    printerWriter.print("衣物会经过16道清洗消毒工序,让您轻松无忧享受时尚!");    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    printerWriter.print("扫码观看衣二三清洗流程");    printerWriter.printLineFeed();    data.add(printerWriter.getDataAndReset());    ArrayList imageByte = printerWriter.getImageByte(this.getResources(), R.drawable.distributetick);    data.addAll(imageByte);    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.setAlignCenter();    data.add(printerWriter.getDataAndReset());    printerWriter.setAlignCenter();    printerWriter.print("客服热线:400-650-4580");    printerWriter.printLineFeed();    printerWriter.print("微信公众号:衣二三");    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.printLineFeed();    printerWriter.feedPaperCutPartial();    data.add(printerWriter.getDataAndReset());} catch (IOException e) {    e.printStackTrace();}byteArrayOutputStream = new ByteArrayOutputStream();for (byte[] bytes1 : data) {    try {        byteArrayOutputStream.write(bytes1);        byteArrayOutputStream.flush();    } catch (IOException e) {        e.printStackTrace();    }}try {    boolean printSuccess = false;    printSuccess = AiBaoPrint.getInstance().sendDataPrint(byteArrayOutputStream.toByteArray());    byteArrayOutputStream.close();    if (printSuccess) {        ToastUtil.showShort("打印成功");        return true;    } else {        ToastUtil.showShort("打印失败");        return false;    }} catch (IOException e) {    e.printStackTrace();    return false;}

 

 

 

更多相关文章

  1. Android 设备屏幕信息(dip,sp,px的转换及其运用)
  2. Android 中文 API (17) ―― TextSwitcher
  3. Android 3.1 r1 API中文文档(6)――ImageView
  4. Arcgis for Android解决中文字体乱码的问题
  5. Android 2.1 Compatibility Definition 中文版 - Android 2.1 兼
  6. android正则表达式匹配中文正解
  7. android真机调试,在ubuntu11.10无法找到设备,但attached值为"devi
  8. 设备方向

随机推荐

  1. ConcurrentHashMap之size()方法
  2. java都为我们提供了各种锁,为什么还需要分
  3. Java线程之线程的调度-让步
  4. 常用控件的使用方法(参考书籍'第一行代码'
  5. mysql中的合并表和分区表详解(经常使用的
  6. hive beeline ClassNotFoundException
  7. Redis5.0中的内存淘汰策略详解(最新的版本
  8. Java实现单向链表
  9. 为什么 MongoDB 索引选择B-树,而 Mysql 索
  10. Android实现取消GridView中Item选中时默