import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import com.htf.ap.security.operatelog.annotation.OperateLog;
import com.htf.common.businessconfig.invoice.InvoicePrintModel;
import com.htf.framework.webutil.xwork.annotation.Action;
import com.opensymphony.webwork.ServletActionContext;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;

public class JasperPrintUtil {

/**
* 生成JasperPrint
*
* @param list 数据源
* @param pathMap报表
* @return JasperPrint list
*/
public static <T> List<JasperPrint> createJasperPrint(List<T> list,
Map<String, String> pathMap, String path, Map<String, Object> paramMap) {
List<JasperPrint> printList = new ArrayList<JasperPrint>();
if (list != null && pathMap != null) {
List<T> dataList = new ArrayList<T>();
try {
for (String kn : pathMap.keySet()) {
dataList.addAll(list);
ServletContext context = ServletActionContext.getRequest().getSession()
.getServletContext();
String file = context.getRealPath(pathMap.get(kn));
JasperReport report = (JasperReport) JRLoader.loadObject(file);
JRDataSource source = new JRBeanCollectionDataSource(dataList);
Map<String, Object> imgMap = paramMap;
JasperPrint print = JasperFillManager.fillReport(report, imgMap, source);
if (print != null) printList.add(print);
//imgMap.clear();
dataList.clear();
}
} catch (JRException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
return printList;
}

/**
* 打印JasperPrint 修改:打印有返回值,以方便调用时判断传递不同的打印参数
*
* @param JasperPrint list
* @return
*/
public static int print(List<JasperPrint> list) {
int flag = -1;// 默认打印失败,1打印成功
ServletOutputStream out = null;
try {
if (list == null) {
return flag;
}
HttpServletResponse response = ServletActionContext.getResponse();
out = response.getOutputStream();
response.setContentType("application/pdf");
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, list);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();
out.flush();
flag = 1;
return flag;
} catch (JRException e) {
e.printStackTrace();
return flag;
} catch (IOException e) {
e.printStackTrace();
return flag;
} /*finally {刘燕明注释:方便上层调用此方法时可以重新判断打印
IOUtil.close(out);
}*/
}

}

/**
* 打印贷款申请审批表

* @date 2017-3-18
*/
@SuppressWarnings("unchecked")
@OperateLog(moduleName="打印贷款申请审批表", content = "打印贷款申请审批表")
@Action(name="LoanApplyAction_goLoanApplyAppPrint")
public String goLoanApplyAppPrint() {
Long tempId = model.getTempId();
Long stateId = model.getStateId();
//stateId = 4310441L;
// InvoicePrintModel invoicePrintModel = loanApplyBPO.findLoanApplyAppPrintContext(tempId, stateId);
InvoicePrintModel invoicePrintModel = new InvoicePrintModel();
List<String> list = new ArrayList<String>();
list.add("aa");
invoicePrintModel.setDataList(list);
//定义Map集
Map<String, String> pathMap = new HashMap<String, String>();
pathMap.put("a1", "/gjj-pl/pages/g3/gjj/pl/jasper/LoanApplyAppReport1.jasper");
pathMap.put("a2", "/gjj-pl/pages/g3/gjj/pl/jasper/LoanApprove.jasper");
//调用打印方法
JasperPrintUtil.print(JasperPrintUtil.createJasperPrint(
invoicePrintModel.getDataList(), pathMap, null,
invoicePrintModel.getContext()));
//this.print(this.createJasperPrint(invoicePrintModel.getDataList(), pathMap, null,invoicePrintModel.getContext()));
return NONE;
}

流程 创建jasper  然后调用export方法打印jasper对象。

Jasper打印示例的更多相关文章

  1. JASPER打印单据,标签开发培训, 界面开发培训

    JASPER打印单据,标签开发培训软件:TIBC JASPER Studio.Jaspersoft Studio是一个专为JasperReports报表引擎而开发的报表设计器,是 iReport设计器 ...

  2. C# 标签打印示例 1

