iText生成条形码与二维码

来源:互联网 发布:少女内裤品牌 知乎 编辑:程序博客网 时间:2024/05/04 05:18
/** * * @author Chen Yi <njchenyi@gmail.com> */import java.io.FileOutputStream;import java.io.IOException; import com.itextpdf.text.BaseColor;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.Image;import com.itextpdf.text.Paragraph;import com.itextpdf.text.Rectangle;import com.itextpdf.text.pdf.Barcode;import com.itextpdf.text.pdf.Barcode128;import com.itextpdf.text.pdf.Barcode39;import com.itextpdf.text.pdf.BarcodeCodabar;import com.itextpdf.text.pdf.BarcodeDatamatrix;import com.itextpdf.text.pdf.BarcodeEAN;import com.itextpdf.text.pdf.BarcodeEANSUPP;import com.itextpdf.text.pdf.BarcodeInter25;import com.itextpdf.text.pdf.BarcodePDF417;import com.itextpdf.text.pdf.BarcodePostnet;import com.itextpdf.text.pdf.BarcodeQRCode;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfContentByte;import com.itextpdf.text.pdf.PdfWriter; public class Barcodes {     /** The resulting PDF. */    private static final String RESULT = "barcodes.pdf";     /**     * Generates a PDF file with different types of barcodes.     *      * @param args     *            no arguments needed here     * @throws DocumentException     * @throws IOException     */    public static void main(String[] args) throws IOException,            DocumentException {        new Barcodes().createPdf(RESULT);    }         /**     * Creates a PDF document.     * @param filename the path to the new PDF document     * @throws    DocumentException      * @throws    IOException     */    public void createPdf(String filename) throws IOException, DocumentException {        BaseFont bf = null;        Font fontChinese = null;        try {            //使用iTextAsian.jar中的字体            bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);            //使用Windows系统字体(TrueType)//            BaseFont.createFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);            //使用资源字体(ClassPath)//            BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);            fontChinese = new Font(bf, 12, Font.NORMAL);        } catch (DocumentException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }                // step 1        Document document = new Document(new Rectangle(340, 842));        // step 2        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));        // step 3        document.open();        // step 4        PdfContentByte cb = writer.getDirectContent();                 document.add(new Paragraph("陈轶 njchenyi@gmail.com",fontChinese));        // EAN 13        document.add(new Paragraph("Barcode EAN.UCC-13"));        BarcodeEAN codeEAN = new BarcodeEAN();        codeEAN.setCode("4512345678906");        document.add(new Paragraph("default:"));        document.add(codeEAN.createImageWithBarcode(cb, null, null));        codeEAN.setGuardBars(false);        document.add(new Paragraph("without guard bars"));        document.add(codeEAN.createImageWithBarcode(cb, null, null));        codeEAN.setBaseline(-1f);        codeEAN.setGuardBars(true);        document.add(new Paragraph("text above:"));        document.add(codeEAN.createImageWithBarcode(cb, null, null));        codeEAN.setBaseline(codeEAN.getSize());         // UPC A        document.add(new Paragraph("Barcode UCC-12 (UPC-A)"));        codeEAN.setCodeType(Barcode.UPCA);        codeEAN.setCode("785342304749");        document.add(codeEAN.createImageWithBarcode(cb, null, null));         // EAN 8        document.add(new Paragraph("Barcode EAN.UCC-8"));        codeEAN.setCodeType(Barcode.EAN8);        codeEAN.setBarHeight(codeEAN.getSize() * 1.5f);        codeEAN.setCode("34569870");        document.add(codeEAN.createImageWithBarcode(cb, null, null));         // UPC E        document.add(new Paragraph("Barcode UPC-E"));        codeEAN.setCodeType(Barcode.UPCE);        codeEAN.setCode("03456781");        document.add(codeEAN.createImageWithBarcode(cb, null, null));        codeEAN.setBarHeight(codeEAN.getSize() * 3f);         // EANSUPP        document.add(new Paragraph("Bookland"));        document.add(new Paragraph("ISBN 0-321-30474-8"));        codeEAN.setCodeType(Barcode.EAN13);        codeEAN.setCode("9781935182610");        BarcodeEAN codeSUPP = new BarcodeEAN();        codeSUPP.setCodeType(Barcode.SUPP5);        codeSUPP.setCode("55999");        codeSUPP.setBaseline(-2);        BarcodeEANSUPP eanSupp = new BarcodeEANSUPP(codeEAN, codeSUPP);        document.add(eanSupp.createImageWithBarcode(cb, null, BaseColor.BLUE));         // CODE 128        document.add(new Paragraph("Barcode 128"));        Barcode128 code128 = new Barcode128();        code128.setCode("0123456789 hello");        document.add(code128.createImageWithBarcode(cb, null, null));        code128.setCode("0123456789\uffffMy Raw Barcode (0 - 9)");        code128.setCodeType(Barcode.CODE128_RAW);        document.add(code128.createImageWithBarcode(cb, null, null));         // Data for the barcode :        String code402 = "24132399420058289";        String code90 = "3700000050";        String code421 = "422356";        StringBuffer data = new StringBuffer(code402);        data.append(Barcode128.FNC1);        data.append(code90);        data.append(Barcode128.FNC1);        data.append(code421);        Barcode128 shipBarCode = new Barcode128();        shipBarCode.setX(0.75f);        shipBarCode.setN(1.5f);        shipBarCode.setSize(10f);        shipBarCode.setTextAlignment(Element.ALIGN_CENTER);        shipBarCode.setBaseline(10f);        shipBarCode.setBarHeight(50f);        shipBarCode.setCode(data.toString());        document.add(shipBarCode.createImageWithBarcode(cb, BaseColor.BLACK,                BaseColor.BLUE));         // it is composed of 3 blocks whith AI 01, 3101 and 10        Barcode128 uccEan128 = new Barcode128();        uccEan128.setCodeType(Barcode.CODE128_UCC);        uccEan128.setCode("(01)00000090311314(10)ABC123(15)060916");        document.add(uccEan128.createImageWithBarcode(cb, BaseColor.BLUE,                BaseColor.BLACK));        uccEan128.setCode("0191234567890121310100035510ABC123");        document.add(uccEan128.createImageWithBarcode(cb, BaseColor.BLUE,                BaseColor.RED));        uccEan128.setCode("(01)28880123456788");        document.add(uccEan128.createImageWithBarcode(cb, BaseColor.BLUE,                BaseColor.BLACK));         // INTER25        document.add(new Paragraph("Barcode Interleaved 2 of 5"));        BarcodeInter25 code25 = new BarcodeInter25();        code25.setGenerateChecksum(true);        code25.setCode("41-1200076041-001");        document.add(code25.createImageWithBarcode(cb, null, null));        code25.setCode("411200076041001");        document.add(code25.createImageWithBarcode(cb, null, null));        code25.setCode("0611012345678");        code25.setChecksumText(true);        document.add(code25.createImageWithBarcode(cb, null, null));         // POSTNET        document.add(new Paragraph("Barcode Postnet"));        BarcodePostnet codePost = new BarcodePostnet();        document.add(new Paragraph("ZIP"));        codePost.setCode("01234");        document.add(codePost.createImageWithBarcode(cb, null, null));        document.add(new Paragraph("ZIP+4"));        codePost.setCode("012345678");        document.add(codePost.createImageWithBarcode(cb, null, null));        document.add(new Paragraph("ZIP+4 and dp"));        codePost.setCode("01234567890");        document.add(codePost.createImageWithBarcode(cb, null, null));         document.add(new Paragraph("Barcode Planet"));        BarcodePostnet codePlanet = new BarcodePostnet();        codePlanet.setCode("01234567890");        codePlanet.setCodeType(Barcode.PLANET);        document.add(codePlanet.createImageWithBarcode(cb, null, null));         // CODE 39        document.add(new Paragraph("Barcode 3 of 9"));        Barcode39 code39 = new Barcode39();        code39.setCode("ITEXT IN ACTION");        document.add(code39.createImageWithBarcode(cb, null, null));         document.add(new Paragraph("Barcode 3 of 9 extended"));        Barcode39 code39ext = new Barcode39();        code39ext.setCode("iText in Action");        code39ext.setStartStopText(false);        code39ext.setExtended(true);        document.add(code39ext.createImageWithBarcode(cb, null, null));         // CODABAR        document.add(new Paragraph("Codabar"));        BarcodeCodabar codabar = new BarcodeCodabar();        codabar.setCode("A123A");        codabar.setStartStopText(true);        document.add(codabar.createImageWithBarcode(cb, null, null));         // PDF417        document.add(new Paragraph("Barcode PDF417"));        BarcodePDF417 pdf417 = new BarcodePDF417();        String text = "Call me Ishmael. Some years ago--never mind how long "            + "precisely --having little or no money in my purse, and nothing "            + "particular to interest me on shore, I thought I would sail about "            + "a little and see the watery part of the world.";        pdf417.setText(text);        Image img = pdf417.getImage();        img.scalePercent(50, 50 * pdf417.getYHeight());        document.add(img);         document.add(new Paragraph("Barcode Datamatrix"));        BarcodeDatamatrix datamatrix = new BarcodeDatamatrix();        datamatrix.generate(text);        img = datamatrix.createImage();        document.add(img);         document.add(new Paragraph("Barcode QRCode"));        BarcodeQRCode qrcode = new BarcodeQRCode("Moby Dick by Herman Melville", 1, 1, null);        img = qrcode.getImage();        document.add(img);         // step 5        document.close();    }}


生成barcode的代码主要都是源于iText官网上提供的样例代码,不过使用中文标签的时候就会出现中文部分为空白的情况。

结合其他在iText中使用中文的情况,首先需要下载itext-asian.jar文件,然后加入到项目类路径。

 

 

0 0