`
lihua-he
  • 浏览: 103484 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

pdf

阅读更多

<a id="pdfHref" href='/NetCafe/bizData/report/showPDF.jsp?dutyId=<c:out value="${dutyId}"/>&type=1'>

 

showPDF.jsp

 

<%@page language="java" contentType="application/x-msdownload"%>
<%@ page import="com.hintsoft.chain.report.PDFReportUtils"%>
<%
	response.reset();
    response.setContentType("application/x-download");
    response.addHeader("Content-Disposition", "attachment; filename=report.pdf");
	javax.servlet.ServletOutputStream ouputStream = null;
	try{
		byte[] bytes = PDFReportUtils.getIReportUtils().getReport(request,response);
		response.setContentLength(bytes.length);
		ouputStream = response.getOutputStream();
		ouputStream.write(bytes, 0, bytes.length);
		ouputStream.flush();
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		if(ouputStream != null){
			ouputStream.close();
            ouputStream = null;
        }
	}	
%>

 

 

package com.hintsoft.chain.report;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.hintsoft.chain.common.query.web.PageResult;
import com.hintsoft.chain.membermng.form.MemStatisticForm;
import com.hintsoft.chain.systemsetting.service.ConfigStrategyService;

public class PDFReportUtils {
	private static Logger log = Logger
			.getLogger("com.hintsoft.chain.report.PDFReportUtils");

	private static PDFReportUtils pu = null;

	public static PDFReportUtils getIReportUtils() {
		if (pu == null) {
			pu = new PDFReportUtils();
		}
		return pu;
	}
	/**
	 * @explain 用来获取pdf报表的入口
	 * @param request
	 * @return
	 */
	public byte[] getReport(HttpServletRequest request,HttpServletResponse response) {
		byte[] result = null;
		String type = "2";
		List list = new ArrayList();
		String dateBeginDay = (String) request.getAttribute("dateBeginDay");
		String dateEndDate = (String) request.getAttribute("dateEndDate");
		String netUniqueid = (String) request.getAttribute("netUniqueid");
		String pageNow = (String) request.getAttribute("pageNow");
		String totalPage = (String) request.getAttribute("totalPage");//总条数
		String totalCount = (String) request.getAttribute("totalCount");  //总页数
		MemStatisticForm memForm = new MemStatisticForm();
		memForm.setDateBeginDay(dateBeginDay);
		memForm.setDateEndDate(dateEndDate);
		memForm.setPageNow(pageNow);
		memForm.setTotalPage(totalPage);
		memForm.setNetUniqueid(netUniqueid);
		if ("2".equals(type)) {
			PageResult pageResult = new PageResult();
			pageResult.setPageNo(Integer.parseInt(pageNow)); 
			list = ConfigStrategyService.getMemStatistic(memForm,pageResult,totalPage);
            result = PDFDay.getPDFDay().getDay(list,dateBeginDay,dateEndDate,totalCount,pageNow);
		} 
		return result;
	}
}

 

 

 

import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.util.List;

import org.apache.log4j.Logger;

import com.hintsoft.chain.common.CertificateTypeHelp;
import com.hintsoft.chain.membermng.po.MemStatisticPO;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfTemplate;
import com.lowagie.text.pdf.PdfWriter;

public class PDFDay {
	private static Logger log = Logger
			.getLogger("com.hintsoft.pubwin.netcafe.local.bean.bizData.report.util.PDFDay");

	private static PDFDay pdfday = null;

	public static PDFDay getPDFDay() {
		if (pdfday == null) {
			pdfday = new PDFDay();
		}
		return pdfday;
	}

	/**
	 * @explain 获取日报表的pdf文件
	 * @param img
	 * @param clientMap
	 * @param monthBean
	 * @return
	 */
	public byte[] getDay(List list,String dateBeginDay,String dateEndDate,String totalCount,String pageNow) {
		byte[] temp = null;
		Document document = new Document(PageSize.A4);
		float cl1 = PageSize.A4.width()/8;
		float cl2 = PageSize.A4.height()/2;
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		long [] payment = {0l,0l,0l};
		try {
            //设置商品销售信息
            
			//定义中文字体
			Font font12 = PDFUtil.getChineseFont(12,0);
			Font font8 = PDFUtil.getChineseFont(7,1);
			Font font3 = PDFUtil.getChineseFont(5,0);
			Font ct8 = PDFUtil.getChineseFont(8,1);
            
			PdfWriter writer = PdfWriter.getInstance(document, bos);
			document.open();
			PdfPTable one = new PdfPTable(3);
			float[] width1 = {30f,30f,40f};
			one.setWidths(width1);
			one.setWidthPercentage(100);
			one.getDefaultCell().setBackgroundColor(new Color(0, 0, 128));
			one.getDefaultCell().setBorder(0);//表格主框架线条	
			one.getDefaultCell().setFixedHeight(12);
			one.addCell(new Phrase(""));
			one.addCell(new Phrase(""));
			one.addCell(new Phrase(""));
			document.add(one);
			
			// 增加到文档中2
			Paragraph p1 = PDFUtil.getChineseParagraph("  会员统计报表  ", PDFUtil.getChineseFont(13,1));
			p1.add(new Phrase("                                                "));
			p1.add(new Phrase("                                                "));
			p1.add(new Phrase("                        "));
			p1.add(PDFUtil.getChinesePhrase("  报告时间: ", font8));
			document.add(p1);
			document.add(new Phrase("______________________________________________________________________________"));
			String rq = "日期范围 ";
			if(rq.indexOf(":") == -1){
				rq = "日期范围 :"+dateBeginDay+"  "+dateEndDate;
			}
			document.add(PDFUtil.getChineseParagraph(rq, font8));
			PdfPTable two = new PdfPTable(9);
			two.setHorizontalAlignment(Element.ALIGN_CENTER);
			float[] width2 = {10f,8f,20f,10f,20f,10f,10f,10f,10f};
			two.setWidths(width2);
			two.setWidthPercentage(100);
			two.getDefaultCell().setBackgroundColor(new Color(240, 248, 255));
			two.getDefaultCell().setBorder(0);//表格主框架线条
			two.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);//默认单元格
			two.getDefaultCell().setVerticalAlignment(Element.ALIGN_LEFT);
			two.getDefaultCell().setFixedHeight(20);
			two.addCell(PDFUtil.getChinesePhrase("会员编号",font8));
			two.addCell(PDFUtil.getChinesePhrase("姓名",font8));
			two.addCell(PDFUtil.getChinesePhrase("创建时间",font8));
			two.addCell(PDFUtil.getChinesePhrase("证件类型",font8));
			two.addCell(PDFUtil.getChinesePhrase("证件编号",font8));
			two.addCell(PDFUtil.getChinesePhrase("会员等级",font8));
			two.addCell(PDFUtil.getChinesePhrase("累积积点",font8));
			two.addCell(PDFUtil.getChinesePhrase("循环剩余积点",font8));
			two.addCell(PDFUtil.getChinesePhrase("储值金额",font8));
			two.getDefaultCell().setBackgroundColor(new Color(255, 255, 255));
			
			for(int i=0;i<list.size();i++){
				MemStatisticPO memPo = (MemStatisticPO)list.get(i);
				two.addCell(PDFUtil.getChinesePhrase(memPo.getUniqueid(),font3));
				two.addCell(PDFUtil.getChinesePhrase(memPo.getRealname(),font3));
				two.addCell(PDFUtil.getChinesePhrase(memPo.getCreateTm().substring(0, 19),font3)); 
				two.addCell(PDFUtil.getChinesePhrase(CertificateTypeHelp.getCertificateName(memPo.getCertificateType()),font3));
				two.addCell(PDFUtil.getChinesePhrase(memPo.getCertificateid(),font3));
				two.addCell(PDFUtil.getChinesePhrase(memPo.getLevelname(),font3));
				two.addCell(PDFUtil.getChinesePhrase(memPo.getScore()+"",font3));
				two.addCell(PDFUtil.getChinesePhrase(memPo.getRemainscore()+"",font3));
				two.addCell(PDFUtil.getChinesePhrase("¥"+memPo.getLastremscorediscount()+".00",font3));
			}
			
			document.add(two);	
			document.add(new Paragraph("______________________________________________________________________________"));
			document.add(PDFUtil.getChineseParagraph("***[表格完毕]***                                                    第"+pageNow+"页,共"+totalCount+"页。",font8));
			
			PdfContentByte pcb = writer.getDirectContent();
			PdfTemplate tp = pcb.createTemplate(600, 500);
			pcb.addTemplate(tp, cl1,cl2);
		} catch (DocumentException e) {  
			if(log.isDebugEnabled()){
				log.debug(e);
			}
		} catch (Exception e2){
			if(log.isDebugEnabled()){
				log.debug(e2);
			}
		} finally{
			document.close();
		}
		temp = bos.toByteArray();//返回pdf文档二进制数组  totalCount,String pageNow
		return temp;
	}
}

 

分享到:
评论

相关推荐

    PDFView显示pdf文件

    PDFView是Android开发中用于显示PDF文件的一种工具,它允许开发者在应用程序中集成PDF阅读功能。这个工具包可能包括源代码和预编译的jar包,使得开发者可以直接将PDF查看功能整合到自己的应用中,无需依赖其他大型库...

    Spire.Pdf C# PDF合并,PDF拆分

    对于开发人员来说,处理PDF文件是常见的需求,包括合并PDF、拆分PDF以及将图片转换为PDF。本文将详细讨论使用Spire.Pdf库在C#环境下进行这些操作的知识点。 Spire.Pdf是一款强大的.NET PDF组件,它提供了无限制且...

    PDF24 Creator(PDF工具箱) v11.1.0一款万能的PDF处理工具.rar

    使用在线PDF转换工具于线上转换文件,通过电子邮件转换工具以电子邮件转换PDF,或直接使用免费的桌面应用程式PDF24 Creator。 2、大家都可使用的免费PDF软件 从PDF24的软件免费和轻易地创建PDF文件。PDF软件包含了一...

    PDFRenderer显示PDF文档

    PDFRenderer是一种Java库,用于将PDF文档渲染成位图图像,以便在应用程序中显示或处理。这个技术在Java Swing环境中特别有用,因为它允许开发者在GUI组件,如JFrame,中展示PDF内容。以下是对“PDFRenderer显示PDF...

    pdf文件修复工具PDF Fixer Pro.rar

    众所周知PDF文档是大家工作学习中非常常用的一种文档格式,pdf文件是通过虚拟打印各种文件生成的二进制编码格式,由于大部分PDF数据是经过压缩的,使用文本编辑器编辑PDF文件会导致文件损坏或数据偏移,或者在网络...

    C++ PDFLib PDF解析器

    PDFLib 是一个强大的库,专为开发者设计,用于在各种应用程序中生成、修改和操作PDF文档。这个压缩包包含了一些关键组件,使C++程序员能够轻松地集成PDF处理功能到他们的项目中。以下是对这些组件的详细解释: 1. `...

    免费PDF控件Spire.PDF

    免费Spire.PDF for .NET 是一款由e-iceblue公司开发的专业性的PDF文档创建组件。它能够使用户在不用Adobe Acrobat和其他外部控件的情况下,运用.NET 应用程序阅读,编写和操纵PDF 文档。Spire.PDF for .NET不仅可以...

    PDF Fixer Pro Portable(pdf文件修复工具)绿色便携版V1.3 | pdf文件损坏了怎么修复

    PDF Fixer 是一个效果相当卓越的实用智能型专业pdf文件修复工具,拥有简洁大方的用户界面和极其强悍的pdf文件修复能力,通过重构损坏的PDF数据、重建XREF 表然后将这些损坏的PDF文档恢复为可读的PDF文件来修复损坏的...

    非常好用的PDF工具,PDF合并,自动生成PDF书签

    PDF工具在现代数字化办公环境中扮演着重要角色,尤其对于处理PDF文档的各种需求,如合并、编辑、注释等。本文将详细介绍"非常好用的PDF工具",重点讨论PDF合并功能以及自动生成PDF书签的功能。 PDF合并是将多个PDF...

    vue-pdf预览pdf文件流

    在Vue.js应用中,预览PDF文件流是一个常见的需求,特别是在处理在线文档或者需要展示PDF内容的场景下。`vue-pdf`是一个强大的插件,它允许我们在Vue组件中轻松地集成PDF预览功能。这个插件是基于PDF.js库构建的,PDF...

    PB数据窗口导出PDF并且合并到一个PDF文件中

    标题 "PB数据窗口导出PDF并且合并到一个PDF文件中" 涉及的主要知识点是使用PowerBuilder(PB)这个编程工具,对数据窗口对象进行操作,并将结果以PDF格式导出,最后实现多个PDF文件的合并。在这个过程中,我们不仅...

    使用PDFLIB库创建PDF c++

    PDFLIB库是一个强大的C++库,专为生成高质量的PDF文档而设计。它提供了一组丰富的API函数,允许程序员在C++应用程序中直接创建、修改和处理PDF文档。本篇文章将深入探讨如何利用PDFLIB库在C++环境中构建PDF文件。 ...

    JSP页面显示PDF,根据PDF路径在JSP页面显示PDF

    在IT行业中,尤其是在Web开发领域,有时我们需要在网页上展示PDF文档,以便用户可以在线预览,而无需下载。在本场景中,我们将探讨如何利用Java的JSP(JavaServer Pages)技术来实现这一功能。JSP是一种动态网页技术...

    Image2Pdf_4.3-批量生成PDF,双层PDF转换工具.rar

    Image2Pdf_4.3是一款专门用于批量生成PDF文件并支持双层PDF转换的实用工具。这个工具的主要功能是将图像文件转化为PDF文档,同时它还具有创建双层PDF的能力,使得用户在处理扫描文档或者图片时能进行更深度的文字...

    java spire.pdf 使用 对 pdf文件的相关操作

    自己写的 spire.pdf 简单的demo ,有一些基础的使用方法,对刚接触的小伙伴会非常友善; 里面主要包含: 1.去除水印; 2.获取每页pdf的图片; 3.获取书签; 4.读取pdf将pdf转化为文字,最后由txt文件保存; 5....

    pdfview打开pdf文件,避免android无法通过webview打开pdf文件

    在Android开发中,有时我们需要在应用中展示PDF文件,但默认的WebView组件并不支持直接打开PDF,这使得开发者需要寻找其他解决方案。"pdfview打开pdf文件,避免android无法通过webview打开pdf文件"这个主题正是关注...

    PDF pdfview.ocx 无水印

    PDF文件格式在IT行业中广泛应用,尤其在文档分享和电子出版领域。`pdfview.ocx`控件是专门用于处理PDF文件的一种组件,它允许开发者在应用程序中集成PDF阅读和操作功能,比如在C#和Wpf这样的环境中。在这个场景中,`...

    java PDF文件处理库 aspose-pdf-17.8.jar ,好用

    Java PDF文件处理是一个重要的领域,尤其在开发企业级应用时,常常需要对PDF文档进行创建、编辑、转换或渲染等操作。Aspose.PDF是一款强大的Java库,它为开发者提供了全面的API,使得处理PDF文档变得简单高效。在这...

    Unity读取PDF插件PDFRenderer

    在这些应用中,有时我们需要集成PDF阅读功能,以便用户能够查看或交互与PDF文档。这就是“Unity读取PDF插件PDFRenderer”发挥作用的地方。 PDFRenderer插件是一个专门针对Unity开发的工具,它允许开发者在Unity环境...

    pdf.js和pdf.worker.js html打开pdf所需要的js

    PDF.js和PDF.Worker.js是Mozilla开发的开源库,用于在Web浏览器中渲染PDF文档,无需依赖任何插件。这两个JavaScript文件是实现HTML页面加载和显示PDF的关键组件,提供了纯JavaScript解决方案来处理PDF文档。 PDF.js...

Global site tag (gtag.js) - Google Analytics