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,可根据实际数值需要设置宽度, ...
随机推荐
- offsetof使用小结
先上例子 #include <stdio.h> #include <stdlib.h> /* offsetof example */ #include <stddef.h ...
- 使用Prometheus+Grafana监控MySQL实践
一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...
- jquery 设计的扩展---初级
1. 写一个构造函数G,调用G 时,返回G上的fn 对象的init() 的实例 2.设置G.fn 的指向,使用G.fn 与G.prototype指向同一个对象 2.1 重写G.prototype 对象 ...
- Oracle VM VirtualBox各种显示模式切换 热键
初用VirtualBox, 几个显示切换快捷键还是要记一下的: Right Ctrl + F -- 切换到全屏模式 Right Ctrl + L -- 切换到无缝模式 Ri ...
- 在JSP页面中导入jstl标签库
1 在工程中引用JSTL的两个jar包和标签库描述文件. (1)在项目上右击,从弹出的快捷键菜单中选择Properties命令,在出现的项目属性对话框上,选择DeploymentAssembly. ( ...
- [PHP]对Json字符串解码返回NULL的一般解决方案
---------------------------------------------------------------------------------------------------- ...
- css3的2D和3D的转换
一:2D转换: 通过 CSS3 transform转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 2D移动:translate().使用translate()函数,你可以把元素从原来的位置移 ...
- (转)Python新手写出漂亮的爬虫代码2——从json获取信息
https://blog.csdn.net/weixin_36604953/article/details/78592943 Python新手写出漂亮的爬虫代码2——从json获取信息好久没有写关于爬 ...
- listview点击checkbox,修改值
1.初始化控件 listView1.Items.Clear(); listView1.Columns.Clear(); ColumnHeader ch = ...
- CSS 颜色
color属性可以指定HTML文本的颜色. HTML的颜色采用以下3种方式表示. RGB值 使用红色.绿色.蓝色等不同比例表示,如 1 rgb(100,90,90) 值在0~255之间. 十六进制编码 ...