生成条形码code39 和 code 128

    xiaoxiao2022-07-06  192

    依赖

    <dependency> <groupId>net.sf.barcode4j</groupId> <artifactId>barcode4j-light</artifactId> <version>2.0</version> </dependency>

    工具类

    package com.hxlwl.logistics.utils; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Calendar; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; import org.krysalis.barcode4j.HumanReadablePlacement; import org.krysalis.barcode4j.impl.code128.Code128Bean; import org.krysalis.barcode4j.impl.code39.Code39Bean; import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider; import org.krysalis.barcode4j.tools.UnitConv; public class BarcodeUtil { // 阿里云API的bucket名称 public static final String BACKET_NAME = "hxl-upload"; // 阿里云API的文件夹名称 public static final String FOLDER = "code/"; // 图片访问地址 public static final String URL = "https://hxl-upload.oss-cn-hangzhou.aliyuncs.com/"; /** * 生成文件 * * @param msg * @param path * @return */ public static File generateFile(String msg, String path) { File file = new File(path); try { generate(msg, new FileOutputStream(file)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } return file; } /** * 生成字节 * * @param msg * @return */ // public static byte[] generate(String msg) { // ByteArrayOutputStream ous = new ByteArrayOutputStream(); // generate(msg, ous); // return ous.toByteArray(); // } /** * 生成字节 * * @param msg * @return */ public static InputStream generate(String msg) { ByteArrayOutputStream ous = new ByteArrayOutputStream(); generate(msg, ous); InputStream inputStream = new ByteArrayInputStream(ous.toByteArray()); return inputStream; } /** * 生成到流 * * @param msg * @param ous */ public static void generate(String msg, OutputStream ous) { if (StringUtils.isEmpty(msg) || ous == null) { return; } Code39Bean bean = new Code39Bean(); //设计方案 : 140 , 1.5 // 精细度 每英寸所打印的点数或线数,用来表示打印机打印分辨率。 final int dpi = 140; // module宽度 final double moduleWidth = UnitConv.in2mm(1.5f / dpi); // 配置对象 bean.setModuleWidth(moduleWidth); bean.setWideFactor(3); bean.doQuietZone(false); // 设置不显示字符 bean.setMsgPosition(HumanReadablePlacement.HRP_NONE); String format = "image/png"; try { // 输出到流 BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); // 生成条形码 bean.generateBarcode(canvas, msg); // 结束绘制 canvas.finish(); } catch (IOException e) { throw new RuntimeException(e); } } /** * 生成code128条形码 * * @param height 条形码的高度 * @param width 条形码的宽度 * @param message 要生成的文本 * @param withQuietZone 是否两边留白 * @param hideText 隐藏可读文本 * @return 图片对应的字节码 */ public static byte[] generateBarCode128(String message, Double height, Double width, boolean withQuietZone, boolean hideText) { Code128Bean bean = new Code128Bean(); // 分辨率 int dpi = 300; // 设置两侧是否留白 bean.doQuietZone(withQuietZone); // 设置条形码高度和宽度 bean.setBarHeight((double) ObjectUtils.defaultIfNull(height, 9.0D)); if (width != null) { bean.setModuleWidth(width); } // 设置文本位置(包括是否显示) if (hideText) { bean.setMsgPosition(HumanReadablePlacement.HRP_NONE); } // 设置图片类型 String format = "image/png"; ByteArrayOutputStream ous = new ByteArrayOutputStream(); BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); // 生产条形码 bean.generateBarcode(canvas, message); try { canvas.finish(); } catch (IOException e) { // ByteArrayOutputStream won't happen } return ous.toByteArray(); } /** * 获取code39条形码 * * @param msg * @return */ public static String getBarcode(String msg) { Calendar calendar = Calendar.getInstance(); String fileName = calendar.getTimeInMillis() + ".png";// 生成随机文件名 InputStream inputStream = generate(msg); AliyunOSSClientUtil.uploadFile2OSS(inputStream, fileName, FOLDER); return URL + FOLDER + fileName; } /** * 获取code128条形码 * * @param msg * @return */ public static String getBarcode128(String msg) { byte[] bytes = generateBarCode128(msg, 10.0, 0.4, false, true); // ByteArrayInputStream bin = new ByteArrayInputStream(bytes); Calendar calendar = Calendar.getInstance(); String fileName = calendar.getTimeInMillis() + ".png";// 生成随机文件名 InputStream inputStream = new ByteArrayInputStream(bytes); AliyunOSSClientUtil.uploadFile2OSS(inputStream, fileName, FOLDER); return URL + FOLDER + fileName; } // // public static void main(String[] args) { // String msg = "70255403"; // Calendar calendar = Calendar.getInstance(); // String fileName = calendar.getTimeInMillis() + ".jpg";// 生成随机文件名 // String path = URL + FOLDER + fileName; // generateFile(msg, path); // } }

     

    最新回复(0)