Jasper reports 如何在ajax请求成功后的新选项卡中显示Jasper报告PDF流
在下面的代码中,我可以将jasper报告(.jasper)文件导出为HTML或PDF文件到本地文件系统中,但无法在新窗口/选项卡中以PDF格式显示报告 我该怎么做 处理jasper报表pdf创建的Spring控制器类方法Jasper reports 如何在ajax请求成功后的新选项卡中显示Jasper报告PDF流,jasper-reports,Jasper Reports,在下面的代码中,我可以将jasper报告(.jasper)文件导出为HTML或PDF文件到本地文件系统中,但无法在新窗口/选项卡中以PDF格式显示报告 我该怎么做 处理jasper报表pdf创建的Spring控制器类方法 @Controller @RequestMapping("/MySearchCtrl") MySearchCtrl { @Autowired ServletConext servletContex
@Controller
@RequestMapping("/MySearchCtrl")
MySearchCtrl {
@Autowired
ServletConext servletContext;
@RequestMapping(value="/loadJasperReport", method=RequestMethod.GET)
public void loadJaspeeReport(HttpServletResponse response, HttpServletRequest request){
String reportSrcFile = "/WEB-INF/MyReport.jasper";
try {
response.setContentType("application/pdf");
response.addHeader("Content-Disposition","attachment;inline=My_"Report.pdf");
List<MyReportBean> beanList = new ArrayList<MyReportBean>();
// add the beans to the beanList here
InputStream is = this.getClass().getClassLoader().getResourceAsStream(servletContext.getRealPath(reportSrcFile));
JasperReport jasperReport = (JasperReport)JRLoader.loadObjct(is);
JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(beanList);
Map<String,Object> parameters = new HashMap<String,Object>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,beanCollectionDataSource);
JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream()); // DOES NOT WORK. NO ERROR Either
JasperExportManager.exportReportToHtmlFile(jasperPrint,"C:\\Users\dipak\Deskop\report.html"); // DOES WORK
JasperExportManager.exportReportToPdfFile(jasperPrint,"C:\\Users\dipak\Deskop\report1.pdf"); //DOES WORK
} catch(Exception e){
e.printStackTrace();
}
}
}
Js文件更改
function generateJasperReport(){
window.open('/MySearch/SearchResults/MySearchCtrl/loadJasperReport/'+requestParameter,'_blank');
//_blank is to open in a new tab
}
@RequestMapping(value="/loadJasperReport/{requestParam}", method=RequestMethod.GET)
public void loadJaspeeReport(@PathVariable String requestParam, HttpServletResponse response, HttpServletRequest request){
// introduced @PathVariable and added requestParam to @RequestMapping
// remaining code remains same as in question
}
Servlet Ctrl更改
function generateJasperReport(){
window.open('/MySearch/SearchResults/MySearchCtrl/loadJasperReport/'+requestParameter,'_blank');
//_blank is to open in a new tab
}
@RequestMapping(value="/loadJasperReport/{requestParam}", method=RequestMethod.GET)
public void loadJaspeeReport(@PathVariable String requestParam, HttpServletResponse response, HttpServletRequest request){
// introduced @PathVariable and added requestParam to @RequestMapping
// remaining code remains same as in question
}