java 怎么生成条形码最短
- 后端开发
- 2025-07-10
- 3
Java中生成条形码是一个常见的需求,尤其在商品管理、支付系统和信息分享等领域,下面将详细介绍如何在Java中生成条形码,包括所需的工具、步骤以及示例代码。
选择合适的库
在Java中生成条形码,常用的库有ZXing、iText、barcode4j和JBarCode等,这些库各有特点,适用于不同的场景。
库名 | 特点 |
---|---|
ZXing | 开源,支持多种格式(如Code 128、EAN-13、QR Code等),社区活跃,文档齐全。 |
iText | 主要用于创建和操作PDF文档,但也支持生成条形码,适合将条形码嵌入PDF文件。 |
barcode4j | 专门用于生成条形码,支持多种标准(如Code 128、EAN、UPC等),可自定义条形码的美观度。 |
JBarCode | 支持多种条码标准,API设计简洁,易于集成到各种Java应用中。 |
使用ZXing库生成条形码
ZXing是一个功能强大且易于使用的开源库,支持生成多种格式的条形码,以下是使用ZXing生成条形码的详细步骤:
添加依赖
如果你使用Maven进行项目管理,可以在pom.xml
文件中添加以下依赖:
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.5.0</version> </dependency>
编写生成条形码的代码
以下是一个简单的示例代码,展示如何使用ZXing生成Code 128格式的条形码:
import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; import java.util.HashMap; import java.util.Map; public class BarcodeGenerator { public static void generateBarcode(String data, String filePath) throws WriterException, IOException { // 设置条形码类型为Code 128 BarcodeFormat barcodeFormat = BarcodeFormat.CODE_128; // 配置生成条形码的参数 Map<EncodeHintType, Object> hints = new HashMap<>(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 设置字符集 // 生成条形码矩阵 BitMatrix bitMatrix = new MultiFormatWriter().encode(data, barcodeFormat, 200, 100, hints); // 将条形码矩阵转换为图片并保存到指定路径 Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); } public static void main(String[] args) { try { // 要生成的条形码数据和文件路径 String data = "123456789012"; String filePath = "/path/to/your/barcode.png"; // 生成条形码 generateBarcode(data, filePath); System.out.println("条形码生成成功!"); } catch (WriterException | IOException e) { e.printStackTrace(); } } }
运行代码
运行上述代码后,将在指定的文件路径生成一个PNG格式的条形码图片,你可以使用条码扫描器扫描该图片,验证其准确性。
使用iText库生成条形码
iText是一个功能强大的Java库,主要用于创建和操作PDF文档,它也提供了生成条形码的功能,特别适合将条形码嵌入到PDF文件中,以下是使用iText生成条形码的步骤:
添加依赖
如果你使用Maven进行项目管理,可以在pom.xml
文件中添加以下依赖:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.2</version> </dependency>
编写生成条形码的代码
以下是一个简单的示例代码,展示如何使用iText生成Code 128格式的条形码:
import com.itextpdf.barcodes.Barcode128; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileOutputStream; import java.io.IOException; public class BarcodeGenerator { public static void generateBarcode(String data, String filePath) throws DocumentException, IOException { // 创建一个PDF文档对象 Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(filePath)); document.open(); // 创建一个Code 128条形码对象 Barcode128 barcode = new Barcode128(); barcode.setCode(data); // 设置条形码数据 barcode.setBarHeight(10f); // 设置条形码高度 barcode.setX(1.0f); // 设置条形码X轴缩放比例 barcode.setY(1.0f); // 设置条形码Y轴缩放比例 // 将条形码转换为图片并添加到PDF文档中 Image barcodeImage = barcode.createImageWithBarcode(null, null); document.add(barcodeImage); document.close(); } public static void main(String[] args) { try { // 要生成的条形码数据和文件路径 String data = "123456789012"; String filePath = "/path/to/your/barcode.pdf"; // 生成条形码并嵌入到PDF文件中 generateBarcode(data, filePath); System.out.println("条形码生成成功!"); } catch (DocumentException | IOException e) { e.printStackTrace(); } } }
运行代码
运行上述代码后,将在指定的文件路径生成一个PDF文件,其中包含一个Code 128格式的条形码,你可以使用PDF阅读器打开该文件,并使用条码扫描器扫描条形码,验证其准确性。
使用barcode4j库生成条形码
barcode4j是一个专门用于生成条形码的Java库,支持多种标准(如Code 128、EAN、UPC等),它提供了丰富的配置选项,可以自定义条形码的美观度,以下是使用barcode4j生成条形码的步骤:
添加依赖
如果你使用Maven进行项目管理,可以在pom.xml
文件中添加以下依赖:
<dependency> <groupId>net.sf.barcode4j</groupId> <artifactId>barcode4j</artifactId> <version>2.1</version> </dependency>
编写生成条形码的代码
以下是一个简单的示例代码,展示如何使用barcode4j生成Code 128格式的条形码:
import net.sf.barcode4j.impl.codeone.Code128Bean; import net.sf.barcode4j.output.OutputCanvas; import net.sf.barcode4j.output.image.ImageCanvas; import org.apache.commons.lang3.ObjectUtils; import java.awt.; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class BarcodeGenerator { public static void generateBarcode(String data, String filePath) throws IOException { // 创建一个Code 128条形码对象 Code128Bean bean = new Code128Bean(); bean.doQuietZone(true); // 设置两侧是否留白 bean.setBarHeight(10d); // 设置条形码高度 bean.setModuleWidth(0.3); // 设置条形码宽度因子(单位:像素) bean.setMsg(data); // 设置条形码