1、下载jar包:https://download.csdn.net/download/wangshuxuncom/10852123
2、编写生成条形码的java代码:
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.jbarcode.JBarcode;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.WidthCodedPainter;
import org.jbarcode.util.ImageUtil;
public class BarcodeUtil {
/**
* 生成商品条形码
*
* @author GaoHuanjie
*/
public static String create(String savePath, String jbarCode, String imageFormat) {
try {
JBarcode jbarcode13 = new JBarcode(EAN13Encoder.getInstance(), WidthCodedPainter.getInstance(),
EAN13TextPainter.getInstance());
int length = jbarCode.length();
String barCode = jbarCode.substring(0, length - 1);// 获取到前12位
String code = jbarCode.substring(length - 1, length);
String checkCode = jbarcode13.calcCheckSum(barCode);// 获取到校验位
if (!code.equals(checkCode)) {
return "EN-13 条形码最后一位校验码不对,应该是: " + checkCode;
}
jbarcode13.setXDimension(Double.valueOf(0.8).doubleValue());// 尺寸,面积,大小
jbarcode13.setBarHeight(Double.valueOf(30).doubleValue());// 条形码高度
jbarcode13.setWideRatio(Double.valueOf(20).doubleValue());// 宽度率
jbarcode13.setShowCheckDigit(true);// 是否校验最后一位,默认是false
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
String imageName = sdf.format(new Date()) + "_" + jbarCode;// 定义图片名称
String imagePath = savePath + imageName + "." + imageFormat;
FileOutputStream fileOutputStream = new FileOutputStream(imagePath);
BufferedImage bufferedImage = jbarcode13.createBarcode(barCode);// 生成二维码
ImageUtil.encodeAndWrite(bufferedImage, imageFormat, fileOutputStream, 96, 96);// 保存二维码图片
fileOutputStream.close();
return imagePath;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
3、测试代码:
import org.jbarcode.encode.InvalidAtributeException;
import org.jbarcode.util.ImageUtil;
public class Test {
public static void main(String[] args) throws InvalidAtributeException {
String path = BarcodeUtil.create("D:\\", "6937748304340", ImageUtil.JPEG);
System.out.println(path);
}
}