Duvida ao exibir um relatório PDF com o jasperReport[RESOLVIDO]


public void gerarRelatorioEmPdf(String nomeJasperRelatorio,List<?> list) throws JRException{
		JRBeanCollectionDataSource jrRS = new JRBeanCollectionDataSource(list);

		Map<String, String> parametros = new HashMap<String, String>();

		JasperPrint impressao = JasperFillManager.fillReport(nomeJasperRelatorio,
				parametros, jrRS);
		JasperViewer viJasperViewer = new JasperViewer(impressao,false);
		viJasperViewer.show();
		}
}

no forum já vi varios exemplos de como gerar um relatório pdf com o jasper
consigo gerar o relatório de forma normal com o jasperViewer…
mas queria exibir esse relatório já no formado PDF na tela
Alguem pode me dar um exemplo de como posso fazer isto?

esta na mão um exemplo:
Gerar Relatório .PDF em uma Servlet
Você pode chamar o .PDF e pedir pra chamar um leitor!
vlw

Olá UMC tudo bem?
Então… eu queria gerar o relatório sem precisar trabalhar com servelt
e também quero mostrar o relatório na tela antes dele ser gravado em disco…
porque quem vai decidir se vai gravar ou não… será o usuário…
eu apenas quero exibir o relatório em formato PDF na tela…

[quote=carolino]Olá UMC tudo bem?
Então… eu queria gerar o relatório sem precisar trabalhar com servelt
e também quero mostrar o relatório na tela antes dele ser gravado em disco…
porque quem vai decidir se vai gravar ou não… será o usuário…
eu apenas quero exibir o relatório em formato PDF na tela…[/quote]
Ok, então no caso é Desktop!?

vlw

tenta isso:

java.awt.Desktop desktop = java.awt.Desktop.getDesktop(); desktop.open(new File("C:\\arquivo.pdf"));

PS.Você pode postar seu código todo!?
Gostaria de colocar no meu Blog!
Eu te referencio!

vlw

Claro meu caro UMC…
É que to na facul agora… chegando em casa vou testar… arruma
Dando certo ou não ou posto o código todo aki o/
Desde já valew msm pela ajuda

UMC

perceba que… se eu fizer

 java.awt.Desktop desktop = java.awt.Desktop.getDesktop();    
 desktop.open(new File("C:\\arquivo.pdf"));   

eu precisaria que meu arquivo.pdf já tivesse sido gerado para depoi ser aberto…
Eu quero que o jasperReport imprima primeiro o relatorio em .pdf na tela
E o usuário irá escolher se o arquivo será salvo em disco ou não…

Minha dúvida é… como vou exibir o arquivo no formato .pdf na tela?

Ok,
isso vai ajudar!
http://mediacast.sun.com/users/patriceG/media/JasperReportGeneration-How-to-Guide-DRAFT-0.1.pdf

vlw

Depois de quebrar muito a cabeça e pesquisar muuuito no google e no forum, achei esse post:
http://www.guj.com.br/posts/list/94138.java , e baseado no código que o Jorge_Almeida postou fiz algumas
modificações e consegui resolver o problema.
Vou postar o código pra ajudar quem estiver com a mesma dificuldade:

public void imprimirRelatorioListaDeVendedores()throws Exception {
		new GerenciadorDeRelatorio("RelatorioDeVendedores.jasper", getVendedores());
	}
public GerenciadorDeRelatorio(String nomeDoRelatorio, 
			List<?> list) throws JRException, IOException, ClassNotFoundException, SQLException {
		
		String layout = obterPath(nomeDoRelatorio);
		
		gerarRelatorioEmPdf(layout, list);
	}
public String obterPath(String nomeRelatorio) {
		String layout;
		ServletContext servletContext = (ServletContext) FacesContext
				.getCurrentInstance().getExternalContext().getContext();
		layout = servletContext.getRealPath("Relatorios/" + nomeRelatorio);
		return layout;

	}
public void gerarRelatorioEmPdf(String nomeJasperRelatorio, List<?> list)
			throws JRException, IOException {
		
		FacesContext facesContext = FacesContext.getCurrentInstance();  
		ServletOutputStream ouputStream = null;
  
		     try {  
		         Map parametro = new HashMap();  
		         JRBeanCollectionDataSource jrRS = new JRBeanCollectionDataSource(list);
		   
		          
		         JasperPrint jp = JasperFillManager.fillReport(nomeJasperRelatorio, parametro,jrRS);  
		         byte[] bytes = JasperExportManager.exportReportToPdf(jp);  
		               
		         HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();  
		         response.setContentType("application/pdf");  
		         response.addHeader("Content-Disposition", "attachment; filename=Vendedores.pdf");    
		           
		         ouputStream = response.getOutputStream();  
		           
		         JRPdfExporter exporterPdf = new JRPdfExporter();  
		          exporterPdf.setParameter(JRPdfExporterParameter.JASPER_PRINT ,jp);  
		          exporterPdf.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, ouputStream);  
		          exporterPdf.exportReport();  
		                
		          facesContext.responseComplete();  
		          ouputStream.flush();  
		                
		                
		     } catch (FileNotFoundException e) {  
		         e.printStackTrace();  
		     } catch (JRException e) {  
		         e.printStackTrace();  
		     } catch (IOException e) {  
		         e.printStackTrace();  
		     } finally {  
		         try {  
		             if (ouputStream != null) ouputStream.close();  
		         } catch (IOException e) {  
		             e.printStackTrace();  
		         }  
		     }  
		     
	}

Obrigado a todos que me ajudaram… vlw pela força UMC

Aeeeeeee !
Parabéns!

PS. colocar o tópico como resolvido!

Chek PM!
vlw