`
wangcheng2008china
  • 浏览: 15170 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java代码生成PDF文件-表格和图片

阅读更多
jar:iText-2.1.4.jar,iTextAsian.jar
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();
		  }
	}

}




如有疑问,欢迎加入群:283948248 找群主
分享到:
评论

相关推荐

    itext生成pdf文件-表格

    在IT行业中,生成PDF文件是一项常见的任务,特别是在文档制作、报表导出以及数据展示等领域。iText是一个流行的Java库,专门用于创建和编辑PDF文档。本文将深入探讨iText如何生成包含表格的PDF文件,同时结合提供的...

    java生成pdf文件包含表格

    在Java编程中,生成PDF文件是一项常见的任务,特别是在需要创建报告、发票或任何其他类型的数据文档时。PDF(Portable Document Format)是一种通用的文件格式,能够保持文档的原始布局和样式,便于分享和打印。本篇...

    基于java根据模板动态生成PDF文件

    本主题聚焦于使用Java编程语言,结合特定的库或框架,根据预定义的模板来动态生成PDF文件。以下是关于这个主题的详细知识讲解。 一、Java与PDF生成 Java作为一门广泛使用的后端开发语言,提供了丰富的库来处理PDF...

    java根据PDF模板自动生成PDF文件

    用途:根据PDF模板生成PDF文件,将数据库查询的数据插入到模板指定未知,然后生成新的PDF文件 原理: 代码说明:exprotPDF_Main 为主文件。...支持各种java调用数据库数据,生成PDF文件。多个版本供参考。

    java itext生成PDF文件

    Java中的iText库是一个强大的...总的来说,使用Java的iText库生成PDF文件是一项强大的技术,尤其在处理复杂格式和多语言内容时。通过学习和熟练掌握iText的API,开发者可以轻松创建出专业、美观且功能丰富的PDF文档。

    java 后端生成pdf模板合并单元格表格的案例.docx

    ### Java后端生成PDF模板合并单元格表格案例详解 #### 概述 本文将详细介绍一个Java后端生成PDF模板,并在此基础上实现单元格合并功能的案例。案例的主要目的是展示如何在Java环境中创建复杂的表格结构,并将其导出...

    使用java生成pdf文件

    总的来说,Java 生成 PDF 文件主要涉及创建 `Document`,实例化 `PdfWriter`,打开和关闭文档,以及向文档中添加内容和元数据。`iText` 库提供了丰富的功能,包括表格、列表、图片、链接等,使得创建复杂的 PDF 文档...

    java代码生成pdf报表

    本篇文章将深入探讨如何使用Java代码生成PDF报表,并关注如何根据自己的需求绘制表格。 首先,我们需要一个库来帮助我们处理PDF文档。Apache PDFBox是一个非常流行的开源Java库,它可以方便地创建、修改和显示PDF...

    java生成PDF源代码

    在Java编程环境中,生成PDF文件是一项常见的需求,用于创建报告、文档或发票等。本教程将探讨两种主要方法:基于模板的方法和纯代码渲染方法。这两种方法都可以利用Java的强大功能来生成高质量的PDF文档。 首先,让...

    java 生成PDF文件

    在Java编程环境中,生成PDF...总的来说,Java生成PDF文件涉及到多个层次的技术,包括文档结构、内容呈现、I/O操作以及安全性等。通过学习和熟练掌握iText库,开发者可以构建功能强大的PDF生成工具,满足各种业务需求。

    java生成pdf文件

    Java生成PDF文件是一种常见的需求,特别是在企业级应用中,用于生成报告、发票、合同等文档。iText是一个广泛使用的开源库,专为Java和.NET设计,用于创建和修改PDF文档。在Java中生成PDF文件,iText库是首选工具之...

    java生成PDF文件

    在Java编程环境中,生成PDF文件是一项常见的需求,特别是在需要创建报告、发票或任何类型的文档时。iText是一个流行的开源库,专门用于处理PDF文档。在这个主题中,我们将深入探讨如何使用iText在Java中生成PDF文件...

    JAVA生成PDF文件(Demo+jar),可加密及设置安全性

    首先,我们关注的是"JAVA生成PDF文件"。Java中常用的PDF库有iText、Apache PDFBox、 Flying Saucer等。这里提到了iText,它是一个强大的开源库,可以方便地创建、修改和操作PDF文档。使用iText,你可以添加文本、...

    Java动态生成PDF源码

    在IT行业中,生成PDF文档是一项常见的任务,尤其在企业级应用和报告自动化中。Java作为广泛应用的编程语言,提供了多种库来实现动态生成PDF。本文将深入探讨如何使用Java源码来实现这一功能。 首先,我们需要了解...

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取模板子类。 2. ...

    java生成excle和pdf

    2. Java生成PDF: - **iText**:这是一个强大的开源库,用于创建和修改PDF文档。使用iText,你可以添加文本、图像、表格、链接等元素到PDF中。 - **基本步骤**:创建一个`Document`对象,然后使用`Document.open()...

    java实现PDF文件添加图片

    PDF文件添加图片是Java开发中常见的一项任务,特别是在生成报告、文档或证书等场景下,可能需要将图像插入到PDF中以增强可视化效果。这里我们将深入探讨如何使用iTextPDF库来实现在PDF中添加图片的功能。 iTextPDF...

    java动态生成PDF

    在Java开发中,生成PDF文档是一项常见的需求,特别是在企业级应用中,如报表、发票、合同等需要打印或电子化存储的文档。iText是一个强大的Java库,专门用于创建和编辑PDF文档。本文将深入探讨如何使用iText库在Java...

    aspose-17.8 Java 生成 pdf 工具类

    在本篇内容中,我们将聚焦于"Aspose-17.8 Java 生成PDF工具类",了解如何利用Aspose库在Java环境中创建PDF文件。 首先,`aspose.pdf-17.8.jar`是Aspose.Pdf组件的核心库,它允许开发者在Java应用中创建、操作和转换...

Global site tag (gtag.js) - Google Analytics