文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot 实战:生成条形码的方案

2024-11-29 18:54

关注

方案选择

在 Spring Boot 项目中生成条形码,有多种开源库可供选择,如 ZXing、barcode4j 等。这里主要介绍使用 ZXing 库来生成条形码和二维码的方法,因为 ZXing 支持多种格式且易于使用。

ZXing 库介绍

ZXing(“Zebra Crossing”的缩写)是一个开源的Java库,用于解析和生成多种格式的一维和二维条形码。它支持多种编程语言和平台,如 Java、Android、iOS 等。ZXing 库不仅功能强大,而且易于扩展和定制。

实战步骤

以下是在 Spring Boot 项目中使用 ZXing 库生成条形码的具体步骤和示例代码。

1. 添加依赖

首先,在你的 Spring Boot 项目的 pom.xml 文件中添加 ZXing 的依赖。


    
    
        com.google.zxing
        core
        3.5.2 
    
    
        com.google.zxing
        javase
        3.5.2 
    

2. 创建服务类

然后,创建一个服务类用于生成条形码。这里以生成 Code 128 类型的条形码为例。

package com.example.barcode;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.EnumMap;
import java.util.Map;

@Service
public class BarcodeService {

    
    public void generateBarcode(String content, String filePath, int width, int height) throws WriterException, IOException {
        Map hints = new EnumMap<>(EncodeHintType.class);
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        hints.put(EncodeHintType.ERROR_CORRECTION, com.google.zxing.qrcode.decoder.ErrorCorrectionLevel.H);
        hints.put(EncodeHintType.MARGIN, 1);

        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.CODE_128, width, height, hints);

        Path path = Paths.get(filePath);
        Files.createDirectories(path.getParent()); // 确保目录存在
        MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
    }
}

3. 创建控制器类

接着,创建一个控制器类,用于处理生成条形码的 HTTP 请求。

package com.example.barcode;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BarcodeController {

    @Autowired
    private BarcodeService barcodeService;

    @GetMapping("/generate-barcode")
    public ResponseEntity generateBarcode(
            @RequestParam String content,
            @RequestParam String filePath,
            @RequestParam int width,
            @RequestParam int height) {
        try {
            barcodeService.generateBarcode(content, filePath, width, height);
            return ResponseEntity.ok("Barcode generated successfully at " + filePath);
        } catch (Exception e) {
            return ResponseEntity.status(500).body("Barcode generation failed: " + e.getMessage());
        }
    }
}

4. 测试

启动你的 Spring Boot 应用,然后通过浏览器或其他 HTTP 客户端访问以下 URL 来生成条形码。

http://localhost:8080/generate-barcode?content=1234567890&filePath=/path/to/barcode.png&width=300&height=100

这将生成一个内容为 "1234567890",宽度为 300 像素,高度为 100 像素的条形码,并将其保存到指定的路径下。

总结

通过上面的步骤,你可以在 Spring Boot 项目中轻松地使用 ZXing 库来生成条形码。ZXing 库提供了强大的条形码处理能力,支持多种格式和自定义参数,非常适合需要在应用中快速处理条形码的场景。此外,ZXing 的开源特性也意味着你可以根据自己的需求进一步定制和扩展其功能。

来源:后端Q内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