package com.kingdee.eas.custom.shengshen.utils; import com.itextpdf.text.pdf.AcroFields; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.Map; public class PDFFillInformationUtil { /** * 给pdf填充数据 * @param fileName 原始文件名 * @param field map key 为字段名,value 为填充值 * @return 填充后的文件 文件类型为byte[] */ public byte[] fillInformation(String fileName, Map field) throws IOException { //http://169.254.157.139:6888/easWebClient/download/DSF_Mod_373.pdf String url = "http://169.254.157.139:6888/easWebClient/download/"+fileName; byte[] bytesByNetURL = HttpClient3.getBytesByNetURL(url); try { System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); // 读取PDF模板 PdfReader pdfReader = new PdfReader(bytesByNetURL); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 创建需就改PDF文件 PdfStamper pdfStamper = new PdfStamper(pdfReader, baos); AcroFields form = pdfStamper.getAcroFields(); // 设置字段数据 Iterator> iterator = field.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); String key = entry.getKey(); String value = entry.getValue(); //给字段添加值 form.setField(key, value); } //生成后的pdf 可以在编辑 pdfStamper.setFormFlattening(false); // 关闭修改器,并释放资源 pdfStamper.close(); pdfReader.close(); return baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("pdf 填充数据失败!!"); } } }