博客
关于我
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/

    你可能感兴趣的文章
    Objective-C实现area under curve曲线下面积算法(附完整源码)
    查看>>
    Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
    查看>>
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>
    Objective-C实现base85 编码算法(附完整源码)
    查看>>
    Objective-C实现basic graphs基本图算法(附完整源码)
    查看>>
    Objective-C实现BCC校验计算(附完整源码)
    查看>>
    Objective-C实现bead sort珠排序算法(附完整源码)
    查看>>
    Objective-C实现BeadSort珠排序算法(附完整源码)
    查看>>
    Objective-C实现bellman ford贝尔曼福特算法(附完整源码)
    查看>>
    Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现BellmanFord贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现BF算法 (附完整源码)
    查看>>
    Objective-C实现binary exponentiation二进制幂运算算法(附完整源码)
    查看>>
    Objective-C实现binary tree traversal二叉树遍历算法(附完整源码)
    查看>>
    Objective-C实现binomial coefficient二项式系数算法(附完整源码)
    查看>>
    Objective-C实现BitMap算法(附完整源码)
    查看>>
    Objective-C实现bitonic sort双调排序算法(附完整源码)
    查看>>
    Objective-C实现bogo sort排序算法(附完整源码)
    查看>>