java 导出pdf 功能

  • 首先添加依赖,版本要一致,这里是个坑,不然会出现字体无法识别的情况
  • <!-- 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;
    }

猜你喜欢

转载自blog.51cto.com/14622073/2554315