1. 程式人生 > >JAVA生成條碼(jbarcode)

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 2Open 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生成javabeanpojo

向大家介紹我開發的一款工具,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生成程式碼GUIDFactoryjava+C#

下面是我們和某軟體公司交換資料使用的程式碼。 該公司使用自己的GUID格式非標準的GUID,如果有同學進入該公司或者需要與該公司產品交換資料,可以供參考。 C# using System; using System.Text; namespace Performanc

使用Swagger生成JAVA Mock ServerSpringboot程式碼

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、以字節碼的形式運行在虛擬機上