1. 程式人生 > >java使用jbarcode生成條形碼

java使用jbarcode生成條形碼

準備工作:

開發工具:eclipse4.5+jdk1.7

所需jar包:jbarcode-0.2.8.jar

案例:

  1. package jbarcode;    
  2. import java.awt.Color;  
  3. import java.awt.Font;  
  4. import java.awt.FontMetrics;  
  5. import java.awt.Graphics;  
  6. import java.awt.image.BufferedImage;  
  7. import java.io.File;  
  8. import java.io.FileNotFoundException;  
  9. import
     java.io.FileOutputStream;  
  10. import java.io.IOException;  
  11. import java.io.OutputStream;  
  12. import java.util.ArrayList;  
  13. import java.util.List;  
  14. import org.jbarcode.JBarcode;  
  15. import org.jbarcode.JBarcodeFactory;  
  16. import org.jbarcode.encode.Code128Encoder;  
  17. import org.jbarcode.encode.InvalidAtributeException;  
  18. import org.jbarcode.paint.TextPainter;  
  19. import org.jbarcode.util.ImageUtil;  
  20.     /**  
  21.      *@class:JbarcodeUtil  
  22.      *@descript:生成條形碼最標準  
  23.      *@date:2016年11月25日 下午1:46:07  
  24.      *@version:V1.0  
  25.      *備註:  
  26.      *1.靜態程式碼塊的作用:當類被載入時,靜態程式碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化。  
  27.      *2.常量條形碼的高度和字型大小設定很重要,若是設定小了會看不到設定的檔案 
     
  28.      */
  29.     publicclass JbarcodeUtil {    
  30.         //設定條形碼高度  
  31.         privatestaticfinalint BARCODE_HEIGHT = 40;    
  32.         //設定條形碼預設解析度  
  33.         privatestaticfinalint BARCODE_DPI = ImageUtil.DEFAULT_DPI;    
  34.         //設定條形碼字型樣式  
  35.         privatestaticfinal String FONT_FAMILY = "console";    
  36.         //設定條形碼字型大小  
  37.         privatestaticfinalint FONT_SIZE = 15;    
  38.         //設定條形碼文字  
  39.         publicstatic String TEXT = "";    
  40.         //建立jbarcode  
  41.         privatestatic JBarcode jbc = null;    
  42.         static JBarcode getJBarcode() throws InvalidAtributeException {    
  43.          /**  
  44.          * 參考設定樣式:  
  45.          *barcode.setEncoder(Code128Encoder.getInstance()); //設定編碼 
  46.          *barcode.setPainter(WidthCodedPainter.getInstance());// 設定Painter 
  47.          *barcode.setTextPainter(BaseLineTextPainter.getInstance()); //設定TextPainter 
  48.          *barcode.setBarHeight(17); //設定高度 
  49.          *barcode.setWideRatio(Double.valueOf(30).doubleValue());// 設定寬度比率 
  50.          *barcode.setXDimension(Double.valueOf(2).doubleValue()); // 設定尺寸,大小 密集程度 
  51.          *barcode.setShowText(true); //是否顯示文字 
  52.           *barcode.setCheckDigit(true); //是否檢查數字 
  53.          *barcode.setShowCheckDigit(false); //是否顯示檢查數字 
  54.         */
  55.         if (jbc == null) {    
  56.             //生成code128  
  57.             jbc = JBarcodeFactory.getInstance().createCode128();   
  58.             jbc.setEncoder(Code128Encoder.getInstance());    
  59.             jbc.setTextPainter(CustomTextPainter.getInstance());    
  60.             jbc.setBarHeight(BARCODE_HEIGHT);    
  61.             jbc.setXDimension(Double.valueOf(0.8).doubleValue());  
  62.             jbc.setShowText(true);    
  63.         }    
  64.         return jbc;    
  65.         }    
  66.         /**  
  67.          * @descript:生成條形碼檔案  
  68.          * @param message  條形碼內容  
  69.          * @param file   生成檔案  
  70.          */
  71.         publicstaticvoid createBarcode(String message, File file,String text) {    
  72.             try {    
  73.                 FileOutputStream fos = new FileOutputStream(file);    
  74.                 createBarcode(message, fos,text);    
  75.                 fos.close();    
  76.             } catch (IOException e) {    
  77.                 thrownew RuntimeException(e);    
  78.             }    
  79.         }    
  80.         /**  
  81.          * @descript:生成條形碼並寫入指定輸出流  
  82.          * @param message   條形碼內容  
  83.          * @param os   輸出流  
  84.          */
  85.         publicstaticvoid createBarcode(String message, OutputStream os,String text) {    
  86.             try {    
  87.                 //設定條形碼文字
  88.                 TEXT=text;  
  89.                 //建立條形碼的BufferedImage影象  
  90.                 BufferedImage image = getJBarcode().createBarcode(message);    
  91.                 ImageUtil.encodeAndWrite(image, ImageUtil.PNG, os, BARCODE_DPI, BARCODE_DPI);    
  92.                 os.flush();    
  93.             } catch (Exception e) {    
  94.                 thrownew RuntimeException(e);    
  95.             }    
  96.         }    
  97.         /**  
  98.          * 靜態內部類  
  99.          * 自定義的 TextPainter, 允許定義字型,大小,文字等  
  100.          * 參考底層實現:BaseLineTextPainter.getInstance()  
  101.          */
  102.         protectedstaticclass CustomTextPainter implements TextPainter {    
  103.            privatestatic CustomTextPainter instance =new CustomTextPainter();    
  104.            publicstatic CustomTextPainter getInstance() {    
  105.                 return instance;    
  106.            }    
  107.            publicvoid paintText(BufferedImage barCodeImage, String text, int width) {    
  108.                 //繪圖  
  109.                 Graphics g2d = barCodeImage.getGraphics();    
  110.                 //建立字型  
  111.                 Font font = new Font(FONT_FAMILY, Font.PLAIN, FONT_SIZE * width);    
  112.                 g2d.setFont(font);    
  113.                 FontMetrics fm = g2d.getFontMetrics();    
  114.                 int height = fm.getHeight();    
  115.                 int center = (barCodeImage.getWidth() - fm.stringWidth(text)) / 2;    
  116.                 g2d.setColor(Color.WHITE);    
  117.                 g2d.fillRect(00, barCodeImage.getWidth(), barCodeImage.getHeight() * 1 / 20);    
  118.                 g2d.fillRect(0, barCodeImage.getHeight() - (height * 9 / 10), barCodeImage.getWidth(), (height * 9 / 10));    
  119.                 g2d.setColor(Color.BLACK);    
  120.                 //繪製文字  
  121.                 g2d.drawString(TEXT, 0145);    
  122.                 //繪製條形碼  
  123.                 g2d.drawString(text, center, barCodeImage.getHeight() - (height / 10) - 2);    
  124.             }    
  125.         }    
  126.         //測試  
  127.         publicstaticvoid main(String[] args) throws FileNotFoundException, IOException {    
  128.             List<String> list=new ArrayList<String>();    
  129.             list.add("KJ4.1-0127-0001");    
  130.             list.add("KJ4.1-0128-0001");    
  131.             list.add("KJ4.1-0129-0001");    
  132.             list.add("KJ4.1-0130-0001");    
  133.             if(list!=null

    相關推薦

    c#生成條形碼

    pac space content for enc txt direct line draw 一、生成EAN13的一維碼 // 1.設置條形碼規格 EncodingOptions encodeOption = new EncodingOptions(); encodeOp

    Java使用barcode4j生成條形碼

    new [] generate redirect eba app ray format runtime 1、將要使用到的jar包導入項目(1、commons-lang-2.3.jar 2、barcode4j-light-2.0.jar) 2、新建類 BarcodeUt

    php生成條形碼: barcodegen

    isp 下載 orm osi lena ext .net embed cal 實例結構: 1. index.html <!DOCTYPE html> <html> <head> <title>Test with em

    史上最簡潔C# 生成條形碼圖片思路及示例分享

    else 應用 align current 有一個 += 類別 num namespace 在網上看到一些人寫關於條形碼的代碼都很長,有的甚至拿來賣,所以查了下資料,希望能對大家有幫助。 我的實現原理是: 其實Windows本身就有一個字體是用來顯示條形碼的。 只要將數字

    C#實現用於生成條形碼的類

    clas res ssi win 聲明 plugin 鏈表 用法 style 本文實例講述了C#實現用於生成條形碼的類。分享給大家供大家參考。具體如下: 這個C#類可以用來生成39碼 12位標準條形碼using System.Collections; using Syst

    PHP 生成條形碼

    ret private 文件名 content rom head elf span truct <?php class BarCode128 { const STARTA = 103; const STARTB = 104; con

    Java之生成條形碼、PDF、HTML

    fort ges version lba oat 模型 base64 xsd solver 關於Java生成HTML,可參考我的這篇文章:FreeMarker之根據模型生成HTML代碼 當然了,該篇文章也會給你很多啟發,比如,根據html生成html,大家不要小看這個,著名

    vue使用jsbarcode生成條形碼

    1、安裝jsbarcode外掛 npm install jsbarcode --save 2、js匯入 import JsBarcode from 'jsbarcode' 3、呼叫方法生成 barcode () { JsBarcode("#barcode", "Hi

    php barcode 生成條形碼

    <?php // Including all required classes require_once('class/BCGFontFile.php'); require_once('class/BCGColor.php'); require_once('class/BCGDrawing

    列印頁面 訂單號生成 條形碼

    1.所用外掛JsBarcode 2.下載地址:https://github.com/lindell/JsBarcode 3.用法: <script> JsBarcode("#JsBarcode", "123", { format: "CODE39",//選擇要使用的條形碼型別

    JBarcode生成條形碼(帶漢字)

     JBarcode生成條形碼(帶漢字);請注意Maven裡面現在沒有這個jar報的依賴,需要自己下載,並手動匯入Maven import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; impo

    thinkphp5 Barcodegen 生成條形碼

    自己的資源包:https://download.csdn.net/download/qq_27229113/10689077 官方庫所需庫下載地址:https://www.barcodebakery.com/en/resources/api/php/databarexpanded 

    12行程式碼教會你用python讀excel檔案,提取資料,生成條形碼

      一、需求分析 條形碼應用廣泛,尤其是人事、財務和庫管等等崗位,常需根據excel檔案成批生成條碼,如果是經常性天天做,用excel的自己控制元件還是很枯燥煩人的。 當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢?  

    Android 生成條形碼 生成下方帶文字的條形碼

    可以使用Zxing來獲得條形碼的bitmap. 1.繪製帶有文字的條形碼 由於直接不能繪製出帶有文字的條形碼. 我想到的解決方案是 需要繪製的條形碼的高度的 3/4給條形碼 1/4給文字. 先繪製條形碼 得到bitmap 在建立bitmap 在底部繪製文字,合併兩個bitma

    vue中生成條形碼

    //安裝條形碼外掛 npm install @xkeshi/vue-barcode 在main.js中引入 import VueBarcode from '@xkeshi/vue-barcode'; //匯入條形碼外掛 Vue.component('barcode',

    10行程式碼教你用Python掃描Excel表格,自動生成條形碼

      一、需求分析 條形碼應用廣泛,尤其是人事、財務和庫管等等崗位,常需根據excel檔案成批生成條碼,如果是經常性天天做,用excel的自己控制元件還是很枯燥煩人的。 當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢? 學習Python

    zxing 生成條形碼

    private Bitmap Out1DImg() { // 1.設定條形碼規格 EncodingOptions encodeOption = new EncodingOptions(); encodeOp

    tp3.2 生成條形碼

    //條形碼     public function barcodegen()     {    //vendor 資料夾下面         vendor('barcodegen.class.BC

    java使用jbarcode生成條形碼

    準備工作: 開發工具:eclipse4.5+jdk1.7 所需jar包:jbarcode-0.2.8.jar 案例: package jbarcode;     import java.awt.Color;   import java.awt.Font;

    生成條形碼顯示到介面

    <span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">