Jasper打印示例
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打印示例的更多相关文章
- JASPER打印单据,标签开发培训, 界面开发培训
JASPER打印单据,标签开发培训软件:TIBC JASPER Studio.Jaspersoft Studio是一个专为JasperReports报表引擎而开发的报表设计器,是 iReport设计器 ...
- C# 标签打印示例 1
初次写博客,有哪些不足的地方,还请多多指点,给予建议,谢谢! 如若想要源码,请留言. 本实例是在Webservice 中通过excel做模板来打印标签.具体需求是:一个订单一页纸打印4行 ...
- jasper打印实例2 ----通过文件字节流获得PDF格式图片
public class IspReportUtil { public static String exportReportToByte(CommonReportHandler handler)thr ...
- Qt5.3 打印示例时出现错误
说明:今天我在用Qt5.3写打印文档的时候,编译出错了,出错代码为: C:\Users\joe\Desktop\5-9\myPrint\mainwindow.cpp:35: error: undefi ...
- Python win32打印示例
# -*- coding:utf-8 -*- # Author: Pete Yim<xpHook@gmail.com> # Date : 13-8-22 # Copyright (c) 2 ...
- jasper打印文件出现空白页面
EG:打印文件结果打印出一片空白 原因:使用了null的数据源而不是JREmptyDataSource 以下为正确代码 public <T> List<JasperPrint> ...
- 吉特仓库管理系统-.NET打印问题总结
在仓储系统的是使用过程中避免不了的是打印单据,仓库系统中包含很多单据:入库单,出库单,盘点单,调拨单,签收单等等,而且还附带着很多的条码标签的打印.本文在此记录一下一个简单的打印问题处理方式.处理问题 ...
- 重新想象 Windows 8 Store Apps (41) - 打印
[源码下载] 重新想象 Windows 8 Store Apps (41) - 打印 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 打印 示例1.需要打印的文档Pr ...
- gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法
1.一般为了表格显示数据更直观,经常会显示行号以及总数.让gridcontrol显示行号,首先你需要设置一下显示行号的宽度,也就是IndicatorWith.默认值为-1,可根据实际数值需要设置宽度, ...
随机推荐
- hadoop报错:hdfs.DFSClient: Exception in createBlockOutputStream
hadoop跑任务搞的好好的,后来把hadoop-dir移了一个位置,结果报错: java.io.EOFException: Premature EOF: no length prefix avail ...
- 机器学习进阶-svm支持向量机
支持向量机需要解决的问题:找出一条最好的决策边界将两种类型的点进行分开 这个时候我们需要考虑一个问题,在找到一条直线将两种点分开时,是否具有其他的约束条件,这里我们在满足找到一条决策边界时,同时使得距 ...
- java字符串常量池——字符串==比较的一个误区
转自:https://blog.csdn.net/wxz980927155/article/details/81712342 起因 再一次js的json对象的比较中,发现相同内容的json对象使用 ...
- Linux命令:ssh
ssh介绍 ssh用法 ssh帮助 SSH() BSD General Commands Manual SSH() NAME ssh — OpenSSH SSH client (remote logi ...
- Linux文件的时间
关于Linux文件的ctime.atime和mtime等几个时间的介绍,推荐<Linux的3个文件时间>比较不错,这篇文章已经介绍的比较全面了,但是本文对它做进一步的解释,并对一些情况进行 ...
- linux 3.10 的中断收包笔记
来看下NAPI和非NAPI的区别: (1) 支持NAPI的网卡驱动必须提供轮询方法poll(). (2) 非NAPI的内核接口为netif_rx(),NAPI的内核接口为napi_schedule() ...
- C# 无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误解决办法
“/CRM”应用程序中的服务器错误. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法识别的属性“targetF ...
- centos 下安装redis
一.安装redis 第一步:下载redis安装包 redis下载地址 wget http://download.redis.io/releases/redis-5.0.3.tar.gz 第二步:解压压 ...
- win10 时间很烦
1.刷2次策略.2.打开控制面板-管理工具-服务里,有个windows time的服务,应该是正在运行,手动(触发),右键停止.3.win+r,regedit,打开注册表,找到HKEY_LOCAL_M ...
- go io包
https://studygolang.com/articles/9424 https://blog.csdn.net/trochiluses/article/details/44338407