最近要做一个功能
1、生成PDF417条形码。
2、识别PDF417条形码。
3、把条码插入到word文档的最有一页。
目前做好的只有第一点。
用到的一个jar包是 iText.jar
PS:这个功能是正对机关单位的,机关单位的二维条码有一个公共的规则《机关公文二维条码使用规范细则》
具体规则见附件。
其实生成二维条码的代码很简单。下面贴上生成二维条码的代码
class="java" name="code">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) ,直接把字符串丢进去,结果中文完全不能写进去。