Olá pessoal, estou fazendo um relatório, e preciso que o usuário escolha onde este arquivo será salvo.
Consigo fazer salvar direto no servidor ou diretório do projeto, mas não achei suporte no site do “http://dynamicreports.sourceforge.net/”.
Sei que tem o método “export.pdfExporter” para passar o OutputStream para exportar, mas parece precisar de mais alguma configuração e não sei qual é.
Segue o código que estou tentando fazer funcionar. Alguém sabe onde estou errando?
Obrigado a todos.
public void generatePdfFile(String nameFile) throws ServletException, IOException{
try {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=\"relatorio.pdf\"");
ServletOutputStream responseStream = response.getOutputStream();
JasperPdfExporterBuilder pdfExporter = export.pdfExporter(responseStream);
/*Nesta linha comentada, o relatório é salvo no servidor
JasperPdfExporterBuilder pdfExporter = export.pdfExporter("./src/main/resources/"+nameFile+".pdf");
*/
report = DynamicReports.report();
//Aqui eu seto os dados do relatório em outros métodos
report.setDataSource(createLineList(createHeaderList()));
report.setTemplate(Templates.reportTemplate);
report.ignorePageWidth() ;
report.setPageFormat(PageType.A3, PageOrientation.LANDSCAPE);
report.toPdf(pdfExporter);
report.toPdf(responseStream);
responseStream.flush();
responseStream.close();
context.renderResponse();
context.responseComplete();
} catch (DRException e) {
e.printStackTrace();
}
}