博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java使用barcode4j生成条形码
阅读量:5252 次
发布时间:2019-06-14

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

1、将要使用到的jar包导入项目(1、commons-lang-2.3.jar    2、barcode4j-light-2.0.jar)

2、新建类 BarcodeUtil

3、代码部分

package com.sale.util;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
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.code128.Code128Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;
/**
 *
 * @author Saffi
 * @date 2017年10月6日
 */
public class BarcodeUtil {
    
    /**
     * 生成文件
     *
     * @param msg
     * @param path
     * @return
     */
    public  File generateFiles(String msg, String path) {
        File file = new File(path);
        try {
            generates(msg, new FileOutputStream(file));
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
        return file;
    }
    /**
     * 生成字节
     *
     * @param msg
     * @return
     * @throws IOException
     */
    public  byte[] generates(String msg) throws IOException {
        ByteArrayOutputStream ous = new ByteArrayOutputStream();
        generates(msg, ous);
        ous.close();
        return ous.toByteArray();
    }
    /**
     * 生成到流
     *
     * @param msg
     * @param ous
     */
    public static  void generates(String msg, OutputStream ous) {
        if (StringUtils.isEmpty(msg) || ous == null) {
            return;
        }
        // 条形码类型
         //Code39Bean bean = new Code39Bean();
         Code128Bean bean = new Code128Bean();
        // 精细度
        final int dpi = 150;
        // module宽度
        final double moduleWidth = UnitConv.in2mm(2.0f / dpi);
        // 配置对象
        bean.setModuleWidth(moduleWidth);
        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();
            ous.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

4、调用接口

/**

     * 生成条形码
     * @author Saffi
     * @throws IOException
     */
        @RequestMapping("testOrderBarcodes.action")
        public @ResponseBody String testOrderBarcodes(HttpServletResponse respon) throws IOException {
            String result="error";
            try {

       //调用接口

                        BarcodeUtil util = new BarcodeUtil();

       //条码内容

                        String msg = 'Te123456';
                  //路径
                        String path ="C:/Users/Administrator/Desktop/barcode/barcode"+msg+".png";
                        util.generateFiles(msg, path);
    
                    result="succ";
            } catch (Exception e) {
                e.printStackTrace();
                respon.sendRedirect("error.action");
                log.error("系统错误", e.fillInStackTrace());
            }
            return result;
        }

转载于:https://www.cnblogs.com/shoose/p/7660588.html

你可能感兴趣的文章
2011.11.5 一道微软面试题
查看>>
poj 2182 树状数组
查看>>
细说KVO
查看>>
BZOJ2824: [AHOI2012]铁盘整理
查看>>
IE浏览器已经卸载,但是桌面上的图标却无法删除的解决方案
查看>>
JAVA记录-String/StringBuilder/StringBuffer区别
查看>>
面向对象设计模式纵横谈:Adapter 适配器模式(笔记记录)
查看>>
Java JSON技术框架选型与实例(转)
查看>>
查看修改mysql编码方式
查看>>
PAT 乙级 (将剩下的做了)
查看>>
分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令...
查看>>
如何用Android Studio查看build.gradle源码
查看>>
中国企业流程管理的建设方法--工作流程管理方案
查看>>
Tomcat详细用法学习(四)
查看>>
乐港游戏校招面试总结
查看>>
SQL用replace替换文本部分内容
查看>>
C++,快速排序【写出来的】
查看>>
软工1816 · Alpha冲刺(3/10)
查看>>
搜索关键词和类目url简短化
查看>>
【转】BAT 批处理脚本 教程
查看>>