Skip to content

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");

支持的码制与方法

码制ImagePNGPNG + 文本
QR 二维码qrImageqrPng
Code 128code128Imagecode128Pngcode128PngText
Code 39code39Imagecode39Pngcode39PngText
Code 93code93Imagecode93Pngcode93PngText
EAN-13ean13Imageean13Pngean13PngText
EAN-8ean8Imageean8Pngean8PngText
UPC-AupcaImageupcaPngupcaPngText
ITF-14itf14Imageitf14Pngitf14PngText

写文件 / 返回前端

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 开头),可直接被浏览器 / 图片库识别。