java生成一维码

package com.warehouse.common.util;

import org.jbarcode.JBarcode;import org.jbarcode.JBarcodeFactory;import org.jbarcode.encode.Code128Encoder;import org.jbarcode.encode.InvalidAtributeException;import org.jbarcode.paint.TextPainter;import org.jbarcode.util.ImageUtil;

import java.awt.*;import java.awt.image.BufferedImage;import java.io.*;

/** *@class:JbarcodeUtil *@descript:生成条形码最标准(条码code可以为中文) *@date:2016年11月25日 下午1:46:07 *@version:V1.0 *备注: *1.静态代码块的作用:当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化。 *2.常量条形码的高度和字体大小设置很重要,若是设置小了会看不到设置的文件 */public class JbarcodeUtil {

//设置条形码高度    private static final int BARCODE_HEIGHT = 65;    //设置条形码默认分辨率    private static final int BARCODE_DPI = 203;    //设置条形码字体样式    private static final String FONT_FAMILY = "console";    //设置条形码字体大小    private static final int FONT_SIZE = 13;    //设置条形码文本    public static String TEXT = "";    //创建jbarcode    private static JBarcode jbc = null;

static JBarcode getJBarcode() throws InvalidAtributeException {        /**         * 参考设置样式:         *barcode.setEncoder(Code128Encoder.getInstance()); //设置编码         *barcode.setPainter(WidthCodedPainter.getInstance());// 设置Painter         *barcode.setTextPainter(BaseLineTextPainter.getInstance()); //设置TextPainter         *barcode.setBarHeight(17); //设置高度         *barcode.setWideRatio(Double.valueOf(30).doubleValue());// 设置宽度比率         *barcode.setXDimension(Double.valueOf(2).doubleValue()); // 设置尺寸,大小 密集程度         *barcode.setShowText(true); //是否显示文本         *barcode.setCheckDigit(true); //是否检查数字         *barcode.setShowCheckDigit(false); //是否显示检查数字         */        if (jbc == null) {            //生成code128            jbc = JBarcodeFactory.getInstance().createCode128();            jbc.setEncoder(Code128Encoder.getInstance());            jbc.setTextPainter(CustomTextPainter.getInstance());            jbc.setBarHeight(BARCODE_HEIGHT);            jbc.setXDimension(Double.valueOf(1).doubleValue());            jbc.setShowText(false);            jbc.setWideRatio(Double.valueOf(20).doubleValue());        }        return jbc;    }

/**     * @descript:生成条形码文件     * @param message  条形码内容     * @param file   生成文件     */    public static void createBarcode(String message, File file,String text) {        try {            FileOutputStream fos = new FileOutputStream(file);            createBarcode(message, fos,text);            fos.close();        } catch (IOException e) {            throw new RuntimeException(e);        }    }

/**     * @descript:生成条形码并写入指定输出流     * @param message   条形码内容     * @param os   输出流     */    public static void createBarcode(String message, OutputStream os,String text) {        try {            //设置条形码文本            TEXT=text;            //创建条形码的BufferedImage图像            BufferedImage image = getJBarcode().createBarcode(message);            ImageUtil.encodeAndWrite(image, ImageUtil.PNG, os, BARCODE_DPI, BARCODE_DPI);            os.flush();        } catch (Exception e) {            throw new RuntimeException(e);        }    }

/**     * 静态内部类     * 自定义的 TextPainter, 允许定义字体,大小,文本等     * 参考底层实现:BaseLineTextPainter.getInstance()     */    protected static class CustomTextPainter implements TextPainter {        private static CustomTextPainter instance =new CustomTextPainter();        public static CustomTextPainter getInstance() {            return instance;        }        public void paintText(BufferedImage barCodeImage, String text, int width) {            //绘图            Graphics g2d = barCodeImage.getGraphics();            //创建字体            Font font = new Font(FONT_FAMILY, Font.PLAIN, FONT_SIZE * width);            g2d.setFont(font);            FontMetrics fm = g2d.getFontMetrics();            int height = fm.getHeight();            int center = (barCodeImage.getWidth() - fm.stringWidth(text)) / 2;            g2d.setColor(Color.WHITE);            g2d.fillRect(0, 0, barCodeImage.getWidth(), barCodeImage.getHeight() * 1 / 20);            g2d.fillRect(0, barCodeImage.getHeight() - (height * 9 / 10), barCodeImage.getWidth(), (height * 9 / 10));            g2d.setColor(Color.BLACK);            //绘制文本            g2d.drawString(TEXT, 0, 145);            //绘制条形码            g2d.drawString(text, center, barCodeImage.getHeight() - (height / 10) - 2);        }    }

//测试    public static void main(String[] args) throws FileNotFoundException, IOException {       
    JbarcodeUtil.createBarcode(data.getIdentity(), file,"");
    }}
时间: 2024-07-31 13:34:06

java生成一维码的相关文章

Android生成一维码

BitmapUtil.java里面添加个方法 /** * 用于将给定的内容生成成一维码 注:目前生成内容为中文的话将直接报错,要修改底层jar包的内容 * * @param content 将要生成一维码的内容 * @return 返回生成好的一维码bitmap * @throws WriterException WriterException异常 */ public static Bitmap CreateOneDCode(String content) throws WriterExcept

zxing解析生成一维码二维码

@web界面实现扫一扫 二维码工具类 package util; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.

JAVA生成拼音码

public class TestApp { public static void main(String[] args) { System.out.println(getPinym("我是坑星星")); } public static String getPinym(String a) { //汉字区位码 int li_SecPosValue[] = {1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212,

使用JBarcode生成一维码

需要的jar包,只有jbarcode.jar 链接: https://pan.baidu.com/s/1o9oDPB8 密码: x367 public class Main { //设置条形码高度 private static final int BARCODE_HEIGHT = 40; //设置条形码默认分辨率 private static final int BARCODE_DPI = ImageUtil.DEFAULT_DPI; //设置条形码字体样式 private static fin

c#生成二维码,一维码(条形码)

  一.一维码 1.一维条码即指条码条和空的排列规则,常用的一维码的码制包括:EAN码.39码.交叉25码.UPC码.128码.93码,ISBN码,及Codabar(库德巴码)等. 2.一维码用处:可以识别商品的基本信息,例如商品名称.价格等,但并不能提供商品更详细的信息,要调用更多的信息,需要电脑数据库的进一步配合. 代码具体实现:引用spire Barcode程序包,既可以生成一维码,又可以生成二维码,这是一个EAN-13码 使用winform实现: //创建 BarcodeSettings

java 生成条形码

今天有个新的需求,要在系统中自动生成条形码,之前也没做过生成条形码的功能,今天正好研究一下. 解决方法: Java 生成条码的方案 :    jbarcode.barcode4j.zxing 其实都可以生成一维码(条形码)以下我们就用barcode4j为例: 在pom.xml中引入 <!-- https://mvnrepository.com/artifact/net.sf.barcode4j/barcode4j-light --> <dependency> <groupId

使用Zxing 一维码

最近看到满大街的二维码扫码有惊喜,对二维码也有过一些了解,想看看到底是什么原理,在网上找了一些资料,自己弄了一个实例,采用的是MVC,贴出来分享一下 一维码生成 Controller public ActionResult QRCodView() { return View(); } 1 <div class="col-md-4"> 2 <h2>一维码生成</h2> 3 <div><input type="number&q

java二维码生成

二维码,是一种采用黑白相间的平面几何图形经过相应的编码算法来记载文字.图画.网址等信息的条码图画.如下图 二维码的特色: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比一般条码信息容量约高几十倍. 2.  编码规模广 该条码能够把图画.声响.文字.签字.指纹等能够数字化的信息进行编码,用条码表明出来:能够表明多种语言文字:可表明图画数据. 3.  容错能力强,具有纠错功用 这使得二维条码因穿孔.污损等导致部分损坏时,照样能够正确

Java生成并打印二维码

本次做订餐系统中,需要用到在Java生成二维码,并在jsp页面打印并输出,其中在action中生成二维码. 关键代码如下 1 public void reWeiMa() throws Exception{ 2 //设置页面不缓存 3 HttpServletResponse response = ServletActionContext.getResponse(); 4 HttpServletRequest quest = ServletActionContext.getRequest(); 5