java 批量生成条形码,打包zip(springboot)

pom.xml

 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.11</version></dependency><dependency><groupId>net.sf.barcode4j</groupId><artifactId>barcode4j</artifactId><version>2.1</version></dependency>

Controller

// 条形码接口@RequestMapping("/getBarCode")public void getBarCode(HttpServletResponse response) throws Exception{ZipOutputStream zos = null;String data="http://baidu.com,123456789,111111111111111,4567897,4454415545";String  downloadFilename = "导出条码";//转换中文否则可能会产生乱码downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");// 指明response的返回对象是文件流response.setContentType("application/octet-stream");// 设置在下载框默认显示的文件名response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename+".zip");zos = new ZipOutputStream(response.getOutputStream());String[] admissions = data.split(",");for (int i = 0; i<admissions.length; i++){zos.putNextEntry(new ZipEntry(admissions[i]+".png"));ImageIO.write(BarCodeUtil.encode(admissions[i],true),"jpg",zos);}zos.flush();zos.close();}

BarCodeUtil 工具

package com.dhsr.springboot_code.util;import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.Code128Writer;
import org.apache.commons.lang3.StringUtils;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Map;/****/
public class BarCodeUtil {/*** 生成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);
//
//        // 设置条形码高度和宽度
//        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();
//    }/** 条形码宽度 */private static final int WIDTH = 332;/** 条形码高度 */private static final int HEIGHT = 50;/** 加文字 条形码 */private static final int WORDHEIGHT = 80;/*** 设置 条形码参数*/private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {private static final long serialVersionUID = 1L;{// 设置编码方式put(EncodeHintType.CHARACTER_SET, "utf-8");}};/*** 生成 图片缓冲* @author fxbin* @param vaNumber  VA 码* @return 返回BufferedImage*/public static BufferedImage getBarCode(String vaNumber){try {Code128Writer writer = new Code128Writer();// 编码内容, 编码类型, 宽度, 高度, 设置参数BitMatrix bitMatrix = writer.encode(vaNumber, BarcodeFormat.CODE_128, WIDTH, HEIGHT, hints);return MatrixToImageWriter.toBufferedImage(bitMatrix);} catch (WriterException e) {e.printStackTrace();}return null;}/*** 把带logo的条形码下面加上文字* @author fxbin* @param image  条形码图片* @param words  文字* @return 返回BufferedImage*/public static BufferedImage insertWords(BufferedImage image, String words,boolean needCompress){// 新的图片,把带logo的二维码下面加上文字if (StringUtils.isNotEmpty(words)) {BufferedImage outImage = new BufferedImage(WIDTH, WORDHEIGHT, BufferedImage.TYPE_INT_RGB);Graphics2D g2d = outImage.createGraphics();// 抗锯齿setGraphics2D(g2d);// 设置白色setColorWhite(g2d);// 画条形码到新的面板g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);// 画文字到新的面板Color color=new Color(0, 0, 0);g2d.setColor(color);// 字体、字型、字号g2d.setFont(new Font("微软雅黑", Font.PLAIN, 18));//文字长度int strWidth = g2d.getFontMetrics().stringWidth(words);//总长度减去文字长度的一半  (居中显示)int wordStartX=(WIDTH - strWidth) / 2;//height + (outImage.getHeight() - height) / 2 + 12int wordStartY=HEIGHT+20;// 画文字g2d.drawString(words, wordStartX, wordStartY);g2d.dispose();outImage.flush();return outImage;}return null;}/*** 设置 Graphics2D 属性  (抗锯齿)* @param g2d  Graphics2D提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制*/private static void setGraphics2D(Graphics2D g2d){g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);Stroke s = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER);g2d.setStroke(s);}/*** 设置背景为白色* @param g2d Graphics2D提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制*/private static void setColorWhite(Graphics2D g2d){g2d.setColor(Color.WHITE);//填充整个屏幕g2d.fillRect(0,0,600,600);//设置笔刷g2d.setColor(Color.BLACK);}public static BufferedImage encode(String content,boolean needCompress) throws Exception {BufferedImage image = insertWords(getBarCode(content),content,needCompress);return image;}
}

java 批量生成条形码,打包zip(springboot)相关推荐

  1. 使用html2canvas实现批量生成条形码

    /*前台代码*/ 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Gener ...

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

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

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

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

  4. python条形码库_python批量生成条形码的示例

    在工作中,有时会遇见需要将数字转换为条码的问题,每次都需要打开条码转换的网站,一次次的转换后截图,一两个还行,但是当需要转换的数量较多时,就会显得特别麻烦,弄不好还会遗漏或者重复,为了解决这个问题,使 ...

  5. C#实现批量生成条形码 ——主要用于准考证号的条形码生成

    功能介绍 1.  批量生成条形码 2.  自由设置图片大小.条形码线高和间距 3.  自由设置标题文本字号大小 4.  自由设置增量(相邻条形码的差量)数制(比如:每考场只生成30名) 源代码 usi ...

  6. EXCEL 批量生成条形码、二维码方案

    一. 通过条码字体生产条形码 1.网上下载C39HrP24DhTt 条码字体,导入win10 fonts文件夹,excel 中引用C39HrP24DhTt 字体进行显示. (68条消息) Excel ...

  7. 使用Python在Excel中批量生成条形码

    2019独角兽企业重金招聘Python工程师标准>>> 最近在研究盘点机盘点的问题,其中有一部分的商品没有的条形码,就想着自个生成条形码.参考了网上的教程,关于Excel批量生成条形 ...

  8. java批量生成周末

    java批量生成周末 依赖 <dependency><groupId>com.squareup.okhttp3</groupId><artifactId> ...

  9. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...

  10. 前端js html转换成pdf可下载打印;前端js可批量生成条形码;前端js可批量生成二维码,生成letter标签

    注意:本文调试的是letter纸尺寸 前端js html转换成pdf可下载打印  html2canvas  + jspdf 前端js生成条形码 Options · lindell/JsBarcode ...

最新文章

  1. Python环境出现模块找不到
  2. 【转】编程思想之消息机制
  3. 计算机公共基础知识实验报告,20140902413 李雪瑞 计算机工程系实验报告345.docx...
  4. Linux运维常用检查网络工具
  5. php 关闭 row,MySql php:检查Row是否存在
  6. 认识HTML与CSS
  7. C#记事本的简单开发
  8. java.lang.RuntimeException: Package manager has died
  9. Linux 串口驱动实例简单分析(x86 8250驱动(16550A),TIOCMGET, TIOCMSET, RTS)
  10. 泰迪杯数据挖掘挑战赛—机器学习(三)
  11. 计算机c盘无法扩展,win10c盘无法扩展卷怎么办
  12. IM 即时通讯开发如何设计图片文件的服务端存储架构
  13. ios设置阴历或农历生日(以iPhone X为例)
  14. PCIe ARI (Alternative Routing-ID Interpretation)介绍
  15. win10下装win7双系统_B360主板装win7+win10双系统失败经历分享
  16. Google 百度 图标收藏(三)
  17. Mac 为 Homebrew 设置代理
  18. vivado仿真时,输出为高阻态
  19. HTML 页面 DIV 边框圆角
  20. 【无限互联】 学院作品: LOL掌上英雄联盟

热门文章

  1. 计算机键盘快速指南,MagicBook热键/功能键切换指南,快捷键介绍
  2. 到此一游︱2022 Google 开发者大会
  3. 学校计算机比赛策划,学校计算机技能比赛活动策划方案
  4. 应聘时漂亮的回答,一生受益的语言
  5. 普中51单片机的贪吃蛇教程
  6. UVM中drain_time使用
  7. 【2023秋招】10月8日美团校招两道题
  8. 相对湿度与绝对湿度转换表包含负温度
  9. 解决执行HiveSQL时,报could not be cleaned up的错误
  10. Ubuntu下键盘测试软件