Uma idéia com JasperReports

2 respostas
javakid

Bom dia a todos

Eu gero meu relatório…bonitinho… dentro da minha classe… até aí blz

Meu problema é: eu estou salvando esse relatório… em arquivo (ocupando espaço!)…

meu code:

JasperReport report;
JasperPrint impressao;
URL urlFile = Relatorio.class.getClassLoader().getResource("/relatorios/relatorio_exemplo.jasper");
// carregando jasper
report = (JasperReport)JRLoader.loadObject(urlFile.openStream());
//gerando relatorio
impressao = JasperFillManager.fillReport(report, parms, conn);
//salvando PDF
JasperExportManager.exportReportToPdfFile(impressao,"/relatorios/relatorio_exemplo.pdf");

Como trbalho com o ImputStream e OutputStream nesse caso ? (isso resolveria meu problema de não salvar o arquivo em disco né?)
pois vou utiliza-lo mais tarde para muitas tarefas (o .pdf em questão)

alguem pode ajudar ?

grato a todos

2 Respostas

christianovale

Isso aí acho que te ajuda.

É um metodo que implementei certa vez para exibir o relatorio em formato PDF sem salva-lo fisicamente.

/**
     * Metodo para abrir a pagina de impressao em Formato PDF
     * @param response HttpServletResponse
     * @param array ArrayList a lista com os dados do Relatorio
     * @param parametros HashMap, os parametros do relatorio
     * @param path String, o caminho dos relatorios compilados (.jasper)
     * @throws IOException
     * @throws RelatorioException
     */
    public void exibirPaginaImpressao(HttpServletResponse response, ArrayList array, HashMap parametros, String path) throws IOException,
            RelatorioException {
        try {
            JRDataSource jrDataSourse = new JRBeanArrayDataSource(array.toArray());
            JasperPrint impressao = JasperFillManager.fillReport(path, parametros, jrDataSourse);

            byte[] bytes = null;

            bytes = JasperExportManager.exportReportToPdf(impressao);

            response.setContentType("application/pdf");
            response.encodeRedirectURL("imprimir.jsp");
            response.setContentLength(bytes.length);
            ServletOutputStream ouputStream = response.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();

        } catch (JRException ex) {
            throw new RelatorioException(RelatorioException.ERROR_31001, ex);
        }catch(Exception ex){
            throw new RelatorioException(RelatorioException.ERROR_30000, ex);
        }
    }

Abraços!

Sucesso!

javakid

Entendi seu código… valew mesmo…
mas não vou poder trabalhar em cima dele… até pq vc define ali o objeto response… que vai regrar muita coisa…

no meu caso… tenho q definir outra maneira de trabalhar com o output…

por exemplo no método:

JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream)

onde ja tenho o print… só falta definir o output… é nisso que to travaaaaado! =(

alguem ja trabalhou com esse método específico ?

axo q isso aki vai dar trabalho… heheeheh

Criado 26 de março de 2008
Ultima resposta 26 de mar. de 2008
Respostas 2
Participantes 2