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. leetcode1011

    class Solution: def shipWithinDays(self, weights: 'List[int]', D: int) -> int: left = max(weights ...

  2. Mysql 预查询处理 事务机制

    预处理 PDO支持sql预处理功能,可以有效的防止sql注入的问题 例如: 以下操作会导致数据表中所有数据删除 $host = 'localhost'; $port = 3306; $dbname = ...

  3. Appium -选择、操作元素

    选择界面元素 操作元素(点击.输入字符.拖拽.获取页面元素的各种属性) 根据Appium获取的数据进行分析和处理 desired_capabilities 查看appPackage 和appActiv ...

  4. 一个docker镜像中的目录删除不了问题

    在一个容器中,删除一个目录,失败: bash-4.2# pwd /home/zxcdn/ottcache/tomcat bash-4.2# uname -a Linux 3516b6c97679 -. ...

  5. 配置nginx实现windows/iis应用负载均衡(转载)

    配置nginx实现windows/iis应用负载均衡   nginx是俄罗斯人开发的一款跨平台的高性能HTTP和反向代理服务器,可以利用它实现web应用服务器的负载均衡. 反向代理是指将用户请求通过代 ...

  6. 转: 日期格式参考extjs api文档中的Date类型

    var md = new Ext.form.DateField({ //下面的格式是:2000-01-01 00:00:00 format: 'Y-m-d H:i:s', ............ } ...

  7. 自行编译mwan加入openwrt里

    参考源文:http://www.right.com.cn/forum/thread-124449-1-1.html 本例以 opoenwrt 12.09正式版为例,原软件来自openwrt 英文论坛: ...

  8. Linux下MySQL5.7.18二进制包安装(手动添加配置文件my_default.cnf)

    本文出处:http://www.cnblogs.com/wy123/p/6815049.html 最新在学习MySQL,纯新手,对Linux了解的也不多,因为是下载的最新版的MySQL(MySQL5. ...

  9. Hibernate 再接触 树状结构设计以及学生课程成绩表的设计

    1 树状结构的设计 package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax. ...

  10. ArcGIS案例学习笔记-中国2000坐标转换实例

    ArcGIS案例学习笔记-中国2000坐标转换实例 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:西安1980.中国2000.WGS84(GPS)等任意坐标系 ...