• java-使用barcode4j条形码生成


    使用barcode4j条形码生成,

    mvn管理

    <!-- 条形码 -->
    <dependency>
        <groupId>net.sf.barcode4j</groupId>
        <artifactId>barcode4j-light</artifactId>
        <version>2.0</version>
    </dependency>

    代码实现

    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang3.StringUtils;
    import org.krysalis.barcode4j.HumanReadablePlacement;
    import org.krysalis.barcode4j.impl.code128.Code128Bean;
    import org.krysalis.barcode4j.impl.code39.Code39Bean;
    import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
    import org.krysalis.barcode4j.tools.UnitConv;
    
    import java.awt.image.BufferedImage;
    import java.io.*;
    
    /**
     * 条形码工具类
     *
     * @Author
     * @Date
     **/
    @Slf4j
    public class BarcodeUtil {
    
        /**
         * 生成文件
         *
         * @param msg
         * @param path
         * @return
         */
        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;
        }
    
        /**
         * 生成字节
         *
         * @param msg
         * @return
         */
        public static byte[] generate(String msg) {
            ByteArrayOutputStream ous = new ByteArrayOutputStream();
            generate(msg, ous);
            return ous.toByteArray();
        }
    
        /**
         * 生成到流
         *
         * @param msg
         * @param ous
         */
        public static void generate(String msg, OutputStream ous) {
            if (StringUtils.isEmpty(msg) || ous == null) {
                return;
            }
            Code128Bean bean = new Code128Bean();
            // 精细度
            final int dpi = 150;
            // module宽度
            final double moduleWidth = UnitConv.in2mm(2.0f / dpi);
    
            // 配置对象
            bean.setModuleWidth(moduleWidth);
            // bean.setWideFactor(3);
            bean.doQuietZone(false);
    
            //设置不显示字符
            // bean.setMsgPosition(HumanReadablePlacement.HRP_NONE);
    
            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);
            }
        }
    }


    原文链接

  • 相关阅读:
    菜鸟学自动化测试(三)—-selenium 命令
    菜鸟学自动化测试(二)—-selenium IDE 功能扩展
    用js实现自动打字动画效果
    hihoCoder #1015 : KMP算法
    hihoCoder #1014 : Trie树
    android相对布局中@id和@+id的区别(原理)
    android中动态给EditText获得焦点并弹起软键盘的方法详解
    网页版井字游戏(TicTacToe)人机对战的制作(附思路和源码)
    网页版番茄时钟的制作——Pomodoro Clock
    制作网页版简易计算器(Calculator)
  • 原文地址:https://www.cnblogs.com/fatetop/p/13984709.html
Copyright © 2020-2023  润新知