参考资料:www.cnblogs.com/wangpeng00700/p/8418594.html
概括:
根据不同的流程实体类并且通过在实体类字段上加上注解,通过反射拿到实体类的注解属性和属性值,通过属性值判断是什么类型的数据,依次给pdf模板中的不同类型的占位符赋值,打印此流程的pdf。
所需依赖:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.4.3</version> </dependency>
上代码:
package com.example.demo.utils;
/**
* @ClassName:PDFUtils
* @Package:com.example.demo.utils
* @Description: com.example.demo.utils.PDFUtils:
* @date:2022/2/24 10:27
* @author:bsm
*/
import com.example.demo.PDFFill;
import com.example.demo.TestPojo;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import lombok.extern.slf4j.Slf4j;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
public class PdfUtils {
public static String toPDF(int flowType, Object data) {
Map<String, String> datamap = new HashMap();
Map<String, String> imgmap = new HashMap();
Map<String, Object> resultMap = new HashMap();
String templatePath = "";
String newPDFPath = "";
if(System.getProperty("os.name").toLowerCase().contains("win")){
templatePath = "E:\\shengtingPDF\\src\\main\\resources\\pdflocation\\"+ flowType +".pdf";
newPDFPath = "E:\\shengtingPDF\\src\\main\\resources\\pdflocation\\"+ flowType +"out.pdf";
}else{
templatePath = "/home/pdflocation/"+ flowType +".pdf";