JAVA生成條碼(jbarcode)
條碼技術在現在的應用非常廣泛,幾乎所有的商品包裝上都會印有條形碼,這一篇將通過例項演示JAVA如何生成條碼,需要使用的第三方包為:jbarcode
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import org.jbarcode.JBarcode;
import org.jbarcode.encode.CodabarEncoder;
import org.jbarcode.encode.Code11Encoder;
import org.jbarcode.encode.Code128Encoder;
import org.jbarcode.encode.Code39Encoder;
import org.jbarcode.encode.Code39ExtEncoder;
import org.jbarcode.encode.Code93Encoder;
import org.jbarcode.encode.Code93ExtEncoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.encode.EAN8Encoder;
import org.jbarcode.encode.Interleaved2of5Encoder;
import org.jbarcode.encode.InvalidAtributeException;
import org.jbarcode.encode.MSIPlesseyEncoder;
import org.jbarcode.encode.PostNetEncoder;
import org.jbarcode.encode.Standard2of5Encoder;
import org.jbarcode.encode.UPCAEncoder;
import org.jbarcode.encode.UPCEEncoder;
import org.jbarcode.paint.BaseLineTextPainter;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.EAN8TextPainter;
import org.jbarcode.paint.HeightCodedPainter;
import org.jbarcode.paint.UPCATextPainter;
import org.jbarcode.paint.UPCETextPainter;
import org.jbarcode.paint.WideRatioCodedPainter;
import org.jbarcode.paint.WidthCodedPainter;
/**
* 條形碼建立,需新增jar包:jbarcode-0.2.8.jar
*
* @author jianggujin
*
*/
public class BarcodeCreater
{
/** 用於生成條形碼的物件 **/
private JBarcode barcode = null;
/**
* 構造方法
*/
public BarcodeCreater()
{
barcode = new JBarcode(EAN13Encoder.getInstance(),
WidthCodedPainter.getInstance(), EAN13TextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
}
/**
* 生成條形碼檔案
*
* @param code
* 條形碼內容
* @param file
* 生成檔案
* @throws InvalidAtributeException
* @throws IOException
*/
public void write(String code, File file) throws IOException,
InvalidAtributeException
{
ImageIO.write(toBufferedImage(code), "JPEG", file);
}
/**
* 生成條形碼並寫入指定輸出流
*
* @param code
* 條形碼內容
* @param os
* 輸出流
* @throws IOException
* @throws InvalidAtributeException
*/
public void write(String code, OutputStream os) throws IOException,
InvalidAtributeException
{
ImageIO.write(toBufferedImage(code), "JPEG", os);
}
/**
* 建立條形碼的BufferedImage影象
*
* @param code
* 條形碼內容
* @return image
* @throws InvalidAtributeException
*/
public BufferedImage toBufferedImage(String code)
throws InvalidAtributeException
{
return barcode.createBarcode(code);
}
/**
* 設定編碼
*
* @param encoder
*/
public void setEncoder(BarcodeEncoder encoder)
{
int val = encoder.ordinal();
switch (val)
{
case 0:
barcode.setEncoder(EAN13Encoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(EAN13TextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 1:
barcode.setEncoder(UPCAEncoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(UPCATextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 2:
barcode.setEncoder(EAN8Encoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(EAN8TextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 3:
barcode.setEncoder(UPCEEncoder.getInstance());
barcode.setTextPainter(UPCETextPainter.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 4:
barcode.setEncoder(CodabarEncoder.getInstance());
barcode.setPainter(WideRatioCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 5:
barcode.setEncoder(Code11Encoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 6:
barcode.setEncoder(Code39Encoder.getInstance());
barcode.setPainter(WideRatioCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(false);
barcode.setShowCheckDigit(false);
break;
case 7:
barcode.setEncoder(Code39ExtEncoder.getInstance());
barcode.setPainter(WideRatioCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(false);
barcode.setShowCheckDigit(false);
break;
case 8:
barcode.setEncoder(Code93Encoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(false);
break;
case 9:
barcode.setEncoder(Code93ExtEncoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(false);
break;
case 10:
barcode.setEncoder(Code128Encoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(false);
break;
case 11:
barcode.setEncoder(MSIPlesseyEncoder.getInstance());
barcode.setPainter(WidthCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 12:
barcode.setEncoder(Standard2of5Encoder.getInstance());
barcode.setPainter(WideRatioCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(false);
break;
case 13:
barcode.setEncoder(Interleaved2of5Encoder.getInstance());
barcode.setPainter(WideRatioCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(17);
barcode.setShowText(true);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(true);
break;
case 14:
barcode.setEncoder(PostNetEncoder.getInstance());
barcode.setPainter(HeightCodedPainter.getInstance());
barcode.setTextPainter(BaseLineTextPainter.getInstance());
barcode.setBarHeight(6);
barcode.setShowText(false);
barcode.setCheckDigit(true);
barcode.setShowCheckDigit(false);
break;
}
}
/**
* 條形碼編碼方式
*
* @author jianggujin
*
*/
public enum BarcodeEncoder
{
EAN13, UPCA, EAN8, UPCE, Codabar, Code11, Code39, Code39Ext, Code93, Code93Ext, Code128, MSIPlessey, Standard2of5, Interleaved2of5, PostNet
}
}
相關推薦
JAVA生成條碼(jbarcode)
條碼技術在現在的應用非常廣泛,幾乎所有的商品包裝上都會印有條形碼,這一篇將通過例項演示JAVA如何生成條碼,需要使用的第三方包為:jbarcode import java.awt.image.BufferedImage; import java.io.Fi
JAVA生成報表(JFreeChart)
JAVA生成報表 JFreeChart是JAVA平臺上的一個開放的圖表繪製類庫。它完全使用JAVA語言編寫,是為applications, applets, servlets 以及JSP等使用所設計。JFreeChart可生成餅圖(pie charts)
Swagger 2(Open API v3.0) Java 文件生成指南(上)
介面文件生成器指的是寫好了 API 介面 之後,讓前臺開放人員(包括不限於 H5 前端、iOS/Android 客戶端、小程式等)呼叫介面時的文件。個人比較主張“程式碼即文件”,即文件編寫在原始碼之中。 先全網選型了一下,發現適合 Java 的有下面幾種開源的
JAVA驗證碼生成技術(上)
生成驗證碼的流程: 1.讀取成語資源包檔案裡面的成語 2.生成圖片 3.向session儲存圖片上的文字 4.把圖片輸出到頁面 流程如下: index.jsp <body> <table width="80%" border="0" cell
利用java生成UUID(工具類)
package test.demo1; import java.util.UUID; public class UUIDUtil { public static String creatU
Java程式設計師的好工具:通過json生成javabean(pojo)
向大家介紹我開發的一款工具,json-to-java.它可以幫助java程式設計師,通過json生成對應的javabean。當你需要呼叫json返回格式的api時,該工具特別有用。 功能介紹 我們開發的java系統,經常需要呼叫其他系統的API。這些AP
JAVA工具類(10)--- 隨機生成字串工具類randomUtil
package com.gcloud.common; import java.util.Random; /** * 隨機數、隨即字串工具 * Created by charlin on 2017/9/9. */ public class RandomU
「小程序JAVA實戰」Springboot版mybatis逆向生成工具(32)
分層 lease contract sin ring ise lmap con beginning 轉自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootbanmybatisnixiangshengc
某軟體公司的GUID生成程式碼(GUIDFactory)java+C#
下面是我們和某軟體公司交換資料使用的程式碼。 該公司使用自己的GUID格式非標準的GUID,如果有同學進入該公司或者需要與該公司產品交換資料,可以供參考。 C# using System; using System.Text; namespace Performanc
使用Swagger生成JAVA Mock Server(Springboot)程式碼
Swagger為我們提供了非常多的工具,其中最強的還要算這個程式碼的生成工具。在前後端分離的大環境下,前後端之間訂立的介面顯得尤為重要,介面在訂立之後變動的可能性已經很小,這就要求我們提前去設計介面,也就是我們為前端提供的API。 但是我們發現,在開發過程中訂立的介面壽命
java線程(四)
讀寫 img 其他 手動 dem com 字段 只讀 停止線程 java5線程並發庫 線程並發庫是JDK 1.5版本級以上才有的針對線程並發編程提供的一些常用工具類,這些類被封裝在java.concurrent包下。 該包下又有兩個子包,分別是atomic和lock
JAVA學習筆記(1)——a++與++a的區別
col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3
jdk源碼閱讀筆記之java集合框架(四)(LinkedList)
ray private array public 源碼閱讀 jdk源碼閱讀 oid color 解釋 關於LinkedList的分析,會從且僅從其添加(add)方法入手。 因為上一篇已經分析過ArrayList,相似的地方就不再敘述,關註點在LinkedList的特點。 屬
JAVA學習筆記(三)
byte repl efi ber 時間 clas 區分大小寫 增強for size @SuppressWarnings("resource")是用來壓制資源泄露警告的。比如使用io類,最後沒有關閉。Set集合特點:1)無序,不隨機2)元素唯一3)沒下標註意:Collect
java學習筆記(二)圖形用戶接口
star strong per getwidth cep runnable graphics s2d gb2 這個學期主要放在ACM比賽上去了,比賽結束了。不知不覺就15周了,這周就要java考試了,復習一下java吧。java的學習的目的還是讓我們學以致用,讓我們可以
動態生成頁面(一)——ASP.NET中Literal使用
case colspan label 奇偶數 容器 業務邏輯 con stringbu font 在頁面中加入內容時,假設是靜態內容。無需使用容器,能夠直接將標記作為HTML直接加入到頁面中;可是,假設是動態內容,則必須借助容器將內容加入到頁面中。典型的容器
JAVA------17.charles(青花瓷)抓包工具,適用安卓
java 技術 window eight charles bsp wid 9.png mage 1.安裝青花瓷 百度雲 jwindows :鏈接:http://pan.baidu.com/s/1dE6vvFV 密碼:mkce 2.查找 ip地址 3.設置手機,
自制Java虛擬機(四)-對象、new、invokespecial
utf pool tar 字節 can run 可見 frame 屬性 自制Java虛擬機(四)-對象、new、invokespecial 一、對象的表示 剛開始學Java的時候,圖書館各種教程,書名往往都是“Java面向對象高級編程”,通常作者都會與C++做個比較,列出的
JAVA泛型(轉)
強制 off 實例 emp 思想 void 成了 意義 依然 一. 泛型概念的提出(為什麽需要泛型)? 首先,我們看下下面這段簡短的代碼: 1 public class GenericTest { 2 3 public static void
【java】簡介(一)
編碼 http ... 設計 適合 不能 高度 代碼格式 操作系統 應用:web後端開發、android-app開發、大數據應用開發 學習:java會過時,但程序設計的思想不會過時 特點:1、面向對象,跨平臺,語法比c++簡單 2、以字節碼的形式運行在虛擬機上