Duvidas com IReport / Jasper

4 respostas
G

Bom dia pessoa estou com um probleminha aqui com o IReport minha aplicação esta gerando o PDF no browser só que o que preciso é que ele abra a caixa tipo (Download / abrir ) Eu consegui fazer isso usando o:

response.setContentType("application/download");

Só que ele não reconhece o arquivo como PDF ele abra a caixa de download como arquivo desconhecido

se alguem poder ajudar agradeço

Codigo:

public static void execute(ServletContext context, HttpServletRequest request, HttpServletResponse response) {

        byte[] bytes = null;
        HashMap<String, Object> parametros = new HashMap<String, Object>();
        File reportFile = new File(context.getRealPath("WEB-INF//relatorios//formulario"));
        try {
        	SolicitacaoCadastroForm formulario = (SolicitacaoCadastroForm) request.getSession().getAttribute("formulario");
        	
			try {
				List<SolicitacaoCadastroForm> listaFormulario = new ArrayList<SolicitacaoCadastroForm>();
				listaFormulario.add(formulario);
                // PARAMETROS
                parametros.put("imagemTopo", getInputStreamImagemTopo(context));
                bytes = JasperRunManager.runReportToPdf(reportFile.getPath() + "//relatorio_solicitacao_formulario.jasper", parametros, new   JRBeanCollectionDataSource(listaFormulario));////relatorio_denuncia_geral.jasper", parametros, new JRBeanCollectionDataSource(listaDesaparecido));
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }

            if (bytes != null && bytes.length > 0) {
                response.setContentType("application/download");
                response.setContentLength(bytes.length);
                ServletOutputStream ouputStream = response.getOutputStream();
                ouputStream.write(bytes, 0, bytes.length);
                ouputStream.flush();
                ouputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4 Respostas

warley

Fala cara…

Este código faz isto. Eu uso na minha aplicação :wink:

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException{
    	
    	// Obtem o contexto 
        ServletContext context = getServletContext();
    	
    	HttpSession session = request.getSession(true);
    	
    	ExtratoIR extratoIR = (ExtratoIR)session.getAttribute("controleExtratoIR");
    	
    	//Nome do arquivo
    	String fileName = "relatorioExtratoIR.pdf";
    	
    	String aplicpath = context.getRealPath("/");
    	
    	try {
    		
    		//Obtem as informações do Usuário
    	    UsuarioTO to = (UsuarioTO)session.getAttribute("usuario");
    		
    		// carrega os arquivos jasper   
            JasperReport relatorioJasper = (JasperReport)JRLoader.loadObject(context.getRealPath("/relatorios/realtorioExtratoBeneficiarioIR.jasper")); 
    		
            //Obtem da sessão a lista de recibos do reembolso
            List&lt;ReciboIRTO&gt; listaReembolso = extratoIR.getListaReembolso();
            
            //Obtem as informações do total do reembolso
            TotalReciboIRTO totalReciboIRTO = extratoIR.getTotalReciboIRTO();
            
            String participacao = extratoIR.getParticipacao();
            
            JRBeanCollectionDataSource beanDataSource = new JRBeanCollectionDataSource(listaReembolso);
            
            //Parâmetros do relatório
    		Map parametros = new HashMap();
    		parametros.put("aplicpath", aplicpath);
            parametros.put("matricula", to.getMatricula());
    		parametros.put("titular", to.getNome());
    		parametros.put("lotacao", to.getDescricaoLotacao());
    		parametros.put("participacao", participacao);    		
    		parametros.put("anoBase", extratoIR.getAno());
    		parametros.put("totalReciboIRTO", totalReciboIRTO);
    		
    		byte[] file = JasperRunManager.runReportToPdf(relatorioJasper,parametros, beanDataSource);

			response.setContentType("application/pdf");     
	        response.setContentLength(file.length);     
	        response.addHeader("Content-Disposition", "attachment; filename=" + "\"" + fileName + "\"");     
	        
	        ServletOutputStream outputStream = response.getOutputStream();     
	        outputStream.write(file, 0, file.length);
	        outputStream.flush();     
	        outputStream.close();
            
    	} catch (Exception e) {
			System.out.println("EROO: "+ e.getMessage());
		}
    }
warley

Acho q no seu código só faltou isto:

G

warley:

Acho q no seu código só faltou isto:


response.addHeader(“Content-Disposition”, “attachment; filename=” + “”" + fileName + “”");

Certo vou tentar usar.

G

guilherme2109:
warley:

Acho q no seu código só faltou isto:


response.addHeader(“Content-Disposition”, “attachment; filename=” + “”" + fileName + “”");

Certo vou tentar usar.

Cara era apenas isso mesmo

Vlwwwwwwww!!!

Criado 18 de maio de 2010
Ultima resposta 18 de mai. de 2010
Respostas 4
Participantes 2