废话不多说,直接上代码
package com.forerun.qrcode.util;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.*;
import fr.opensagres.xdocreport.core.logging.LogUtils;
import java.io.*;
public class PdfAddImage {
public String padAddImagePage(){
String pdfPath = "D:\\PDF_testPDF.pdf";
String imagePath = "D:\\ideaProject20200390e82114547a06479299d289d0e992c252.png";
String url = "";
InputStream input = null;
try {
input = new FileInputStream(new File(pdfPath));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
// 读取模板文件
PdfReader reader = new PdfReader(input);
System.out.println(reader.getNumberOfPages());
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(pdfPath));
Document document = new Document();
// 获取页面宽度
/*
* float absolutePositionNewX =
* document.getPageSize().getWidth()-300;
*/
// 获取页面高度
// float absolutePositionNewY = document.getPageSize().getHeight() - 150;
// document.setPageSize()
System.out.println(document.getPageSize());
System.out.println(document.getPageSize().getHeight());
float absolutePositionNewY = document.getPageSize().getHeight() - 150;
// X轴位置的值
float absolutePositionNewX = 380;
// 图片缩放的比例值
float scalePercent = 50;
// 提取pdf中的表单
AcroFields form = stamper.getAcroFields();
form.addSubstitutionFont(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED));
// 根据地址读图片
Image image = Image.getInstance(imagePath); // 读取图片地址
image.setAbsolutePosition(absolutePositionNewX, absolutePositionNewY);// 二维码的位置
image.scalePercent(scalePercent); // 图片缩放的比例
// 获取pdf页码数
int total = reader.getNumberOfPages();
PdfContentByte content;
//为每页 添加图片
for(int i=1;i<=total;i++){
content = stamper.getOverContent(i);
content.addImage(image);
}
//二维码换行
if (absolutePositionNewX > 380.0) {
// X轴从30开始
absolutePositionNewX = 80;
// Y轴换行
absolutePositionNewY = absolutePositionNewY - 100;
} else {
// X轴换列
absolutePositionNewX = absolutePositionNewX + 100;
}
stamper.close();
reader.close();
return url;
} catch (Exception e) {
LogUtils.getLogger(e.getMessage());
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
PdfAddImage pdfAddImage = new PdfAddImage();
pdfAddImage.padAddImagePage();
}
}
参考链接: link.