Como gerar um relatório pdf no Ireport com dados vindos de um formulário?
3 respostas
M
marcelodimb
Prezados,
Estou precisando gerar relatórios pdf em java e escolhi as tecnologias JasperReports e iReport para isso.
Tenho até encontrado muitos tutoriais que explicam seu funcionamento, entretanto TODOS eles se baseiam como entrada de dados, um banco de dados, seja MySQL, Firebird etc.
Meu problema é que minha aplicação vai entrar com dados vindos não de uma base de dados e sim de um simples formulário HTML.
Minha dúvida é a seguinte: existe uma maneira simples de ler esses dados vindos de um formulário?
Não é muito simples, mais você pode usar a classe net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.
Exemplo usando servlet:
InputStreamreportStream=context.getExternalContext().getResourceAsStream("/relatorioExemplo.jasper");response.setContentType("application/pdf");response.setHeader("Content-disposition","attachment;filename=RelatorioExemplo.pdf");ServletOutputStreamservletOutputStream=response.getOutputStream();// Recuperando informação do formulárioStringnome=request.getParameter("nome");Stringsexo=request.getParameter("sexo");// classe exemploPessoapessoa=newPessoa(nome,sexo);// Aqui deve ser criada uma lista de objetosList<Pessoa>pessoas=newArrayList<Pessoa>();pessoas.add(pessoa);// Aqui vc passa como por parametro sua ColeçãoJRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(pessoas);Mapparametros=newHashMap();try{JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream,parametros,ds);}catch(JRExceptione){e.printStackTrace();}context.responseComplete();servletOutputStream.flush();servletOutputStream.close();
Lembrando que na criação do relatório no IReport você deve colocar no classPath da aplicação sua classe que foi passada por parâmetro, que no meu exemplo foi a classe Pessoa.