使用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 final String FONT_FAMILY = "console";
    //设置条形码字体大小
    private static final int FONT_SIZE = 15;
    //设置条形码文本
    public static String TEXT = "";
    //创建jbarcode
    private static JBarcode jbc = null;    

    public static void main(String[] args) {
        List<String> list=new ArrayList<String>();
        list.add("KJ4.1-0127-0001");
        list.add("KJ4.1-0128-0001");
        list.add("KJ4.1-0129-0001");
        list.add("KJ4.1-0130-0001");
        if(list!=null && list.size()>0){
            for(String message:list){
                Main.createBarcode(message, new File("D:\\test\\"+message+".png"),"No");
            }
        }
    }

    public 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(0.8).doubleValue());
           jbc.setShowText(true);
       }
       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);
           }
       }    

}

原文地址:https://www.cnblogs.com/yxth/p/8464930.html

时间: 2024-07-31 13:34:03

使用JBarcode生成一维码的相关文章

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生成一维码

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.jbarcod

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

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

使用Zxing 一维码

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

一维码生成 c# winform GUI

最近看到同事小红在做一维码,感觉挺好玩,于是就在网上找了一个例子来玩玩. 下面的代码均为网上的代码,做了一些整理,但是忘记了出处,原作者看到可以提醒我,谢谢. 首先,一维码的相关知识可以先百度一下:http://baike.baidu.com/link?url=I4k1PM3WN5T9z0tGSC7eKLVg8GlDZvoWTM8N4cxzocueqAJBOHQl5SwB4fcpF3AWE3V8ipWqY_w7Rb0EcZA6v_ 其中讲的还是比较清楚的,了解就行. 说明:本例讲的是code39

winform使用Barcodex控件预览和打印一维码

1.控件下载. http://files.cnblogs.com/files/masonblog/barcodex.zip . 包含barcodex.ocx控件.barcodex帮助文档.两个winform控件的dll文件. 2.控件的注册. (1)检测控件是否注册(方法不唯一). 本例使用的是判断注册表中 HKEY_CLASSES_ROOT\TypeLib\ 是否包含barcodex.ocx的项. 如果注册了barcodex.ocx控件,则会生成对应的项. HKEY_CLASSES_ROOT\

一维码:EAN-13码的识别

1.一维码简述: 一维条码是一种能用于信息编码和信息自动识别的标准符号,是由一组宽度不同的黑白符号按一定规则交替排列编码组成的图形符号,用于表示一定的信息. 码制指条码符号的类型,不同的类型有不同的编码规则.我们本次实验是基于EAN-13码制.EAN-13码主要由起始符(3).左侧数据符(42).中间分割符(5).右侧数据符(42).校验符.终止符(3)组成,一共95个模块,表示13个字符.条表示1,空表示0:只能表示0-9这十个数字:每个字符的宽度为7个模块,交替由两个条和两个空组成,每个条或

.net 生成拼音码与五笔码

首先加入配置文件: <?xml version="1.0" encoding="utf-8" ?> <CodeConfig> <SpellCode> <A>阿啊锕嗄厑哎哀唉埃挨溾锿鎄啀捱皑凒溰嘊敳皚癌毐昹嗳矮蔼躷噯藹譪霭靄艾伌爱砹硋隘嗌塧嫒愛碍暧瑷僾壒嬡懓薆曖璦鴱皧瞹馤鑀鱫安侒峖桉氨庵谙萻腤鹌蓭誝鞌鞍盦馣鮟盫韽啽雸垵俺唵埯铵隌揞罯銨犴岸按荌案胺豻堓婩暗貋儑錌黯肮岇昂昻枊盎醠凹坳垇柪軪爊敖厫隞嗷嗸嶅廒滶獒獓遨熬璈蔜翱聱螯