ireport 生成pdf流。直接传浏览器供展示或下载

简单的表示一下:
 

方法中 传入参数HttpServletRequest request, HttpServletResponse response。

//模板路径
String source = pdfTemplateBase + "/reportRecodeItem.jasper";

List<Object> listOb = new ArrayList<Object>();
//map中装载 模板中的 Fields
Map<String,Object> map = new HashMap<String,Object>();
listOb.add(map);//装载数据
//准备数据
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(listOb);
InputStream inputeStream = new FileInputStream(new File(source));
//调用接口,得到生成后的 pdf 字节数组
byte[] exportReportToPdf = JasperRunManager.runReportToPdf(inputeStream, new HashMap(), dataSource);
//文件名 根据请求浏览器,对应不同字符集
String filename = "检查记录表"+DateUtils.getCurrentDateString()+".pdf";
if ((request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) || (request.getHeader("User-Agent").contains("Trident"))) {  
    System.out.println("IE");
    filename = URLEncoder.encode(filename, "UTF-8");  
} else {  
    System.out.println("非IE");
    filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");  
}
response.setHeader("Content-Disposition", "inline;filename="+filename); 

OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
toClient.write(exportReportToPdf);
toClient.flush();
toClient.close();

发现大部分的做法都是 本地生成一个文件,然后再读取文件或者传一个生成的路径,感觉没有必要。

下载功能,直接返回文件流,服务器本地不会生成文件(主要还是因为自己的强迫症,不想在服务器生成不需要的文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值