Problemas com Jasper e Struts

2 respostas
D

Pessoal,

estou desenvolvendo um sistema web com struts e preciso fazer uma interface para gerar relatórios em pdf.
Usei o ireport para montar a interface, quando eu compilo o relatório no Ireport, ele funciona normalmente exibindo o pdf no formato correto.
Mas qdo eu migro os arquivos para a pasta da minha aplicação, gero o .war e tento rodar no navegador ( FireFox ), ele abre o pdf mas não aparece nada nele, o pdf está totalmente em branco.

Segue abaixo minhas Actions:

public class RelatorioHelper {

	public byte[] geraRelatorio(String pathArquivoJasper, Pedido pedido) throws IOException, JRException{
		
		JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(pedido.getItemPedido());
		
		Map<String,String> parametros = new HashMap<String,String>();
		parametros.put("Vendedor", pedido.getVendedor().getNome());
		
		byte[] bytes = null;
		
		try{
			bytes = JasperRunManager.runReportToPdf(pathArquivoJasper,parametros ,dataSource);
		}catch(JRException e){
		}
		
		return bytes;
	}
	
	private void configuraResponse(HttpServletResponse response, String fileName, int tamanho){
		
		fileName = fileName.substring(0, fileName.indexOf(".jasper"));
		response.setBufferSize(tamanho);
		response.setContentLength(tamanho);
		response.setHeader("Expires", "0");
		response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
		response.setHeader("Pragma", "public");
		response.setContentType("application/pdf");
		response.addHeader("Content-disposition", "attachment; filename=\"" + fileName +".pdf\"");
		
	}
	
	public void enviaParaBrowser(HttpServletResponse response, byte[] bytesRelatorio) throws IOException{
		
		if(bytesRelatorio != null && bytesRelatorio.length > 0){
			
			configuraResponse(response, "RelatorioPedidos.jasper", bytesRelatorio.length);
			ServletOutputStream outputStream = response.getOutputStream();
			outputStream.write(bytesRelatorio, 0, bytesRelatorio.length);
			outputStream.flush();
			outputStream.close();
			
		}
		
	}
	
}
public class GerarPedidosAction extends Action {
    
	public ActionForward execute(ActionMapping mapping , ActionForm form, 
			HttpServletRequest request, HttpServletResponse response) 
	throws Exception{
		
		
		String idPedido = request.getParameter("idPedido");
		String idVendedor = request.getParameter("idVendedor");
		String idCliente = request.getParameter("idCliente");
		int idFormaPagamento = Integer.parseInt(request.getParameter("idFormaPagamento"));
		
		
		RelatorioHelper helper = new RelatorioHelper();
		ServletContext context = (ServletContext)request.getSession().getServletContext();
		
		String nomeArquivoJasper = context.getRealPath("/reports/RelatorioPedidos.jasper");
		
		ServicePedido sp = new ServicePedido();
		
		Pedido pedido = sp.selecionar(idPedido);
		
		byte[] relatorioBytes = helper.geraRelatorio(nomeArquivoJasper, pedido);
		
		helper.enviaParaBrowser(response, relatorioBytes);
		
		
		
		return (mapping.findForward("pedido"));
	}
    
}

Alguém saberia me ajudar??

Obrigado.

Abraços

2 Respostas

robinsonbsilva

Jovem, faça a mesma operação no IE.

Eu tive o mesmo problema, e não vi erro nenhum em minha lógica…resumindo, hoje no meu caso abre no IE e não dá erro algum…

D

Acontece a mesma coisa no IE.

Abre o pdf totalmente em branco.

Criado 21 de janeiro de 2009
Ultima resposta 21 de jan. de 2009
Respostas 2
Participantes 2