BarcodeGenerator.java 1.33 KB
package com.lego.common.utils;

import org.krysalis.barcode4j.HumanReadablePlacement;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class BarcodeGenerator {
    public static byte[] generateBarcodeImage(String barcodeText) {
        try {
            Code128Bean barcodeGenerator = new Code128Bean();
            final int dpi = 100;

            // Configure the barcode generator
            barcodeGenerator.setModuleWidth(0.5);
            barcodeGenerator.setBarHeight(8.5);

            barcodeGenerator.doQuietZone(false);
            barcodeGenerator.setMsgPosition(HumanReadablePlacement.HRP_NONE);

            // Create the barcode canvas
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BitmapCanvasProvider canvas = new BitmapCanvasProvider(outputStream, "image/png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);

            // Generate the barcode
            barcodeGenerator.generateBarcode(canvas, barcodeText);
            canvas.finish();

            return outputStream.toByteArray();
        } catch (IOException e) {
            throw new RuntimeException("Error generating barcode", e);
        }
    }
}