- package com.zjhcsoft.sim.util;
- import java.awt.Color;
- import java.io.ByteArrayOutputStream;
- import java.util.List;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.log4j.Logger;
- import com.lowagie.text.DocumentException;
- import com.lowagie.text.Element;
- import com.lowagie.text.Font;
- import com.lowagie.text.Image;
- import com.lowagie.text.PageSize;
- import com.lowagie.text.Paragraph;
- import com.lowagie.text.pdf.BaseFont;
- import com.lowagie.text.pdf.PdfPCell;
- import com.lowagie.text.pdf.PdfPTable;
- import com.lowagie.text.pdf.PdfWriter;
- import com.zjhcsoft.sim.device.bean.DeviceItems;
- import com.zjhcsoft.sim.si.bean.SiPollrpt;
- /***
- * <p>Title: </p>
- *
- * <p>Description: </p>
- *
- * <p>Author:wangcheng </p>
- *
- * <p>Copyright: Copyright (c) 2013 </p>
- *
- * <p>Company: 浙江鸿程</p>
- *
- */
- public class PollRptPdf {
- Logger logger = Logger.getLogger(PollRptPdf.class);
- public void downPdf( HttpServletRequest request,
- HttpServletResponse response,SiPollrpt siPollrpt,String filePath){
- try {
- List deviceList = siPollrpt.getDeviceItemList();
- // 创建一个Document对象
- com.lowagie.text.Document document = new com.lowagie.text.Document(PageSize.A4, 36, 36, 36, 36);
- ByteArrayOutputStream ba = new ByteArrayOutputStream();
- //设置宋体
- BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", true);
- Font fontChinese =new Font(bfChinese,15,Font.BOLD,Color.BLACK);
- Font normalfont =new Font(bfChinese,13,Font.NORMAL,Color.BLACK);
- BaseFont bfChinese2 = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//设置中文字体
- Font headFont2 = new Font(bfChinese2, 13, Font.NORMAL);//设置字体大小
- try {
- //添加一些信息
- document.addTitle("平台巡检报告");
- PdfWriter writer = PdfWriter.getInstance(document, ba);
- document.open();
- Paragraph paragraphTitle1 = new Paragraph("平台巡检报告--("+siPollrpt.getAPPNAME()+")\n",fontChinese);
- paragraphTitle1.setAlignment(1);//1.中间,2.右边
- Paragraph paragraphTitle2 = new Paragraph("操作员:"+siPollrpt.getUSERNAME()+" ("+siPollrpt.getYEAR()+"年"+siPollrpt.getQUARTERNAME()+")\n",normalfont);
- paragraphTitle2.setAlignment(2);//1.中间,2.右边
- StringBuffer content1 = new StringBuffer("\n 1.设备运行情况检查总结");
- content1.append("\n\t").append(siPollrpt.getRPTDESC());
- StringBuffer content2 = new StringBuffer("\n 2.系统网络结构\n\t");
- Image image = Image.getInstance(request.getRealPath("\\") + siPollrpt.getFILEPATH());
- StringBuffer content3 = new StringBuffer("\n 3.设备具体检查情况");
- Paragraph paragraphContent1 = new Paragraph(content1.toString(),normalfont);
- Paragraph paragraphContent2 = new Paragraph(content2.toString(),normalfont);
- Paragraph paragraphContent3 = new Paragraph(content3.toString(),normalfont);
- document.add(paragraphTitle1);
- document.add(paragraphTitle2);
- document.add(paragraphContent1);
- document.add(paragraphContent2);
- document.add(image);
- document.add(paragraphContent3);
- DeviceItems items = null;
- for(int i=0;i<deviceList.size();i++){
- float[] widths = {70f, 180f, 500f};//设置表格的列宽
- PdfPTable table = new PdfPTable(widths);
- table.setTotalWidth(750);//设置表格的宽度
- table.setSpacingBefore(40f);//设置表格上面空白宽度
- items = (DeviceItems)deviceList.get(i);
- PdfPCell cellHType = new PdfPCell(new Paragraph(items.getSERVERTYPENAME(),headFont2));
- cellHType.setColspan(3);
- table.addCell(cellHType);
- PdfPCell cellH = new PdfPCell(new Paragraph("编号",headFont2));
- cellH.setHorizontalAlignment(Element.ALIGN_CENTER);
- table.addCell(cellH);
- cellH= new PdfPCell(new Paragraph("检查项目",headFont2));
- cellH.setHorizontalAlignment(Element.ALIGN_CENTER);
- table.addCell(cellH);
- cellH = new PdfPCell(new Paragraph("检查结果",headFont2));
- cellH.setHorizontalAlignment(Element.ALIGN_CENTER);
- table.addCell(cellH);
- PdfPCell cellContent = null;
- for(int j=1;j<5;j++){
- if(j==1){
- cellContent = new PdfPCell(new Paragraph((i+1)+"."+j,headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph("CPU占用率检查",headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph(items.getCPU(),headFont2));
- table.addCell(cellContent);
- }else if(j==2){
- cellContent = new PdfPCell(new Paragraph((i+1)+"."+j,headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph("内存检查",headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph(items.getMEM(),headFont2));
- table.addCell(cellContent);
- }else if(j==3){
- cellContent = new PdfPCell(new Paragraph((i+1)+"."+j,headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph("本地硬盘容量检查",headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph(items.getDISK(),headFont2));
- table.addCell(cellContent);
- }else if(j==4){
- cellContent = new PdfPCell(new Paragraph((i+1)+"."+j,headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph("进程检查",headFont2));
- table.addCell(cellContent);
- cellContent = new PdfPCell(new Paragraph(items.getPROCESS(),headFont2));
- table.addCell(cellContent);
- }
- }
- document.add(table);
- }
- } catch (DocumentException de) {
- de.printStackTrace();
- }
- document.close();
- response.setHeader("Content-disposition", "attachment; filename=" + new String(filePath.getBytes("GBK"), "iso8859-1"));
- response.setContentType("application/pdf");
- response.setContentLength(ba.size());
- ServletOutputStream out = response.getOutputStream();
- ba.writeTo(out);
- out.flush();
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
java代码生成PDF文件-表格和图片
jar:iText-2.1.4.jar,iTextAsian.jar