页面点击<a href>,生成pdf,当前页面不会跳转

package com.nfcswp.common.util;

import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.util.List;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.nfcswp.common.model.ResultReport;
import com.nfcswp.entity.ResultInfo;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 
 * 描述:根据投保单号   生成pdf<br>
 * 作者:lihengjun <br>
 * 修改日期:2012-9-14上午10:38:15 <br>
 * E-mail:
 */
public class PdfUtil extends ActionSupport{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String pdfName;
	
	/**
	 * 
	 * 描述:生成电子投保凭证
	 * @author lihengjun
	 * 修改日期:2012-9-14上午09:50:47
	 * @param policyNo 投保单号
	 */
	public void createPdf(HttpServletResponse response,ResultReport resReport) throws Exception{
    	response.reset();
    	OutputStream os = response.getOutputStream();// 取得输出流
    	response.setContentType("application/pdf");//可以在网页中用pdf reader打开
    	String fname="TestReport"+DateUtil.currentDate2YMDMethod();
    	Document document = new Document();
    	ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    	PdfWriter.getInstance(document, buffer);

    	response.setHeader("Content-disposition", "attachment; filename=" + new String(("123123.pdf").getBytes(), "iso-8859-1"));
    	
		try {
			// 设定文档的远东字符集
			BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
			Font FontChinese = new Font(bfChinese, 9, Font.NORMAL);// 小五号黑体
			Font FontChineseFooter = new Font(bfChinese, 10, Font.BOLD);// 五号黑体加粗
			Font FontChineseUnderline = new Font(bfChinese, 9, Font.UNDERLINE);// 小五号黑体下划线
			FontChineseUnderline.setColor(0, 0, 255);
			Font FontHeadBold = new Font(bfChinese, 18, Font.BOLD);// 小二号黑体加粗
			Font FontBold = new Font(bfChinese, 9, Font.BOLD);// 小五号黑体加粗
			Font FontContent = new Font(bfChinese, 7, Font.NORMAL);// 小六号黑体

			// 打开文档
			document.open();
			/** 保险止期 */
			// 设定文档的标题
			Paragraph Title = new Paragraph("Automated Testing Report", FontHeadBold);

			Paragraph row021 = new Paragraph("2013/07/02", FontBold);

			Paragraph row031 = new Paragraph("Statistical Information", FontBold);

			Paragraph row041 = new Paragraph("scenes name", FontBold);
			Paragraph row042 = new Paragraph("create time", FontBold);
			Paragraph row043 = new Paragraph("total executed", FontBold);
			Paragraph row044 = new Paragraph("pass", FontBold);
			Paragraph row045 = new Paragraph("fail", FontBold);
			
			Paragraph row051 = new Paragraph(resReport.getScenesName(),FontChinese);
			Paragraph row052 = new Paragraph(resReport.getTimeTag(),FontChinese);
			Paragraph row053 = new Paragraph(String.valueOf(resReport.getTotalNum()),FontChinese);
			Paragraph row054 = new Paragraph(resReport.getSuccessResultNum()+"",FontChinese);
			Paragraph row055 = new Paragraph(resReport.getFailResultNum()+"",FontChinese);
			
			
			Paragraph row061 = new Paragraph("Test Case Information", FontBold);
			
			Paragraph row071 = new Paragraph("case name", FontBold);
			Paragraph row072 = new Paragraph("case number", FontBold);
			Paragraph row073 = new Paragraph("test result", FontBold);
			Paragraph row074 = new Paragraph("error message", FontBold);
			
			PdfPTable tableScenes = new PdfPTable(5);
			tableScenes.setHorizontalAlignment(Element.ALIGN_MIDDLE);
			int hws[] = {15,15,15,15,15};
			tableScenes.setWidths(hws);
			tableScenes.setTotalWidth(15);
			tableScenes.setSpacingBefore(30);
			
			// 设定头
			PdfPCell cell = new PdfPCell(Title);
			cell.setUseDescender(true);
			cell.setHorizontalAlignment(1);
			cell.setBorderWidth(0);
//			cell.setHeader(true);
			cell.setRowspan(2);
			cell.setColspan(5);
			tableScenes.addCell(cell);

			// 第二行第一列
			cell = new PdfPCell(row021);
			cell.setHorizontalAlignment(Element.ALIGN_LEFT);
			cell.setUseDescender(true);
			cell.setBorderWidth(0);
//			cell.setBorderWidthBottom(1);
			cell.setColspan(5);
			tableScenes.addCell(cell);

			// 第三行第一列
			cell = new PdfPCell(row031);
			cell.setHorizontalAlignment(Element.ALIGN_LEFT);
			cell.setUseDescender(false);
			cell.setBorderWidth(0);
			cell.setColspan(5);
			tableScenes.addCell(cell);

			// 第四行第一列
			cell = new PdfPCell(row041);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第四行第二列
			cell = new PdfPCell(row042);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第四行第三列
			cell = new PdfPCell(row043);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第四行第四列
			cell = new PdfPCell(row044);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			// cell.setNoWrap(true);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第四行第五列
			cell = new PdfPCell(row045);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);

			// 第五行第一列
			cell = new PdfPCell(row051);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第五行第二列
			cell = new PdfPCell(row052);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第五行第三列
			cell = new PdfPCell(row053);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第五行第四列
			cell = new PdfPCell(row054);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			// 第五行第五列
			cell = new PdfPCell(row055);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableScenes.addCell(cell);
			
			PdfPTable tableCase = new PdfPTable(4);
			tableCase.setHorizontalAlignment(Element.ALIGN_MIDDLE);
			int hws2[] = {15,15,15,15};
			tableCase.setWidths(hws2);
			tableCase.setTotalWidth(15);
			tableCase.setSpacingBefore(30);
			
			// 第六行第一列
			cell = new PdfPCell(row061);
			cell.setHorizontalAlignment(Element.ALIGN_LEFT);
			cell.setUseDescender(true);
			cell.setBorderWidth(0);
			cell.setColspan(4);
			tableCase.addCell(cell);
			
			// 第七行第一列
			cell = new PdfPCell(row071);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableCase.addCell(cell);
			// 第七行第二列
			cell = new PdfPCell(row072);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableCase.addCell(cell);
			// 第七行第三列
			cell = new PdfPCell(row073);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableCase.addCell(cell);
			// 第七行第四列
			cell = new PdfPCell(row074);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell.setUseDescender(true);
			cell.setBorderWidth(1);
			cell.setColspan(1);
			tableCase.addCell(cell);
			

			 List<ResultInfo> tmpResList =  resReport.getResultList();
		        if(tmpResList!=null && tmpResList.size()>0){
		        	for(int i=0;i<tmpResList.size();i++){ 
		        		Paragraph row_caseResult_1 = new Paragraph(tmpResList.get(i).getCase_info().getName()+"", FontChinese);
		        		Paragraph row_caseResult_2 = new Paragraph(tmpResList.get(i).getCase_info().getCase_number()+"", FontChinese);
		        		Paragraph row_caseResult_3 = new Paragraph(tmpResList.get(i).getRun_state().getName()+"", FontChinese);
		        		Paragraph row_caseResult_4 = new Paragraph(tmpResList.get(i).getError_message(), FontChinese);
		                
		        		cell = new PdfPCell(row_caseResult_1);
		    			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
		    			cell.setUseDescender(true);
		    			cell.setBorderWidth(1);
		    			cell.setColspan(1);
		    			tableCase.addCell(cell);
		    			
		    			cell = new PdfPCell(row_caseResult_2);
		    			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
		    			cell.setUseDescender(true);
		    			cell.setBorderWidth(1);
		    			cell.setColspan(1);
		    			tableCase.addCell(cell);
		    			
		    			cell = new PdfPCell(row_caseResult_3);
		    			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
		    			cell.setUseDescender(true);
		    			cell.setBorderWidth(1);
		    			cell.setColspan(1);
		    			tableCase.addCell(cell);
		    			
		    			cell = new PdfPCell(row_caseResult_4);
		    			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
		    			cell.setUseDescender(true);
		    			cell.setBorderWidth(1);
		    			cell.setColspan(1);
		    			tableCase.addCell(cell);
		            } 
		        }
		        
			document.add(tableScenes);
			document.add(tableCase);
			document.close();
			
			response.setHeader("Expires", "0");
			response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
			response.setHeader("Pragma", "public");
         
			response.setContentLength(buffer.size());
			//创建servletoutputstream流对象,即为response。getoutputstream
			ServletOutputStream out = response.getOutputStream();
			buffer.writeTo(out);//将字节输出流写入到servletoutputstream
			out.flush();//out。flush输出内容
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public String getPdfName() {
		return pdfName;
	}


	public void setPdfName(String pdfName) {
		this.pdfName = pdfName;
	}
	
	public static void main(String[] args) {
		PdfUtil pdf = new PdfUtil();
		//pdf.createPdf();
		System.exit(0);
		}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值