Officia.BarCode — 条码与二维码
能力摘要(AI 友好):
OfficiaBarCode生成一维条码(Code128 / Code39 / Code93 / EAN-13 / EAN-8 / UPC-A / ITF-14)与二维码(QR,全 40 版本),输出 PNG 字节或BufferedImage,纯 JDK 实现。
生成常见一维条码与二维码,直接得到 PNG 字节(可写文件、嵌 PDF、返回前端),或得到 BufferedImage 供进一步处理。
引入
xml
<dependency>
<groupId>plus.ruoyi</groupId>
<artifactId>officia-all</artifactId>
<version>1.0.0</version>
</dependency>仅需条码能力时可单独引
officia-barcode。
二维码 QR
java
import plus.ruoyi.officia.barcode.OfficiaBarCode;
byte[] png = OfficiaBarCode.qrPng("https://officia.ruoyi.plus"); // → PNG 字节
java.awt.image.BufferedImage img = OfficiaBarCode.qrImage("文本"); // → BufferedImage支持 QR 全 40 版本,容量随内容自动选择。
一维条码
每种码制都提供三种输出:xxxImage(BufferedImage)、xxxPng(PNG 字节)、xxxPngText(PNG 带人眼可读文本)。
java
byte[] c128 = OfficiaBarCode.code128Png("OFFICIA-2026");
byte[] c128t = OfficiaBarCode.code128PngText("OFFICIA-2026"); // 底部带文本
byte[] ean = OfficiaBarCode.ean13Png("6901234567892");
byte[] upc = OfficiaBarCode.upcaPng("012345678905");
byte[] itf = OfficiaBarCode.itf14Png("10012345678902");支持的码制与方法
| 码制 | Image | PNG | PNG + 文本 |
|---|---|---|---|
| QR 二维码 | qrImage | qrPng | — |
| Code 128 | code128Image | code128Png | code128PngText |
| Code 39 | code39Image | code39Png | code39PngText |
| Code 93 | code93Image | code93Png | code93PngText |
| EAN-13 | ean13Image | ean13Png | ean13PngText |
| EAN-8 | ean8Image | ean8Png | ean8PngText |
| UPC-A | upcaImage | upcaPng | upcaPngText |
| ITF-14 | itf14Image | itf14Png | itf14PngText |
写文件 / 返回前端
java
// 写文件
Files.write(Path.of("qr.png"), OfficiaBarCode.qrPng("hello"));
// Spring 返回图片
@GetMapping(value = "/qr", produces = MediaType.IMAGE_PNG_VALUE)
public byte[] qr(@RequestParam String text) {
return OfficiaBarCode.qrPng(text);
}常见问题
- EAN/UPC 校验位:EAN-13 需 13 位、UPC-A 需 12 位数字(含校验位);位数或校验不符会抛
OfficiaException。 - PNG 魔数:输出为标准 PNG(
\x89PNG开头),可直接被浏览器 / 图片库识别。