1 public static void creatPdf(Mapmap,String filePath) {2 try{3 BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1", BaseFont.IDENTITY_H,4 BaseFont.EMBEDDED);5 FileOutputStream out = new FileOutputStream(filePath);//输出流
6 PdfReader reader = new PdfReader(TemplateToWord.class.getResource("/com/cn/business/templates/report.pdf"));//读取pdf模板
7 ByteArrayOutputStream bos = newByteArrayOutputStream();8 PdfStamper stamper = newPdfStamper(reader, bos);9 stamper.setFormFlattening(true);10 AcroFields form =stamper.getAcroFields();11 //文字类的内容处理
12 Map datemap = (Map) map.get("datemap");13 form.addSubstitutionFont(bf);14 for(String key : datemap.keySet()) {15 String value =datemap.get(key);16 form.setField(key, value);17 }18 //图片类的内容处理
19 Map imgmap = (Map) map.get("imgmap");20 for(String key : imgmap.keySet()) {21 String value =imgmap.get(key);22 String imgpath =value;23 int pageNo = form.getFieldPositions(key).get(0).page;24 Rectangle signRect = form.getFieldPositions(key).get(0).position;25 float x =signRect.getLeft();26 float y =signRect.getBottom();27 //根据路径读取图片
28 Image image =Image.getInstance(imgpath);29 //获取图片页面
30 PdfContentByte under =stamper.getOverContent(pageNo);31 //图片大小自适应
32 image.scaleToFit(signRect.getWidth(), signRect.getHeight());33 //添加图片
34 image.setAbsolutePosition(x, y);35 under.addImage(image);36 }37 //表格类
38 Map>> listMap = (Map>>) map.get("list");39 for(String key : listMap.keySet()) {40 List> lists =listMap.get(key);41 int pageNo = form.getFieldPositions(key).get(0).page;42 PdfContentByte pcb =stamper.getOverContent(pageNo);43 Rectangle signRect = form.getFieldPositions(key).get(0).position;44 //表格位置
45 int column = lists.get(0).size();46 int row =lists.size();47 PdfPTable table = newPdfPTable(column);48 float tatalWidth = signRect.getRight() - signRect.getLeft() - 1;49 int size = lists.get(0).size();50 float width[] = new float[size];51 for(int i=0;i
65 for(int i=0;i list =lists.get(i);67 for(int j=0;j
80 stamper.close();81 Document doc = newDocument();82 PdfCopy copy = newPdfCopy(doc, out);83 doc.open();84 int pageNum =reader.getNumberOfPages();85 for(int i = 1;i <= pageNum;i++){86 PdfImportedPage importPage = copy.getImportedPage(newPdfReader(bos.toByteArray()), i);87 copy.addPage(importPage);88 }89 doc.close();90 } catch(IOException e) {91 System.out.println(e);92 } catch(DocumentException e) {93 System.out.println(e);94 }95
96 }