Relatorio do iReport do abre no servidor
29/09/2011
0
Olá Pessoal,
Estou com problema para desenvolver relatorio no iReport, pois quando publico a aplicação os relatorios abrem somente no servidor...rs. Segue abaixo a minha chamada.
// PreparedStatement pstmt = DB.
conn = ConectaBanco.getConexao();
InputStream reportStream = this.getServletContext().getResourceAsStream("/WEB-INF/protected/relatorios/admProjetos/HoraApontadas.jasper");
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
HashMap map = new HashMap();
JasperReport rel = (JasperReport)JRLoader.loadObject(reportStream);
impressao = JasperFillManager.fillReport(rel, map, jrRS);
JasperViewer visualizador = new JasperViewer(impressao, false);
visualizador.setVisible(true);
Estou com problema para desenvolver relatorio no iReport, pois quando publico a aplicação os relatorios abrem somente no servidor...rs. Segue abaixo a minha chamada.
// PreparedStatement pstmt = DB.
conn = ConectaBanco.getConexao();
InputStream reportStream = this.getServletContext().getResourceAsStream("/WEB-INF/protected/relatorios/admProjetos/HoraApontadas.jasper");
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
HashMap map = new HashMap();
JasperReport rel = (JasperReport)JRLoader.loadObject(reportStream);
impressao = JasperFillManager.fillReport(rel, map, jrRS);
JasperViewer visualizador = new JasperViewer(impressao, false);
visualizador.setVisible(true);
Cristiano Assis
Curtir tópico
+ 0
Responder
Posts
29/09/2011
Davi Costa
Vc vai precisar de um HttpServletResponse para instanciar um ServletOutputStream.. segue abaixo um exemplo de chamadausando jsf, se vc não usar jsf é só adaptar para sua implementação:
Espero ter ajudado um pouco
att Davi
//executa o relatório através de um Connection public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, Connection conn, TipoFormatoRelatorio tipoFormatoRelatorio) throws Exception{ FacesContext context = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); //pega o caminho do arquivo .jasper da aplicação InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio); response.setHeader(Pragma, no-cache); try { ServletOutputStream servletOutputStream = response.getOutputStream(); //envia parametros para o relatório if (parametros == null){ parametros = new HashMap<String, Object>(); } //envia a resposta com o MIME Type if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){ response.setHeader(Content-Disposition, attachment; filename=+ nomeRel +.pdf); response.setContentType(application/pdf); //envia para o navegador o PDF gerado JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, conn); }else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PLANILHA)){ response.setHeader(Content-Disposition, attachment; filename=+ nomeRel +.xls); response.setContentType(application/x-download); JasperReport relatorio = (JasperReport) JRLoader.loadObject(reportStream); JasperPrint jasperPrint = JasperFillManager.fillReport(relatorio, parametros, conn); JRExporter exporter = new JRXlsExporter(); byte[] output; ByteArrayOutputStream baos = new ByteArrayOutputStream(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); if(exporter instanceof JRXlsExporter){ exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.SHEET_NAMES, new String[]); } exporter.exportReport(); output = baos.toByteArray(); servletOutputStream.write(output); } servletOutputStream.flush(); servletOutputStream.close(); } catch (JRException e) { e.printStackTrace(); context.responseComplete(); throw new ReportException(ERRO_MENSAGEM_REPORT); } catch (IOException e) { e.printStackTrace(); context.responseComplete(); throw new ReportException(ERRO_MENSAGEM_REPORT); }catch(Exception e){ e.printStackTrace(); context.responseComplete(); throw new Exception(e.getMessage()); } context.responseComplete(); } public enum TipoFormatoRelatorio { ACROBAT_PDF(Acrobat PDF), TEXTO(Texto), PLANILHA(Planilha), PAGINA_HTML(Página HTML); protected String nomeRelatorio = null; private TipoFormatoRelatorio(String nomeRelatorio) { this.nomeRelatorio = nomeRelatorio; } }
Espero ter ajudado um pouco
att Davi
Responder
21/10/2011
Dyego Carmo
Voce vai precisar usar a APPLET do jasper para abrir no cliente , ou enviar um PDF (que costuma abrir automaticamente caso o acrobat reader esteja instalado)
Acho a opcao de enviar o pdf mais rapida e pratica.
Acho a opcao de enviar o pdf mais rapida e pratica.
Responder
Clique aqui para fazer login e interagir na Comunidade :)