2016-10-13 4 views
0

Я хочу иметь возможность отправлять отчет с JasperReports как приложение. В настоящее время в моем приложении я могу просмотреть отчет, используя JasperReportsViewResolver ниже моей конфигурацияОтправка сгенерированного отчета в виде вложения электронной почты в SpringBoot

@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); 

после сохранения отчета в случайный файл я прочитал его и отправить в качестве вложения.

Любое другое предложение?

ответ

2

Я нашел ниже, чтобы быть лучшим способом

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); 
Смежные вопросы