[RESOLVIDO] Exibir Relatório em sistema web

Boa tarde pessoal,

To terminando de testar meu primeiro projeto web (com Java + Spring MVC), e estou gerando criando os Relatórios com o IReports, e utilizando o Jasper Viewer para exibir os relatórios.
Porém, durante os testes, deixei uma maquina rodando centos para acesso da rede interna, e quando o relatório é aberto para visualização, é aberto pelo Jasper Viewer dentro do servidor, e não dentro da máquina dos usuários que estão utilizando o sistema.

Como faço para exibir esses relatórios nas máquinas dos usuários do sistema?

Grato desde já, abraços.

Você precisa criar um servlet para atender uma requisição e devolver um pdf para o navegador do cliente…

Boa tarde,

Primeiramente, muito obrigado pela ajuda e atenção.

Você tem algum exemplo de como faço isso? Sei que tenho que usar a classe HttpServletResponse pra gerar a saída pro browser do cliente, passando um array de bytes do relatório.
Tô apanhando justo nisso, na hora de carregar o relatório pra um array de bytes.

Muito obrigado novamente.

Abraços.

Consegui, porém, não funciona no Internet Explorer 8 (apenas no Chrome e Firefox)

Código:

[code]//gerando o relatório para impressão
String caminho = request.getServletContext().getRealPath("/WEB-INF/relatorios/relatorio_mysql.jasper");

		try {
			JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(caminho);
			
			Map<String, Object> parametro = new HashMap<String, Object>();
			parametro.put("parametro_id_lote", lote.getIdLote());
			
			byte[] bytes = null;
			bytes = JasperRunManager.runReportToPdf(relatorioJasper, parametro, connection);
			
			if (bytes != null && bytes.length > 0) {
				response.setHeader("Cache-Control", "no-store");
				response.setHeader("Pragma", "no-cache");
				response.setDateHeader("Expires", 0);
				response.setContentType("application/pdf");  
                response.setContentLength(bytes.length);  

                ServletOutputStream ouputStream;
				try {
					ouputStream = response.getOutputStream();
					ouputStream.write(bytes, 0, bytes.length);  
                    ouputStream.flush();  
                    ouputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}  
                  
			}
			
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}[/code]

Quando chamo o relatório no Internet Explorer, ele não abre o pdf, deixando a parte de visualização do html cinza, com nada dentro.

Alguem já passou por esse mesmo problema?

Abraços.

[quote=$ERVER]Consegui, porém, não funciona no Internet Explorer 8 (apenas no Chrome e Firefox)

Código:

[code]//gerando o relatório para impressão
String caminho = request.getServletContext().getRealPath("/WEB-INF/relatorios/relatorio_mysql.jasper");

		try {
			JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(caminho);
			
			Map<String, Object> parametro = new HashMap<String, Object>();
			parametro.put("parametro_id_lote", lote.getIdLote());
			
			byte[] bytes = null;
			bytes = JasperRunManager.runReportToPdf(relatorioJasper, parametro, connection);
			
			if (bytes != null && bytes.length > 0) {
				response.setHeader("Cache-Control", "no-store");
				response.setHeader("Pragma", "no-cache");
				response.setDateHeader("Expires", 0);
				response.setContentType("application/pdf");  
                response.setContentLength(bytes.length);  

                ServletOutputStream ouputStream;
				try {
					ouputStream = response.getOutputStream();
					ouputStream.write(bytes, 0, bytes.length);  
                    ouputStream.flush();  
                    ouputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}  
                  
			}
			
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}[/code]

Quando chamo o relatório no Internet Explorer, ele não abre o pdf, deixando a parte de visualização do html cinza, com nada dentro.

Alguem já passou por esse mesmo problema?

Abraços.[/quote]

Não estou vendo nada aparentemente errado no seu código não… Não poderia ser plugin do reader nestes navegadores?

Além disso, em alguns navegadores, a janela com pdf abre em um pop-up, ao invés de nova aba… já verificou o bloqueador de pop-ups também???

Boa tarde rodrigomarcelo,

Realmente IE e Firefox estão com problema para visualizar outros pdf.
Vou atualizar o adobe reader aqui e logo posto a resposta.

Muito obrigado, abraços.

Atualizado o adobe reader funcionou.

Muito obrigado pela ajuda.

Abraços.

Precisando, tamo aee… abraço…

Opa, tava precisando disso mesmo rs.