linux cpu占用率如何看
370
2022-11-15
Java生成条形码(亲测可通过扫码枪扫出)
背景
项目上对接美国的外卖平台Uber(可以理解为国内的美团),需要在打印的小票上生成一个条形码,供Uber的骑手扫码取货。经过一顿百度发现,大佬们提供的条形码要么扫不出来,要么就很不美观(长宽比不合适),于是就自己摸索了一把。
代码
1、Maven依赖
2、工具类
/** * 生成条码工具类 */public class BarcodeUtils { /** * 生成条形码文件 * * @param msg 条形码的文本内容 * @param path 生成条形码的文件路径 * @return */ public static File generateFile(String msg, String path) { File file = new File(path); OutputStream outputStream = null; try { outputStream = new FileOutputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } try { generateBarCode128(msg, 10.0, 0.3, true, false, outputStream); } catch (Exception e) { throw new RuntimeException(e); } return file; } /** * 生成code128条形码 * * @param message 要生成的文本 * @param height 条形码的高度 * @param width 条形码的宽度 * @param withQuietZone 是否两边留白 * @param hideText 隐藏可读文本 * @param outputStream 输出流 */ public static void generateBarCode128(String message, Double height, Double width, boolean withQuietZone, boolean hideText, OutputStream outputStream) { Code128Bean bean = new Code128Bean(); // 分辨率,越大条形码就越大 int dpi = 150; // 设置两侧是否留白 bean.doQuietZone(withQuietZone); // 设置条形码高度和宽度 bean.setBarHeight(ObjectUtils.defaultIfNull(height, 9.0D)); if (width != null) { bean.setModuleWidth(width); } // 设置文本位置(包括是否显示) if (hideText) { bean.setMsgPosition(HumanReadablePlacement.HRP_NONE); } // 设置图片类型 String format = "image/png"; BitmapCanvasProvider canvas = new BitmapCanvasProvider(outputStream, format, dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); // 生产条形码 bean.generateBarcode(canvas, message); try { canvas.finish(); } catch (IOException e) { //ByteArrayOutputStream won't happen } } public static void main(String[] args) { String msg = "TRO2022032300000400301"; String path = "barcode2.png"; generateFile(msg, path); }}
3、效果图
4、关于条形码的编码
上述工具类给出的条形码编码为:Code128;
如果向使用其他编码,只需要在generateBarCode128()方法中将Code128Bean换成需要的,比如:Code39Bean;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~