package cn.teammodel.utils; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.AcroFields; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import org.springframework.core.io.ClassPathResource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; /** * @author winter * @create 2024-01-24 16:02 */ public class PdfUtil { public static void fillStudentPdfForm(Map data, HttpServletResponse response) throws IOException, DocumentException { response.reset(); response.setContentType("application/pdf"); response.setHeader("Content-disposition", "attachment;filename=report_student_" + System.currentTimeMillis() + ".pdf"); ClassPathResource resource = new ClassPathResource("templates/pdf_templates/template.pdf"); InputStream in = resource.getInputStream(); ServletOutputStream os = response.getOutputStream(); fillPdfForm(in, os, data); } public static void fillPdfForm(InputStream in, OutputStream os, Map data) throws IOException, DocumentException { PdfReader pdfReader = new PdfReader(in); PdfStamper stamper = new PdfStamper(pdfReader, os); AcroFields fields = stamper.getAcroFields(); for (Map.Entry entry : data.entrySet()) { fields.setField(entry.getKey(), entry.getValue()); } stamper.setFormFlattening(true); stamper.close(); os.close(); } }