Java使用barcode4j生成条形码

1、将要使用到的jar包导入项目(1、commons-lang-2.3.jar    2、barcode4j-light-2.0.jar)

2、新建类 BarcodeUtil

3、代码部分


package com.sale.util;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.lang.StringUtils;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;

/**
 *
 * @author Saffi
 * @date 2017年10月6日
 */
public class BarcodeUtil {
    
    /**
     * 生成文件
     *
     * @param msg
     * @param path
     * @return
     */
    public  File generateFiles(String msg, String path) {
        File file = new File(path);
        try {
            generates(msg, new FileOutputStream(file));
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
        return file;
    }

    /**
     * 生成字节
     *
     * @param msg
     * @return
     * @throws IOException
     */
    public  byte[] generates(String msg) throws IOException {
        ByteArrayOutputStream ous = new ByteArrayOutputStream();
        generates(msg, ous);
        ous.close();
        return ous.toByteArray();
    }

    /**
     * 生成到流
     *
     * @param msg
     * @param ous
     */
    public static  void generates(String msg, OutputStream ous) {
        if (StringUtils.isEmpty(msg) || ous == null) {
            return;
        }
        // 条形码类型
         //Code39Bean bean = new Code39Bean();
         Code128Bean bean = new Code128Bean();
        // 精细度
        final int dpi = 150;
        // module宽度
        final double moduleWidth = UnitConv.in2mm(2.0f / dpi);

        // 配置对象
        bean.setModuleWidth(moduleWidth);
        bean.doQuietZone(false);

        String format = "image/png";
        try {

            // 输出到流
            BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi, BufferedImage.TYPE_BYTE_BINARY,
                    false, 0);

            // 生成条形码
            bean.generateBarcode(canvas, msg);

            // 结束绘制
            canvas.finish();
            ous.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}


4、调用接口

/**
     * 生成条形码
     * @author Saffi
     * @throws IOException
     */
        @RequestMapping("testOrderBarcodes.action")
        public @ResponseBody String testOrderBarcodes(HttpServletResponse respon) throws IOException {
            String result="error";
            try {

       //调用接口
                        BarcodeUtil util = new BarcodeUtil();

       //条码内容
                        String msg = 'Te123456';
                  //路径
                        String path ="C:/Users/Administrator/Desktop/barcode/barcode"+msg+".png";
                        util.generateFiles(msg, path);
    
                    result="succ";
            } catch (Exception e) {
                e.printStackTrace();
                respon.sendRedirect("error.action");
                log.error("系统错误", e.fillInStackTrace());
            }
            return result;
        }

原文地址:https://www.cnblogs.com/shoose/p/7660588.html