1、添加maven依赖
com.itextpdf
itextpdf
5.5.13.1
org.apache.pdfbox
pdfbox
2.0.16
2.1、通过模板生成PDF文件
package com.hlwl.common.util;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import org.apache.commons.lang3.RandomUtils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* PDF工具类
* @class com.hlwl.common.util.PdfUtil.java
* @author happyran
* @since 2019-09-09 09:09
*/
public class PdfUtil {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
/**
* 根据模板生成PDF
* @param tempPdfPath
* @param data
*/
public static void createPdf(String tempPdfPath, Map data){
//填充创建pdf
PdfReader reader = null;
PdfStamper stamp = null;
try {
//创建生成报告名称
if (!new File(tempPdfPath).exists()) {
new File(tempPdfPath).mkdirs();
}
File deskFile = new File(tempPdfPath, sdf.format(new Date()) + RandomUtils.nextInt(1000,9999) + ".pdf");
reader = new PdfReader("D:\\pdfTest\\a.pdf");
stamp = new PdfStamper(reader, new FileOutputStream(deskFile));
// 取出报表模板中的所有字段
AcroFields form = stamp.getAcroFields();
BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1" , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
form.addSubstitutio