Bom dia galera, Estou tentando exibir um relatorio ireport em formato PDF em uma pagina web.
Basicamente, eu envio para o iReport um ArrayList com os objetos para o relatorio , o JasperReport gera o relatorio.
O codigo abaixo se encontra no Servlet que fiz para fazer esta funçao, mas, neste código o relatorio esta sendo exibido no JasperViewer, e eu quer exibi-lo em uma pagina web em formato PDF.
Alguem sabe comom posso fazer?
Obrigado!
coloque esse codigo dentro de um servlet… obs: esse código ta usando metodos que ja são deprecated, mas funciona direitinho, qualquer coisa, só perguntar…
C
christianovale
Cara, não deu certo.
A linha (JasperReport relatorio = JasperManager.loadReport(stream) dispara uma nullPointerException.
O que mais pode estar acontecendo?
try{JRDataSourcejr=newJRBeanArrayDataSource(array.toArray());//Aquielecriaorelatório//JasperPrintimpressao=JasperFillManager.fillReport(pathJasper+"/TesteArrayList.jasper",parametros,jr);//------------//carregaorelatóriocompiladoInputStreamstream=getServletContext().getResourceAsStream("c:/TesteArrayList.jasper");JasperReportrelatorio=JasperManager.loadReport(stream);JasperPrintimpressao=JasperManager.fillReport(relatorio,parametros,jr);JasperManager.printReportToPdfStream(impressao,res.getOutputStream());//------------/*JasperViewerjrviewer=newJasperViewer(impressao,false);jrviewer.show();*/}catch(Exceptione){res.getWriter().println("Erro ao gerar o relatório: "+e);e.printStackTrace();}
M
mrblack
christianovale,
muito provavelmente na linha abaixo,
InputStream stream = getServletContext().getResourceAsStream("c:/TesteArrayList.jasper");
o metodo getResourceAsStream não está achando esse path que você informou, para corrigir isso, se estiver usando o tomcat, coloque o jasper dentro da pasta em que você está fazendo deploy, e informe o caminho relativo desta pasta no metodo getResourceAsStream, por exemplo, se eu .jasper estiver na raiz da sua pasta da sua app, simplesmente informe o nome deste .jasper…
na minha aplicacao eu utilizo deste jeito, qq coisa posta aí q ajudamos…
Desculpe, mas, como sou novato com relaçao a iReport estou apanhando ainda. So não consegui ainda foi gerar o relatorio em pdf mas, em todos os outros formatos funcionaram.
Obrigado!
M
mrblack
cara, da uma olhada pra ver se vc tem o jar do iText na sua lib do tomcat…
essa classe aí, que ta faltando, faz parte do iText…
tip: para resolver os problemas de class not found mais facilmente, use esse site aqui, http://www.jarfinder.com/, é super bom…
C
christianovale
Ok, mas, estou tentando achar o download do arquivo itext.jar mas não está achando. O nome é este mesmo?
C
christianovale
Opa, Funcionou!
Muito obrigado, mrblack!
Valew!
F
felipesp
Paraevitarousodemétododeprecated,troquealinha#1 pela linha #2.#1JasperManager.printReportToPdfStream(jasperPrint,out);#2JasperExportManager.exportReportToPdfStream(jasperPrint,out);
R
RobsonFagundes
mrblack:
christianovale,
muito provavelmente na linha abaixo,
InputStream stream = getServletContext().getResourceAsStream("c:/TesteArrayList.jasper");
o metodo getResourceAsStream não está achando esse path que você informou, para corrigir isso, se estiver usando o tomcat, coloque o jasper dentro da pasta em que você está fazendo deploy, e informe o caminho relativo desta pasta no metodo getResourceAsStream, por exemplo, se eu .jasper estiver na raiz da sua pasta da sua app, simplesmente informe o nome deste .jasper…
na minha aplicacao eu utilizo deste jeito, qq coisa posta aí q ajudamos…
Fiz um Servlet relatorio parecido com q vc sugeriu ai
tem como vc me dar uma ajuda ???
o font e esse:
try{// carrega o relatório compilado InputStreamendStream=getServletContext().getResourceAsStream("E:/ProjetosWeb/EtiquetasWeb/xxxxxx/relatorios/etiquetaDestinatarios.jasper");// recebe end do relatorioJasperReportjr=JasperCompileManager.compileReport(endStream);// preenche o relatorio com os dados do BC(ou no)JasperPrintjp=JasperFillManager.fillReport(jr,parametros,newJRBeanCollectionDataSource(Vetiq));JasperExportManager.exportReportToPdfStream(jp,response.getOutputStream());// gera a visualizacao(preview) do relatorioJasperViewer.viewReport(jp);response.sendRedirect("imprimirEtiqueta.jsp");}catch(JRExceptionJREex){System.out.println("Afffffffff ta dando bug nesse Relatorio !!!!!!!!!!!!");JREex.printStackTrace();}}