Java条形码生成(128c)--jbarcode

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38930063/article/details/81706711

需要jbarcode的jar包支持。

下载地址:https://sourceforge.net/projects/jbcode

注:部分同学使用eclipse时无法直接使用BASE64Encoder,解决方法在代码下面。

本文提供两种方式

套餐一:生成返回值为Base64编码的条形码。

套餐二:生成条形码并输出到本地。

套餐三:解决使用eclipse时无法直接使用BASE64Encoder。

代码如下:

/**
     * @FunctionName generateBarCode128 (转自:http://blog.csdn.net/shb2058/article/details/77523330)
     * @Description 生成返回值为Base64编码的条形码
     * @param strBarCode
     * @param dimension
     * @param barheight
     * @return
     */
    public static String generateBarCode128(String strBarCode, String dimension, String barheight) {

        try {
            ByteArrayOutputStream outputStream = null;
            BufferedImage bi = null;
            JBarcode productBarcode = new JBarcode(Code128Encoder.getInstance(), WidthCodedPainter.getInstance(),EAN13TextPainter.getInstance());

            // 尺寸,面积,大小 密集程度
            productBarcode.setXDimension(Double.valueOf(dimension).doubleValue());
            // 高度 10.0 = 1cm 默认1.5cm
            productBarcode.setBarHeigth(Double.valueOf(barheight).doubleValue());
            // 宽度
            productBarcode.setWideRatio(Double.valueOf(30).doubleValue());
            // 是否显示字体
            productBarcode.setShowText(true);
            // 显示字体样式
            productBarcode.setTextPainter(BaseLineTextPainter.getInstance());

            // 生成二维码
            bi = productBarcode.createBarcode(strBarCode);

            outputStream = new ByteArrayOutputStream();
            ImageIO.write(bi, "jpg", outputStream);
            // 创建输出流
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encode(outputStream.toByteArray());
        } catch (Exception e) {
            e.printStackTrace();
            return "encodeError";
        }
    }

输出到本地:

/**
     * @FunctionName outImgToPath
     * @Description 生成条形码并输出到本地
     * @author 魔方Cube
     * @param strBarCode     条形码:0-100位
     * @param dimension     商品条形码:尺寸
     * @param barheight     商品条形码:高度
     * @param path             存储路径
     */
    public static void outImgToPath(String strBarCode, String dimension, String barheight, String path) {
        String encoder = generateBarCode128(strBarCode, dimension, barheight);
        if(encoder==null){
            return;
        }
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] b;
        try {
            b = decoder.decodeBuffer(encoder);
            OutputStream out = new FileOutputStream(path);
            out.write(b);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * @param args
     * @throws InvalidAtributeException
     */
    public static void main(String[] args) throws InvalidAtributeException {

        String encode2 = BarcodeUtil.generateBarCode128("693698334", "0.5", "30");
        outImgToPath("693698334", "0.5", "30", "D:\\B.jpg");
        System.out.println(encode2);

    }

解决使用eclipse时无法直接使用BASE64Encoder(推荐方法三):

方法一:右键项目->点击properties,选择Java Build Path设置项,再选择Libraries标签,Add External Jars添加%JAVA_HOME%\jre\lib\rt.jar就可以使用啦。

方法二:右键项目->点击properties,将自己配置的library 文件移除,再点击add library,选择jre system Library,点击—next,最后finish 完成即可

方法三:右键项目->点击properties,选择Java Build Path设置项,再选择Libraries标签,选中jre System Library,双击Access rules,点击add,resolution选择accessible,下面填上** 点击确定即可。如图:
这里写图片描述

展开阅读全文

没有更多推荐了,返回首页