バーコードの画像を作りたい
どうも。
いち、プログラマのyu1rowです。
Javaでバーコードを作るのに手っ取り早い方法を探してみたんですが、iTextでうまくいきましたので、備忘録を残します。
PNGファイルに保存するサンプルソース
今回使用したiTextのバージョンは2.1.7です。
ちょっと長いのでソースを折りたたんでます。
package com.yu1row.blog;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.imageio.ImageIO;
import com.lowagie.text.pdf.Barcode;
import com.lowagie.text.pdf.Barcode128;
import com.lowagie.text.pdf.Barcode39;
import com.lowagie.text.pdf.BarcodeCodabar;
import com.lowagie.text.pdf.BarcodeDatamatrix;
import com.lowagie.text.pdf.BarcodeEAN;
import com.lowagie.text.pdf.BarcodeInter25;
import com.lowagie.text.pdf.BarcodePDF417;
import com.lowagie.text.pdf.BarcodePostnet;
public class MakeBarcode {
private static final Color COLOR_FORE = Color.BLACK;
private static final Color COLOR_BACK = Color.WHITE;
private static final String CODE_CODE128 = "yu1row.com";
private static final String CODE_CODE39 = "YU1ROW.COM";
private static final String CODE_CODEBAR = "A12345B";
private static final String CODE_DATAMATRIX = "DATAMATRIX!";
private static final String CODE_EAN = "49111111111111";
private static final String CODE_INTER25 = "1234";
private static final String CODE_PDF417 = "yu1row.com";
private static final String CODE_POSTNET = "555551234";
public static void main(String[] args) {
make(new Barcode128(), CODE_CODE128, "CODE128.png");
make(new Barcode39(), CODE_CODE39, "CODE39.png");
make(new BarcodeCodabar(), CODE_CODEBAR, "CODEBAR.png");
make(new BarcodeDatamatrix(), CODE_DATAMATRIX, "DATAMATRIX.png");
make(new BarcodeEAN(), CODE_EAN, "EAN.png");
make(new BarcodeInter25(), CODE_INTER25, "INTER25.png");
make(new BarcodePDF417(), CODE_PDF417, "PDF417.png");
make(new BarcodePostnet(), CODE_POSTNET, "POSTNET.png");
}
private static boolean make(Barcode barcode, String code, String fileName) {
barcode.setCode(code);
return writeToPngFile(barcode.createAwtImage(COLOR_FORE, COLOR_BACK), fileName);
}
private static boolean make(BarcodeDatamatrix barcode, String code, String fileName) {
try {
barcode.generate(code);
return writeToPngFile(barcode.createAwtImage(COLOR_FORE, COLOR_BACK), fileName);
} catch (UnsupportedEncodingException e) {
return false;
}
}
private static boolean make(BarcodePDF417 barcode, String code, String fileName) {
barcode.setText(code);
return writeToPngFile(barcode.createAwtImage(COLOR_FORE, COLOR_BACK), fileName);
}
private static boolean writeToPngFile(Image image, String fileName) {
// ImageをBufferedImageに変換
BufferedImage bimg = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g = bimg.getGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
// BufferedImageをファイルに保存
try {
ImageIO.write(bimg, "PNG", new File(fileName));
} catch (IOException e) {
return false;
}
return true;
}
}
日本でよく使われるのってあんまり無いですけどね。
実装が面倒な色々の手間が省けて良いと思います。
0 件のコメント:
コメントを投稿