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. 关于Iframe之间以及与父窗体的值传递
  2. (转)Linux(Centos)之安装Java JDK及注意事项
  3. Linux安全手册(转载)
  4. 【Python】Jupyter Notebook 配置路径
  5. windows查看linux端口,Linux和Windows下查看端口详解
  6. 信号与槽是如何实现的_铺天盖地的吐槽,结果却是卖到断货?iPhone12魅力何在?...
  7. XP系统访问win7共享文件夹教程和提示没有权限的解决办法
  8. lvcreate 创建逻辑卷
  9. 莫兰迪紫rgb_莫兰迪rgb参数_译述北京 | RGB的前世今生
  10. SONY索尼笔记本摄像头驱动汇总帖
  11. FIFO设计中的注意问题与技巧
  12. javascript 3/13
  13. (附源码)计算机毕业设计SSM基于java学科竞赛管理系统
  14. 立志高远;毕业后计划
  15. OddBall-图异常点检测
  16. 前端语法重温从0到1入门
  17. 溢米辅导完成C轮1500万美元融资,将用于教研、产品以及技术三大领域
  18. google gms安装
  19. eclipse上插入中文到mysql,但是navicat显示问号《网上很多方法都没用》,最终google到了精品
  20. Python+Vue计算机毕业设计BeatHouse伴奏交易平台z19pu(源码+程序+LW+部署)

热门文章

  1. linux下U盘为只读文件系统的解决办法
  2. kolla快速集成openstack-ocata和opencontrail-4.0.1.0单节点
  3. 基于SprnigBoot+ElementUI 整合Vue案例【公司案件管理系统】
  4. git文件标识添加绿色和红色图标
  5. 【codejam_Round1B_C】Mousetrap
  6. 阿里 酷家乐:实习生面试
  7. CorelDraw软件快速入门
  8. 服务器的安全措施有哪些呢?
  9. 外贸出口管理系统亮点及重点
  10. SAP HR系统2019年五一节假日调整