zoukankan      html  css  js  c++  java
  • Java 添加条码、二维码到PDF文档

    本文介绍如何通过Java程序在PDF文档中添加条码和二维码。创建条码时,可创建多种不同类型的条码,包括Codebar、Code11、Code128A、Code128B、Code32、Code39、Code39 Extended 、Code93和Code93 Extended等等,本文以其中的Codebar、Code128A和Code39为例介绍创建方法,可通过参考此方法创建其他类型的条码。

    本文中的程序测试环境包括:

    • IDEA
    • JDK 1.8.0
    • Spire.Office.jar

     

    :jar导入,可通过创建Maven程序项目,并在pom.xml中配置Maven仓库路径,并指定Free Spire.Office for Java的Maven依赖,点击“Import Changes”即可导入JAR包。(如果使用的Eclipse, 点击保存按钮导入),配置如下:

    <repositories>
            <repository>
                <id>com.e-iceblue</id>
                <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
            </repository>
    </repositories>
    
    <dependencies>
        <dependency>
          <groupId>e-iceblue</groupId>
          <artifactId>spire.office.free</artifactId>
          <version>3.1.1</version>
        </dependency>
    </dependencies>

    另外,也可通过下载jar包,手动导入Spire.Office.jar到Java程序。

    Java代码

    import com.spire.barcode.*;
    import com.spire.pdf.*;
    import com.spire.pdf.barcode.*;
    import com.spire.pdf.graphics.*;
    
    import java.awt.*;
    import java.awt.geom.Point2D;
    import java.awt.image.BufferedImage;
    
    
    public class AddBarcodeInPDF {
        public static void main(String[] args) {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
    
            //添加一页
            PdfPageBase page = pdf.getPages().add();
    
            //初始化y变量
            double y = 15;
    
            //创建字体
            PdfFont font= new PdfFont(PdfFontFamily.Helvetica, 12,PdfFontStyle.Bold);
    
            // 绘制文本“Codebar:”到PDF,并绘制Codebar条码到PDF
            PdfTextWidget text = new PdfTextWidget();
            text.setFont(font);
            text.setText("Codebar:");
            PdfLayoutResult result = text.draw(page, 0, y);
            y =(float)(result.getBounds().getY()+ result.getBounds().getHeight() + 2);
            PdfCodabarBarcode codebar= new PdfCodabarBarcode("00:12-3456/7890");//创建条码
            codebar.setBarcodeToTextGapHeight(1f);
            codebar.setBarHeight(25f);
            codebar.setEnableCheckDigit(true);
            codebar.setShowCheckDigit(true);
            codebar.setTextDisplayLocation(TextLocation.Bottom);
            PdfRGBColor blue = new PdfRGBColor(Color.blue);
            codebar.setTextColor(blue);
            Point2D.Float point = new Point2D.Float();
            point.setLocation(0,y);
            codebar.draw(page,point);//绘制条码到PDF页面
            y = codebar.getBounds().getY()+ codebar.getBounds().getHeight() + 5;
    
            //绘制文本“Code128-A:”到PDF,并绘制Code128A条码到PDF
            text.setText("Code128-A:");
            result = text.draw(page, 0, y);
            page = result.getPage();
            y =result.getBounds().getY()+ result.getBounds().getHeight() + 2;
            PdfCode128ABarcode code128 = new PdfCode128ABarcode("HELLO 00-123");
            code128.setBarcodeToTextGapHeight(1f);
            code128.setBarHeight(25f);
            code128.setTextDisplayLocation(TextLocation.Bottom);
            code128.setTextColor(blue);
            point.setLocation(point.x,y);
            code128.draw(page, point);
            y =code128.getBounds().getY()+ code128.getBounds().getHeight() + 5;
    
            //绘制文本“Code39”到PDF,绘制Code39条形码到PDF
            text.setText("Code39:");
            result = text.draw(page, 0, y);
            page = result.getPage();
            y =result.getBounds().getY()+ result.getBounds().getHeight() + 2;
            PdfCode39Barcode code39 = new PdfCode39Barcode("16-273849");//绘制条码
            code39.setBarcodeToTextGapHeight(1f);
            code39.setBarHeight(25f);
            code39.setTextDisplayLocation(TextLocation.Bottom);
            code39.setTextColor(blue);
            point.setLocation(point.x,y);
            code39.draw(page, point);//绘制条码到PDF页面
    
            //生成二维码图片,绘制到PDF页面
            text.setText("QRCode:");//绘制文本“QR Code:”到PDF
            result = text.draw(page, 200, 0);
            page = result.getPage();
            BarcodeSettings settings = new BarcodeSettings();//创建二维码图形
            settings.setType(BarCodeType.QR_Code);
            settings.setData("123456789");
            settings.setData2D("123456789");
            settings.setX(1f);
            settings.setLeftMargin(0);
            settings.setShowTextOnBottom(true);
            settings.setQRCodeECL(QRCodeECL.Q);
            settings.setQRCodeDataMode(QRCodeDataMode.Numeric);
            BarCodeGenerator generator = new BarCodeGenerator(settings);
            Image image = generator.generateImage();
            PdfImage pdfImage = PdfImage.fromImage((BufferedImage)image);//绘制二维码图片到PDF
            y = result.getBounds().getY()+ result.getBounds().getHeight() + 2;
            page.getCanvas().drawImage(pdfImage,200,y);
    
            //保存PDF文档
            pdf.saveToFile("添加条码、二维码.pdf");
            pdf.dispose();
        }
    }

    条码、二维码添加效果图:

    (完)

  • 相关阅读:
    warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
    warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
    535 5.7.8 Error: authentication failed: generic failure安装EMOS时SMTP测试报错
    mysql-libs版本冲突卸载不了
    history
    CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
    chkconfig
    Linux主机名域名修改问题
    Mysql正常启动之后默认使用的文件
    解决mysql“Access denied for user 'root'@'localhost'”
  • 原文地址:https://www.cnblogs.com/Yesi/p/13539742.html
Copyright © 2011-2022 走看看