[RESOLVIDO] Exibir Relatório em sistema web

8 respostas
E

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.

8 Respostas

R

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

E

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.

E

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

Código:

//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();
			}

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.

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

Código:

//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();
			}

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.

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???

E

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.

E

Atualizado o adobe reader funcionou.

Muito obrigado pela ajuda.

Abraços.

R

Precisando, tamo aee… abraço…

V

Opa, tava precisando disso mesmo rs.

Criado 17 de dezembro de 2012
Ultima resposta 19 de dez. de 2012
Respostas 8
Participantes 3