Java 使用带Spring 4.x的JasperReportsViewResolver将pdf保存在磁盘上
我使用的是SpringBoot、SpringDataREST和JasperReport(6.x)。 我创建了一个REST控制器,它应该在磁盘上导出一个PDF报告,并向客户端返回一个“ok”字符串。因此,它与通常的用例有点不同,在这种用例中,用户可以将PDF发送回客户端 根据最佳实践,我使用本回复的解决方案4:对于PDF返回给客户端的“正常”用例:Java 使用带Spring 4.x的JasperReportsViewResolver将pdf保存在磁盘上,java,spring,spring-mvc,jasper-reports,Java,Spring,Spring Mvc,Jasper Reports,我使用的是SpringBoot、SpringDataREST和JasperReport(6.x)。 我创建了一个REST控制器,它应该在磁盘上导出一个PDF报告,并向客户端返回一个“ok”字符串。因此,它与通常的用例有点不同,在这种用例中,用户可以将PDF发送回客户端 根据最佳实践,我使用本回复的解决方案4:对于PDF返回给客户端的“正常”用例: @RequestMapping(value = "/refunds/{id}/export", method = RequestMet
@RequestMapping(value = "/refunds/{id}/export", method = RequestMethod.GET)
public ModelAndView exportPdf(@PathVariable("id") Long id, HttpServletRequest request, Locale locale) throws Exception {
Refund refund = refundRepository.findOne(id);
if (refund != null) {
ModelMap model = new ModelMap();
model.addAttribute("datasource", new JREmptyDataSource(1));
model.addAttribute("model", refund);
return new ModelAndView("RefundPdfView-IT", model);
} else {
throw new ResourceNotFoundException();
}
}
这种方法非常简洁,我在属性文件中创建了映射:
#REFUND
RefundPdfView-IT.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView
RefundPdfView-IT.url=classpath:/reports/accounting/refunds/Refund-IT.jrxml
我想知道是否可以重用这种方法将PDF保存在服务器的磁盘上,而不是将其发送回客户端。
我希望重用定义的映射,而不硬编码报告的位置和名称
请给我一些建议。首先我想指出的是,您需要JasperExportManager。 exportReportToPdfFile(JasperPrint JasperPrint,java.lang.String文件名) 在服务器中本地保存文件 从您的用例来看,不清楚为什么要将文件保存在服务器中,我觉得与其保存文件,不如保存搜索参数。因此,当您单击参数时,您将再次获得/生成pdf文件 或者,您应该在服务器中使用curl,并使用参数调用所需的url