    初次写博客,有哪些不足的地方,还请多多指点,给予建议,谢谢! 如若想要源码,请留言.        本实例是在Webservice 中通过excel做模板来打印标签.具体需求是:一个订单一页纸打印4行 ...

  3. jasper打印实例2 ----通过文件字节流获得PDF格式图片

    public class IspReportUtil { public static String exportReportToByte(CommonReportHandler handler)thr ...

  4. Qt5.3 打印示例时出现错误

    说明:今天我在用Qt5.3写打印文档的时候,编译出错了,出错代码为: C:\Users\joe\Desktop\5-9\myPrint\mainwindow.cpp:35: error: undefi ...

  5. Python win32打印示例

    # -*- coding:utf-8 -*- # Author: Pete Yim<xpHook@gmail.com> # Date : 13-8-22 # Copyright (c) 2 ...

  6. jasper打印文件出现空白页面

    EG:打印文件结果打印出一片空白 原因:使用了null的数据源而不是JREmptyDataSource 以下为正确代码 public <T> List<JasperPrint> ...

  7. 吉特仓库管理系统-.NET打印问题总结

    在仓储系统的是使用过程中避免不了的是打印单据,仓库系统中包含很多单据:入库单,出库单,盘点单,调拨单,签收单等等,而且还附带着很多的条码标签的打印.本文在此记录一下一个简单的打印问题处理方式.处理问题 ...

  8. 重新想象 Windows 8 Store Apps (41) - 打印

    [源码下载] 重新想象 Windows 8 Store Apps (41) - 打印 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 打印 示例1.需要打印的文档Pr ...

  9. gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法

    1.一般为了表格显示数据更直观,经常会显示行号以及总数.让gridcontrol显示行号,首先你需要设置一下显示行号的宽度,也就是IndicatorWith.默认值为-1,可根据实际数值需要设置宽度, ...

随机推荐

  1. Office2019都有哪些强大功能

    前阵子是微软一年一度的Ignite大会.而其中最引人注目.也是与我们一般人最息息相关的消息,当然是Office 2019的正式发布. 尽管Office 2019所更新的功能,对于Office 365的 ...

  2. guava collection/cache初探

    写了上面一篇,看了点eventbus相关的guava代码后,发现里面用到了很多其他guava包里的方法,所以顺着看一下,比如之前用到的map都是guava自己的 Multimap:可以包含有几个重复K ...

  3. How to Pronounce T + Dark L

    How to Pronounce T + Dark L Share Tweet Share Tagged With: Dark L The T and Dark L combination is co ...

  4. Haskell语言学习笔记(70)NonEmpty

    NonEmpty(非空列表) infixr 5 :| data NonEmpty a = a :| [a] deriving (Eq, Ord) instance Functor NonEmpty w ...

  5. Kubernetes 1.8.x 全手动安装教程----转自Kubernetes中文社区(部分内容根据实验环境做了些修改,特此感谢Kubernetes中文社区)

    Kubernetes 提供了许多云端平台与操作系统的安装方式,本章将以全手动安装方式来部署,主要是学习与了解 Kubernetes 创建流程.若想要了解更多平台的部署可以参考 Picking the ...

  6. 手工获取AWR报告

    AWR(Automatic Workload Repository)报告常用于Oracle数据库性能分析.熟练解读AWR报告有助于快速分析Oracle性能问题.下面主要描述如何手工获取AWR报告. 操 ...

  7. Cache雪崩效应

    大概半年前,Guang.com曾发生一次由于首页部分cache失效,导致网站故障. 故障分析: 当时逛正在做推广,流量突然暴增,QPS达到5000+,当首页部分cache失效时,需要查询DB, 但由于 ...

  8. shiro中的授权

  9. java的Timer和TimerTask

    java中Timer类使用的方法是如下的: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() ...

  10. apache常见的一些配置

    <VirtualHost *:80>ServerName www.aliyun.com #域名ServerAlias www.aliyun.com #别名DocumentRoot /dat ...