| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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<String,String> key 为字段名,value 为填充值
- * @return 填充后的文件 文件类型为byte[]
- */
- public byte[] fillInformation(String fileName, Map<String,String> 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<Map.Entry<String, String>> iterator = field.entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, String> 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 填充数据失败!!");
- }
- }
- }
|