博客
关于我
barcode4j 条形码生成
阅读量:130 次
发布时间:2019-02-26

本文共 2579 字,大约阅读时间需要 8 分钟。

barcode4j 条形码生成工具类实现

选择轻量级版本的原因

为了提高开发效率,我们在项目中选择了轻量级的barcode4j-light版本作为条形码生成工具。相较于标准版本,这个轻量级版本的依赖包更小,安装和运行效率更高。

在项目中添加依赖项

在项目的pom.xml文件中,需要添加以下依赖项:

net.sf.barcode4j
barcode4j-light
2.0

这一选择主要基于以下考虑:

  • 轻量级版本的依赖包体积较小,不会对项目性能产生显著影响。
  • 标准版本的依赖包包含了许多冗余功能,这些功能对于本次项目的需求并不是必不可少的。

BarcodeUtil 工具类实现

下面我们来看一下实现的核心代码:

import java.awt.image.BufferedImage;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import org.apache.commons.lang.StringUtils;import org.krysalis.barcode4j.impl.code39.Code39Bean;import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;import org.krysalis.barcode4j.tools.UnitConv;public class BarcodeUtil {    public static File generateFile(String msg, String path) {        File file = new File(path);        try {            generate(msg, new FileOutputStream(file));        } catch (FileNotFoundException e) {            throw new RuntimeException(e);        }        return file;    }    public static void generate(String msg, OutputStream ous) {        if (StringUtils.isEmpty(msg) || ous == null) {            return;        }        Code39Bean bean = new Code39Bean();        // 设置模块宽度        final int dpi = 150;        final double moduleWidth = UnitConv.in2mm(1.0f / dpi);        bean.setModuleWidth(moduleWidth);        bean.setWideFactor(3);        bean.doQuietZone(false);        String format = "image/png";        try {            BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,                    BufferedImage.TYPE_BYTE_BINARY, false, 0);            bean.generateBarcode(canvas, msg);            canvas.finish();        } catch (IOException e) {            throw new RuntimeException(e);        }    }    public static void main(String[] args) {        String msg = "liunnDjj";        String path = "D:/liunnDjj.png";        generateFile(msg, path);    }}

代码解释

  • generateFile 方法:

    该方法负责根据输入的消息内容和保存路径生成相应的条形码图片文件。

    • 首先,创建目标文件对象。
    • 然后调用generate方法生成条形码内容,并将结果输出到指定路径。
    • 如果出现文件未找到异常,会抛出RuntimeException异常。
  • generate 方法:

    该方法负责将消息内容生成条形码图片并输出到指定的输出流。

    • 首先检查消息内容是否为空或输出流是否为空,如果是则直接返回。
    • 创建Code39Bean对象,用于生成条形码。
    • 设置条形码的模块宽度和宽度因子。
    • 配置输出格式为PNG图片。
    • 创建BitmapCanvasProvider对象,用于生成条形码图片。
    • 调用generateBarcode方法生成条形码内容并绘制到图片中。
    • 最后,调用finish方法结束绘制并释放资源。
  • main 方法:

    • 调用generateFile方法生成条形码图片,并将生成的图片文件路径输出到标准输出。
    • 主函数主要用于验证工具类的使用效果。
  • 工具类的实际应用

    通过上述工具类,可以按照以下步骤生成条形码:

  • 创建一个消息内容字符串。
  • 指定一个保存路径。
  • 调用generateFile方法生成条形码图片。
  • 运行主函数后,会在D盘生成名为liunnDjj.png的条形码图片文件。

    总结

    通过本文的实现,可以轻松地对任意字符串内容生成条形码图片。工具类的设计简洁高效,适合用于快速生成条形码验证或标识。

    转载地址:http://idof.baihongyu.com/

    你可能感兴趣的文章
    Python:通过串口从 Velleman k8090 读取数据
    查看>>
    python:遍历具有列表值的字典
    查看>>
    Python:降低精度 pandas 时间戳数据帧
    查看>>
    python:非阻塞子进程,检查标准输出
    查看>>
    PythonABC多重继承
    查看>>
    Pythonargparse中的多个参数
    查看>>
    Python关于 *args 和 **kwargs 参数的详解(全)
    查看>>
    Pythonfrozenset散列算法/实现
    查看>>
    PythonGTK+3:通过单击列对树视图进行排序
    查看>>
    pythonnumpy生成二进制流_python/numpy生成的二进制文件,由C读取
    查看>>
    pythonsign函数_对python函数签名的方法详解 用python怎么写一个自签名证书
    查看>>
    PythonStudy
    查看>>
    Pythons__IMPORT__未按预期工作
    查看>>
    Pythont通过request以及BeautifulSoup爬取几千条情话
    查看>>
    pythonweb django的学习
    查看>>
    pythonweb网站开发基础django安装
    查看>>
    pythonweb网站开发基础创建django项目
    查看>>
    pythonweb网站开发基础添加应用
    查看>>
    Python_015 多线程
    查看>>
    python_73_pickle序列化(接72)
    查看>>