- 首先添加依赖,版本要一致,这里是个坑,不然会出现字体无法识别的情况
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.2.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version>
java代码
/** * 导出PDF文件 java项目 www.fhadmin.org * @param orkQ * @param request * @param response * @return */ @ResponseBody @RequestMapping(value = "exportPdf") public AjaxJson exportPdf(orkQ orkQ, HttpServletRequest request, HttpServletResponse response) throws Exception { AjaxJson j = new AjaxJson(); Page<orkQ> page = orkQService.findPage(new Page<orkQ>(request, response, -1), orkQ); List<orkQ> list = page.getList(); // 第一步,实例化一个document对象 Document document = new Document(new RectangleReadOnly(842F, 595F)); // 第二步,设置要到出的路径 // 第二步,设置要到出的路径 //FileOutputStream out = new FileOutputStream("D:/workbook111.pdf"); //如果是浏览器通过request请求需要在浏览器中输出则使用下面方式 OutputStream out = response.getOutputStream(); // 第三步,设置字符 BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false); Font fontZH = new Font(bfChinese, 12.0F, 0); // 第四步,将pdf文件输出到磁盘 PdfWriter writer = PdfWriter.getInstance(document, out); // 第五步,打开生成的pdf文件 document.open(); // 第六步,设置内容 String title = "IT事"; try { Paragraph elements = new Paragraph(title, fontZH); elements.setAlignment(Paragraph.TITLE); document.add(elements); // document.add(new Paragraph(new Chunk(title,fontZH).setLocalDestination(title))); document.add(new Paragraph("\n")); } catch (DocumentException e) { e.printStackTrace(); } // 添加图片 /*Image image = Image.getInstance("图片路径"); image.setAlignment(Image.ALIGN_CENTER); image.scalePercent(40); //依照比例缩放 //image.setAbsolutePosition(40,60); document.add(image);*/ // 创建table,注意这里的3是三列的意思,下面通过table.addCell添加的时候必须添加整行内容的所有列 //创建表格对象 PdfPTable table = new PdfPTable(3); PdfPCell cell = new PdfPCell(); Paragraph zhi = new Paragraph("事件概要",fontZH); cell.setPhrase(zhi); //单元格水平居中对齐 cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); zhi = new Paragraph("联系人",fontZH); cell.setPhrase(zhi); cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); zhi = new Paragraph("事件类型",fontZH); cell.setPhrase(zhi); cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); for (int i = 0;i<list.size();i++) { zhi = new Paragraph(list.get(i).getItSummary(),fontZH); cell.setPhrase(zhi); cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); zhi = new Paragraph(list.get(i).getContacts(),fontZH); cell.setPhrase(zhi); cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); zhi = new Paragraph(list.get(i).getItType(),fontZH); cell.setPhrase(zhi); cell.setUseAscender(true); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); } document.add(table); document.add(new Paragraph("\n")); // 第七步,关闭document document.close(); return j; }