Java 在SpringBoot中将生成的报告作为电子邮件附件发送
我希望能够将JasperReports生成的报告作为附件发送。目前,在我的应用程序中,我可以使用JasperReportsViewResolver查看报告。下面是我的配置Java 在SpringBoot中将生成的报告作为电子邮件附件发送,java,spring-mvc,spring-boot,jasper-reports,Java,Spring Mvc,Spring Boot,Jasper Reports,我希望能够将JasperReports生成的报告作为附件发送。目前,在我的应用程序中,我可以使用JasperReportsViewResolver查看报告。下面是我的配置 @Bean public JasperReportsViewResolver getJasperReportsViewResolver() { JasperReportsViewResolver resolver = new JasperReportsViewResolver(); resolver.setPrefix
@Bean
public JasperReportsViewResolver getJasperReportsViewResolver() {
JasperReportsViewResolver resolver = new JasperReportsViewResolver();
resolver.setPrefix("classpath:/static/jasper/");
resolver.setSuffix(".jrxml");
resolver.setReportDataKey("datasource");
resolver.setViewNames("rpt_*");
resolver.setViewClass(JasperReportsMultiFormatView.class);
resolver.setOrder(0);
return resolver;
}
我无法从这个viewresolver获取输入资源,所以下面是我的想法,但我不确定这是否是最好的方法
JasperDesign jasperDesign = JRXmlLoader.load(getClass().getResourceAsStream("/jasper/rpt_media.jrxml"));
JasperReport report = JasperCompileManager.compileReport(jasperDesign);
JRDataSource reportData = new JREmptyDataSource();
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("reportTitle", "dfa dafdf d dfd");
OutputStream stream = new FileOutputStream(tempfile);
JasperReportsUtils.renderAsPdf(report, parameters, reportData, stream);
JRDataSource ds = new JRBeanCollectionDataSource(reportList);
Resource report = new ClassPathResource("static/jasper/rpt_report.jasper");
JasperPrint jasperPrint = JasperFillManager.fillReport(report.getInputStream(), Collections.EMPTY_MAP,ds);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, baos);
DataSource aAttachment = new ByteArrayDataSource(baos.toByteArray(), "application/pdf");
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setTo("xxxxxx");
helper.setFrom("xxxxx");
helper.setSubject("Testing Email");
String text = "Testing Email";
helper.setText(text, false);
helper.addAttachment("report.pdf",aAttachment);
mailSender.send(message);
JasperDesign-JasperDesign=jrxmloader.load(getClass().getResourceAsStream(“/jasper/rpt_media.jrxml”);
JasperReport=JasperCompileManager.compileReport(jasperDesign);
JRDataSource reportData=新的JREptyDatasource();
映射参数=新的HashMap();
参数put(“报告标题”、“dfa DAFD dfd”);
OutputStream=新文件OutputStream(tempfile);
renderAsPdf(报告、参数、报告数据、流);
在将报告保存到随机文件后,我确实阅读了它并将其作为附件发送
还有其他建议吗?我发现下面是最好的方法
JasperDesign jasperDesign = JRXmlLoader.load(getClass().getResourceAsStream("/jasper/rpt_media.jrxml"));
JasperReport report = JasperCompileManager.compileReport(jasperDesign);
JRDataSource reportData = new JREmptyDataSource();
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("reportTitle", "dfa dafdf d dfd");
OutputStream stream = new FileOutputStream(tempfile);
JasperReportsUtils.renderAsPdf(report, parameters, reportData, stream);
JRDataSource ds = new JRBeanCollectionDataSource(reportList);
Resource report = new ClassPathResource("static/jasper/rpt_report.jasper");
JasperPrint jasperPrint = JasperFillManager.fillReport(report.getInputStream(), Collections.EMPTY_MAP,ds);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, baos);
DataSource aAttachment = new ByteArrayDataSource(baos.toByteArray(), "application/pdf");
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setTo("xxxxxx");
helper.setFrom("xxxxx");
helper.setSubject("Testing Email");
String text = "Testing Email";
helper.setText(text, false);
helper.addAttachment("report.pdf",aAttachment);
mailSender.send(message);
什么是特定的库导入jar文件?这个网址对我有用