Java生成条形码code128(亲测有效)

网友投稿 444 2022-12-07


Java生成条形码code128(亲测有效)

生成code 128条形码工具类

maven依赖

            net.sf.barcode4j

            barcode4j

            2.1

       

gradle依赖

compile("net.sf.barcode4j:barcode4j:2.1")

工具代码

package com.tian.demo.admin.controller;

import org.apache.commons.lang.ObjectUtils;

import org.krysalis.barcode4j.HumanReadablePlacement;

import org.krysalis.barcode4j.impl.code128.Code128Bean;

import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

/**

 * @ClassName BarCodeUtils

 * @Description TODO

 * @Author Harry

 * @Date 2020/5/130:35

 * @Version 1.0

 **/

public class BarCodeUtils {

    /**

     * 生成code128条形码

     *

     * @param height        条形码的高度

     * @param width         条形码的宽度

     * @param message       要生成的文本

     * @param withQuietZone 是否两边留白

     * @param hideText      隐藏可读文本

     * @return 图片对应的字节码

     */

    public static byte[] generateBarCode128(String message, Double height, Double width, boolean withQuietZone, boolean hideText) {

        Code128Bean bean = new Code128Bean();

        // 分辨率

        int dpi = 512;

        // 设置两侧是否留白

        bean.doQuietZone(withQuietZone);

        // 设置条形码高度和宽度

      http://  bean.setBarHeight((double) ObjectUtils.defaultIfNull(height, 9.0D));

        if (width != null) {

            bean.setModuleWidth(width);

        }

        // 设置文本位置(包括是否显示)

        if (hideText) {

            bean.setMsgPosition(HumanReadablePlacement.HRP_NONE);

        }

        // 设置图片类型

        String format = "image/png";

        ByteArrayOutputStream ous = new ByteArrayOutputStream();

        BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,

                BufferedImage.TYPE_BYTE_BINARY, false, 0);

        // 生产条形码

        bean.generateBarcode(canvas, message);

        try {

            canvas.finish();

        } catch (IOException e) {

        }

        return ous.toByteArray();

    }

}

控制层调用

@GetMapping("test")

    public void test(HttpServletRequest request,HttpServletResponse response) throws IOException {

        String parameter = request.getParameter("");

        byte[] bytes = BarCodeUtils.generateBarCode128("4305383450594", 10.00, 0.3, true, false);

        response.setContentType("image/png");

        OutputStream output = response.getOutputStream();

        InputStream in = new ByteArrayInputStream(bytes);

        int len;

        byte[] buf = new byte[1024];

        while ((len = in.read(buf)) != -1) {

            output.write(buf, 0, len);

        }

        output.flush();

        //如果没有下面两行,可能出现getOutputStream() has already been called for this response的异常

//        output.clear();

//        out = pageContext.pushBody();

        //        Result result = new Result();

    }


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java实现猜数字游戏
下一篇:Java连接数据库oracle中文乱码解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~