- 依托e-iceblue工具完成
官网:https://www.e-iceblue.cn/tutorials.html
本文参考:https://www.e-iceblue.cn/pdf_java_barcode/add-qrcode-in-pdf-using-java.html
注意:e-iceblue分为收费版本以及免费版本,(jar包版本)。本人已知3.1.1是免费版本
<!-- https://mvnrepository.com/artifact/e-iceblue/spire.office.free -->
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>3.1.1</version>
</dependency>
另,3.9.0好像也是免费版本
- 引入依赖包
<!-- https://mvnrepository.com/artifact/e-iceblue/spire.office.free -->
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>3.1.1</version>
</dependency>
只引入上面这个包,还不行,pom会报错。还需在pom中引入如下内容:
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
如图:
- 编码
package com.xl.qrcode;
import com.spire.barcode.*;
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImage;
import java.awt.*;
import java.awt.image.BufferedImage;
/**
* API参考e-iceblue官网:https://www.e-iceblue.cn/api_reference/spire_pdf_for_java_api_reference.html
* @author Administrator
* */
public class AddQRCode {
public static void main(String[] args) {
//创建PdfDocument实例,添加一页到PDF
PdfDocument pdf = new PdfDocument();
PdfPageBase page = pdf.getPages().add();
//创建二维码
BarcodeSettings settings = new BarcodeSettings();
settings.setType(BarCodeType.QR_Code);
settings.setData("https://www.baidu.com");
settings.setData2D("扫一扫 咨询专家");
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();
//绘制二维码图片到PDF页面指定位置
PdfImage pdfImage = PdfImage.fromImage((BufferedImage)image);
page.getCanvas().drawImage(pdfImage,100,0);
//保存PDF文档
pdf.saveToFile("G:\\tst\\添加二维码.pdf");
pdf.dispose();
}
}
注意,API注释文档可参考:
https://www.e-iceblue.cn/api_reference/spire_pdf_for_java_api_reference.html
- 运行结果
打开
使用手机扫码:
- 如上,成功!,项目中可根据实际情况结合API调整代码。