<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;
}
}
分享到:
相关推荐
pdf24 tools是由德国Geek Software公司开发的一款优秀实用且完全免费的PDF工具箱软件,PDF24工具箱包含PDF分割/合并、PDF压缩、PDF编辑器、PDF加密/解密、PDF页面/图像提取、PDF比较、PDF转换、添加PDF水印等多种...
众所周知PDF文档是大家工作学习中非常常用的一种文档格式,pdf文件是通过虚拟打印各种文件生成的二进制编码格式,由于大部分PDF数据是经过压缩的,使用文本编辑器编辑PDF文件会导致文件损坏或数据偏移,或者在网络...
可以将多个PDF合并成一个pdf文件,如使用命令 merge D:\\luolf\\tmp\\test_out.pdf D:\\luolf\\tmp\\test.pdf,D:\\luolf\\tmp\\test1.pdf,D:\\luolf\\tmp\\test2.pdf 可以将 test.pdf,test1.pdf,test2.pdf 合并成一...
在Vue.js应用中,预览PDF文件流是一个常见的需求,特别是在处理在线文档或者需要展示PDF内容的场景下。`vue-pdf`是一个强大的插件,它允许我们在Vue组件中轻松地集成PDF预览功能。这个插件是基于PDF.js库构建的,PDF...
标题 "PB数据窗口导出PDF并且合并到一个PDF文件中" 涉及的主要知识点是使用PowerBuilder(PB)这个编程工具,对数据窗口对象进行操作,并将结果以PDF格式导出,最后实现多个PDF文件的合并。在这个过程中,我们不仅...
自己写的 spire.pdf 简单的demo ,有一些基础的使用方法,对刚接触的小伙伴会非常友善; 里面主要包含: 1.去除水印; 2.获取每页pdf的图片; 3.获取书签; 4.读取pdf将pdf转化为文字,最后由txt文件保存; 5....
在Android开发中,有时我们需要在应用中展示PDF文件,但默认的WebView组件并不支持直接打开PDF,这使得开发者需要寻找其他解决方案。"pdfview打开pdf文件,避免android无法通过webview打开pdf文件"这个主题正是关注...
PDF文件格式在IT行业中广泛应用,尤其在文档分享和电子出版领域。`pdfview.ocx`控件是专门用于处理PDF文件的一种组件,它允许开发者在应用程序中集成PDF阅读和操作功能,比如在C#和Wpf这样的环境中。在这个场景中,`...
从文档属性的基本操作到创建您自己的 PDF 查看器和 PDF 编辑器,这款软件满足您的所有需求。 Quick PDF Library 是一款供 PDF 开发人员使用的 SDK,功能强大、无需版税,其中包括超过500个函数,可用于 Delphi、C、...
Java PDF文件处理是一个重要的领域,尤其在开发企业级应用时,常常需要对PDF文档进行创建、编辑、转换或渲染等操作。Aspose.PDF是一款强大的Java库,它为开发者提供了全面的API,使得处理PDF文档变得简单高效。在这...
在这些应用中,有时我们需要集成PDF阅读功能,以便用户能够查看或交互与PDF文档。这就是“Unity读取PDF插件PDFRenderer”发挥作用的地方。 PDFRenderer插件是一个专门针对Unity开发的工具,它允许开发者在Unity环境...
用途:根据PDF模板生成PDF文件,将数据库查询的数据插入到模板指定未知,然后生成新的PDF文件 原理: 代码说明:exprotPDF_Main 为主文件。调用了outpdf1的两个文件的方法。outpdf1里的方法,是通过outpdf2345678这...
PDF.js是一个开源JavaScript库,由Mozilla开发,用于在Web浏览器中渲染PDF文档,无需依赖任何插件。这个库的目标是提供一个与平台和浏览器无关的解决方案,使得用户可以在任何支持HTML5的浏览器上查看PDF文件。本文...
在.NET环境中,C#开发人员经常需要处理PDF文档,包括生成PDF、读取PDF文本以及提取PDF中的图像。为了实现这些功能,通常会借助于第三方库或DLL,因为.NET框架本身并不内置完整的PDF处理能力。本教程将详细介绍如何...
在IT行业中,PDF(Portable Document Format)是一种广泛使用的文件格式,用于存储和交换文档。有时候我们需要将PDF文档打印出来,特别是在商业环境中。然而,有些打印工具可能会遇到页数限制的问题,这在处理大量...
PDF.js是Mozilla开发的一个开源项目,它允许开发者使用纯JavaScript在Web浏览器中渲染PDF文档,无需依赖任何插件。这个Demo展示了如何利用PDF.js库实现PDF在线预览和打印功能,同时还提供了页面缩放和打开本地PDF...
PDF.js是Mozilla开发的一个开源库,专门用于在Web浏览器中渲染PDF文档,无需依赖任何插件。这个库的核心目标是提供一个跨平台、基于Web标准的解决方案,使得用户能够在任何支持HTML5的浏览器中查看PDF文件。PDF.js...
**Spire.PDF Free——轻松处理PDF文档** Spire.PDF Free是一款强大的PDF处理工具,专为需要在不支付费用的情况下读取、编辑和创建PDF文档的用户设计。这款软件的最新版本是4.4.1,它提供了一系列实用功能,帮助用户...
在Windows Forms(Winform)应用开发中,有时候我们需要集成PDF预览功能,让用户能够在应用程序内部查看PDF文档。Adobe PDF Reader控件是一个常用的解决方案,它允许开发者在C#环境中嵌入PDF阅读器,提供便捷的PDF...