java生成PDF417条码

阅读更多

最近要做一个功能

1、生成PDF417条形码。

2、识别PDF417条形码。

3、把条码插入到word文档的最有一页。

目前做好的只有第一点。

用到的一个jar包是 iText.jar

PS:这个功能是正对机关单位的,机关单位的二维条码有一个公共的规则《机关公文二维条码使用规范细则》

具体规则见附件

其实生成二维条码的代码很简单。下面贴上生成二维条码的代码

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.font.FontRenderContext;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.pdf.BarcodePDF417;


public class BarcodeDemo {

	public static void main(String[] args) throws IOException, BadElementException {
		createPdf417();
		
	}
	
	private static final String codeString = "GB0626-2005^GD000014001300000871^广东省**单位^通知^粤**函〔2013〕1**号^**单位^***标题^无^无^20131031^^打字室^20131031^^|";

	
	
	public static void createPdf417()throws IOException{
		BarcodePDF417 pdf = new BarcodePDF417();
        pdf.setText(codeString.getBytes("GBK"));
        Image pdfImg = pdf.createAwtImage(Color.black, Color.white);
        BufferedImage img = new BufferedImage((int)pdfImg.getWidth(null), (int)pdfImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
        Graphics g = img.getGraphics();
        
        g.drawImage(pdfImg, 0, 0, Color.white, null);
        OutputStream os = new BufferedOutputStream(new FileOutputStream("d:/pdf417.bmp"));
        ImageIO.write(img, "PNG", os);
	}

	
}

 在写这段代码的时候 主要出现的问题是,如果内容中存在中文的时候

必须使用pdf.setText(byte[])这个方法对BarcodePDF417进行初始化。

我之前用的是pdf.setText(String) ,直接把字符串丢进去,结果中文完全不能写进去。

  • 机关公文二维条码使用规范细则.rar (7.4 KB)
  • 下载次数: 41

你可能感兴趣的:(java,pdf417,iText)