Android 设备接入小票打印机 爱宝小票打印机
16lz
2021-01-23
实现android 设备连接小票打印机打印小票的功能时,发现了一个好用的库:https://github.com/AlexMofer/ProjectX/tree/master/printer
android设备如何连接打印机https://blog.csdn.net/qq_25452989/article/details/82843071
我们要实现的效果:
实现时主要就是依靠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;}
更多相关文章
- Android 设备屏幕信息(dip,sp,px的转换及其运用)
- Android 中文 API (17) ―― TextSwitcher
- Android 3.1 r1 API中文文档(6)――ImageView
- Arcgis for Android解决中文字体乱码的问题
- Android 2.1 Compatibility Definition 中文版 - Android 2.1 兼
- android正则表达式匹配中文正解
- android真机调试,在ubuntu11.10无法找到设备,但attached值为"devi
- 设备方向