try{RelConexaorc=newRelConexao();rc.conexaorel();// Faz a conex�o// Na variavel pathJasper ficara o caminho do diret�rio para// os relat�rios compilados (.jasper)StringpathJasper=getServletContext().getRealPath("/relatorios")+"/";// A variavel path armazena o caminho real para o contexto// isso � util pois o seu web container pode estar instalado em lugares// diferentesStringpath=getServletContext().getRealPath("/");// Parametros do relatorioMapparametros=newHashMap();// O �nico parametro que devemos passar � o PathRelAutores// � o caminho pro RelAutores.jasper (que foi subtituido pelo// valor fixo �D:/iReport-0.4.0/RelAutores.jasper�)parametros.put("",pathJasper+"Nome_Relatorio.jasper");try{// Aqui ele cria o relat�rioJasperPrintimpressao=JasperFillManager.fillReport(pathJasper+"Nome_Relatorio.jasper",parametros,conexao);// Grava o relat�rio em disco em pdfJasperManager.printReportToPdfFile(impressao,path+"Nome_Relatorio.pdf");// Redireciona para o pdf geradoresponse.sendRedirect("Nome_Relatorio.pdf");}catch(Exceptione){response.getWriter().println("Erro ao gerar o relatório: "+e);System.out.print("Erro ao gerar o relatório: "+e);}}catch(Exceptione){System.out.println("Erro: "+e);}}
J
jMotoca
você vai ter que passar para o método setBytes o nome do arquivo.
Mostre-nos como você faz para criar o pdf (o momento que você indica o .jasper para gerá-lo)
publicstaticvoidsetBytes(byte[]bytes,StringmimeType,Stringfilename){HttpServletResponseservletResponse=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();if(bytes!=null&&bytes.length>0){// envia o relatório em formato PDF para o browserservletResponse.setContentType(mimeType);servletResponse.setContentLength(bytes.length);servletResponse.setHeader("Content-disposition","attachment; filename=\""+filename+"\"");ServletOutputStreamouputStream;try{ouputStream=servletResponse.getOutputStream();ouputStream.write(bytes,0,bytes.length);ouputStream.flush();ouputStream.close();}catch(IOExceptione){e.printStackTrace();}}FacesContext.getCurrentInstance().responseComplete();}publicstaticStringimprimir(StringpathReport)throwsException{byte[]bytes=null;Stringurl="jdbc:postgresql://localhost/BancodeDados";Stringuser="postgres";Stringpassword="xxxxxx";Stringdriver="org.postgresql.Driver";Class.forName(driver);Connectionconn=DriverManager.getConnection(url,user,password);Map<String,Object>parametros=newHashMap<String,Object>();URLreportURL=RelatorioMBean.class.getResource("/reports");StringreportDir=reportURL.getFile();parametros.put("REPORT_PATH",reportDir);URLrelatorioURL=RelatorioMBean.class.getResource(pathReport);Filefile=newFile(relatorioURL.getFile());try{JasperReportrelatorioJasper=(JasperReport)JRLoader.loadObject(relatorioURL);bytes=JasperRunManager.runReportToPdf(relatorioJasper,parametros,conn);}catch(JRExceptione){e.printStackTrace();}finally{conn.close();}setBytes(bytes,"application/pdf",file.getName().replace(".jasper",".pdf"));returnnull;}
Com a ajuda do meu amigo Bruno Coitinho resolvemos o probrlema.