SpringBoot生成条形码

条形码被广泛地应用于生活,它是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。各式各样的软件和工具都可以生成条形码,当然,被称为万金油的Java自然也不在话下。今天,就来介绍一下Java是如何生成条形码的。

  • 我们使用开源的barcode4j来作为解决方案,首先引入依赖

    <dependency><groupId>net.sf.barcode4j</groupId><artifactId>barcode4j-light</artifactId><version>2.0</version>
    </dependency>
    
  • barcode4j作为开源解决方案,已有非常多的大佬写好工具类,为了敏捷开发,我们只需其调用静态方法即可(有更高追求的小伙伴可以尝试自己编写工具类)

    package com.****.energy.nat.utils;/*** @author ascool_zh* @create 2021-02-14:25*/
    public class BarCodeUtil {private static final Logger LOGGER = LoggerFactory.getLogger(BarCodeUtil.class);/*** 生成文件** @param msg* @param path* @return*/public static File generateFile(String msg, String path) {File file = new File(path);if (!file.exists()) {try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {generate(msg, fileOutputStream);} catch (IOException e) {LOGGER.error("generateFile error occurred", 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) throws IOException {if (StringUtils.isEmpty(msg) || ous == null) {return;}//除了Code39,Code128亦可使用Code39Bean bean = new Code39Bean();// 精细度final int dpi = 150;// module宽度final double moduleWidth = UnitConv.in2mm(1.0f / dpi);// 配置对象bean.setModuleWidth(moduleWidth);bean.setWideFactor(3);bean.doQuietZone(false);String format = "image/png";// 输出到流BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,BufferedImage.TYPE_BYTE_BINARY, false, 0);// 生成条形码bean.generateBarcode(canvas, msg);// 结束绘制canvas.finish();}
    }
  • 我们观察工具类,选取需要的方法,传入参数,即可生成二维码。这里我们选择生成文件的方式,我们考虑到生成的文件应放入一个特定的文件夹而不是打入jar包内,所以需要配置一下文件的访问路径和映射路径,具体可看步骤4。

  1. 先来一个简单的例子

    //一个简单的例子
    public class Test {public static void main(String[] args) {//需要写入条形码的信息String msg = "pillar666";//条形码生成文件路径String path = "D:\\pillar\\pilar666.jpg";//直接调用工具类静态方法BarCodeUtil.generateFile(msg,path);}
    }
    
  2. 结合SpringBoot的Web应用

    1. Controller层
    @Controller
    @RequestMapping("/nat/print")
    public class PrintBarcodeController extends BaseController{@Autowiredprivate PrintBarcodeService printBarcodeService;//获取配置文件里值@Value("${barcode-filepath}")private String barcodeFilepath;@RequestMapping("/list")@ResponseBodypublic List<Map<String, Object>> getPrintList(String startCode, int count, String netCode) throws IOException {List<Map<String, Object>> qryPrintList = printBarcodeService.getPrintList(startCode, count, netCode);if (count <= 5000) {for (Map<String, Object> map : qryPrintList) {String msg = (String) map.get("barCode");String path = barcodeFilepath + msg + ".png";BarCodeUtil.generateFile(msg, path);}}return qryPrintList;}
    }
    

    2.配置文件appliction.yml

    #二维码生成文件路径,部署时请按需要配置
    barcode-filepath: D:/barcode/
    

    3.前台访问代码

    //js函数,返回访问文件的地址
    function _showPhoto(value,row,index){var code=row.barCode;var url="barcode/"+code+".png";return "'<img src='"+url+"' style='height: 50px;width: 150px'>'"
    }
    

    4.配置类

    package com.****.energy.nat.config;
    /*** @author ascool_zh* @create 2021-02-15:27*/
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {//我们配置的磁盘路径,条形码会生成在这里@Value("${barcode-filepath}")private String barcodeFilepath;//访问静态资源@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");//起作用的是这条,告诉spring当我们访问/barcode/**路径时,会被映射到我们的磁盘路径registry.addResourceHandler("/barcode/**").addResourceLocations("file:" + barcodeFilepath);}}

SpringBoot生成条形码相关推荐

  1. springboot生成条形码并直接输出显示

    springboot生成条形码,并直接输出 条形码工具类: package com.cz.util;import com.google.zxing.BarcodeFormat; import com. ...

  2. SpringBoot生成条形码(一维码)

    这是方法调用: BarCodeUtil.encode("2020042312251234"); 下面是工具类BarCodeUtil.java package com.fc.test ...

  3. php tp5生成条形码,thinkphp5 + barcode 生成条形码

    2.解压放到"E:phpstudyPHPTutorialWWWguahaovendor下",其中class文件是所有的类文件,生成条形码就是调用文件夹里的类,font文件是字体,i ...

  4. pHp封装成vue,vue.js生成条形码的方法

    本文主要和大家分享vue.js生成条形码的方法,主要以代码的形式和大家分享,希望能帮助到大家. 1.下载插件npm install @xkeshi/vue-barcode //下载条形码插件 2.在m ...

  5. 如何用TXT文档数据批量生成条形码

    我们在制作商品标签的时候,经常需要根据已有的条码数据来批量生成条形码.这些条码数据一般存储在TXT文档.excel表或者是其他类型数据库中,具体怎么操作呢?我们就以TXT文档做实例,和大家分享一下如何 ...

  6. 小程序 生成条形码barcode.js

    1.下载barcode.js,新建一个文件wxbarcode.js用于计算条形码的宽高,以自适应不同手机屏显示 var barcode = require('./barcode'); function ...

  7. SpringBoot生成日志文件---logback和log4j

    SpringBoot生成日志文件---logback和log4j 一.logback logback是SpringBoot自带的日志文件,默认会为控制台输出INFO级别的日志,并且不会将日志文件保存. ...

  8. datatable如何生成级联数据_如何把Excel表数据批量生成条形码

    条形码属于一维条码,是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符,条形码的种类比较多,比如常用的Code128码,Code39码,Code93码,EAN-13码, ...

  9. excel条形码字体_在Excel中批量生成条形码,竟如此简单!

    条形码可以标出物品的生产国.制造厂家.商品名称.生产日期.图书分类号.邮件起止地点.类别.日期等许多信息,因而在商品流通.图书管理.邮政管理.银行系统等许多领域都得到广泛的应用. 那么如何在Excel ...

  10. 使用js生成条形码以及二维码

    一.用js生成条形码这种业务场景不是很常见的,最近刚好又接到这种需求 Google一下,发现github还真有这方面的轮子,感谢github,省去了我们很多造轮子的过程, 好了言归正传,首先引入jsb ...

最新文章

  1. 关于量子计算,你应该知道的七个事实
  2. Android导入工程提示Invalid project description
  3. 通过结构体某个成员的地址计算结构体首地址 (转)
  4. 【北斗】北斗卫星导航系统(BDS)介绍
  5. Java jar 修改(springfox-swagger-ui-2.9.2.jar 修改去掉顶部的绿色topbar,汉化)
  6. 在Unity 3D中,shader是何时编译的,在何时加载入显存中的?
  7. android view
  8. 内存分配-堆-栈-静态区
  9. Java 数据库image型输出图片
  10. Linux基础知识: SSH命令
  11. [转][酷酷的滕]我爱你语录
  12. 谈谈在ISA防火墙中的端口映射方法
  13. Unity给小鳄鱼洗澡2D流体水实现
  14. java:编写一个程序完成:完成在银行的存款和取款操作。在定义银行类时,若取款数大于余额则作为异常处理。
  15. JavaScript 销毁对象
  16. win10开机无法自动修复此计算机,win10无限自动修复无法开机怎么办_win10开机自动修复失败如何解决...
  17. 信息爆炸,用写作让它慢下来-2023.04.07
  18. unity地形模块学习
  19. 创基MIFI扩展坞自带4G上网功能扩展坞
  20. 日常学习——记使用POI多线程写Excel数据(续)

热门文章

  1. TA_Lib库指标中文说明
  2. Linux串口设置参数
  3. chrome谷歌浏览器使用技巧
  4. 剑指Offer——中国银行面试知识储备+面试内容(Offer-2已收割)
  5. 定积分及其应用知识点总结_定积分知识点总结.doc
  6. 系统架构演进路线及战术分析(微博、LinkedIn)
  7. 笔记本电脑如何连接共享的计算机,笔记本电脑怎么设置wifi共享的介绍
  8. 关于CSS居中显示的总结
  9. Excel 转置分组时如何保留没有对应数据的空组
  10. Linux操作系统引导过程及MBR扇区故障解决