JasperReports - Exibir .pdf

6 respostas
Marques

Lista,

No trecho de código abaixo eu consigo visualizar o meu documento gerado no JasperViewer. Como eu faço para ele abrir o acrobat?

Muito obrigado,

Marques

String caminhoRelJasper = "EstimativaColheitaResumoCaixasNew.jasper";
			InputStream relJasper = getClass().getResourceAsStream(caminhoRelJasper);
			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaEstimativas);
			JasperPrint impressao = JasperFillManager.fillReport(relJasper, parametros, ds);			
			JasperViewer viewer = new JasperViewer(impressao, false);
			viewer.setVisible(true);
			viewer.show();

6 Respostas

ze_kiefa
String caminhoRelJasper = "EstimativaColheitaResumoCaixasNew.jasper";
InputStream relJasper = getClass().getResourceAsStream(caminhoRelJasper);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaEstimativas);
JasperPrint impressao = JasperFillManager.fillReport(relJasper, parametros, ds);			
/*
 * JasperViewer viewer = new JasperViewer(impressao, false);
 * viewer.setVisible(true);
 * viewer.show();
 */
JasperExportManager.exportReportToPdfFile( impressao, caminhoDestinoPDF );

O arquivo não abre sozinho.
É necessário algum mecanismo a parte para ler o arquivo e exibí-lo em um programa específico (ex.: Adobe Reader ou browser).

ze_kiefa

Aproveitando a oportunidade, segue um exemplo para exportar em Excel.

String caminhoRelJasper = "EstimativaColheitaResumoCaixasNew.jasper";
 InputStream relJasper = getClass().getResourceAsStream(caminhoRelJasper);
 JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaEstimativas);
 JasperPrint impressao = JasperFillManager.fillReport(relJasper, parametros, ds);			
 /*
  * JasperViewer viewer = new JasperViewer(impressao, false);
  * viewer.setVisible(true);
  * viewer.show();
  */

OutputStream output = new FileOutputStream(new File(caminhoDestinoPDF)); 
    ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
    byte bytes[] = new byte[10];
    
    // exportação para excel
    JRXlsExporter exporterXLS = new JRXlsExporter();
    exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, impressao);
    exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, xlsReport);
    exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_FILE, caminhoDestinoPDF);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    exporterXLS.exportReport();
    
    // converte para bytes
    bytes = xlsReport.toByteArray();
    xlsReport.close();
    
    // grava os bytes na saída
    output.write( bytes, 0, bytes.length );
    output.flush();
    output.close();

OBS.: os três últimos parâmetros (IS_ONE_PAGE_PER_SHEET, IS_WHITE_PAGE_BACKGROUND e IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS) são opcionais dependendo do relatório desenvolvido.

OBS.: tenha configurado no CLASSPATH a API Apache POI.

Marques

Prezado ze_kiefa,

Sem querer abusar da tua boa vontade:
Vc pode enviar também um exemplo mandando o pdf para o browser?

Muito obrigado,

Marques

ze_kiefa

Eu trabalho com aplicações WEB (não sei se é o seu caso).

O mecanismo a parte que eu citei é um Servlet que utiliza o código acima para gerar o arquivo e, em seguida, direciona para uma página JSP (pode ser HTML), a qual abre o arquivo no browser (ex.: abro um popup ou crio um link para o arquivo).
A abertura do arquivo também pode ser feita diretamente no Servlet, através das classes de IO do Java.

/* a classe Realtorio contém o métodos responsável por gerar o relatório, conforme o código do post anterior */
Relatorio rel     = new Relatorio();

/* tipo do relatório */
int tipoRelatorio = Integer.parseInt(request.getParameter("TIPO_RELATORIO") );

/* parâmetros do relatório */
Map parametros    = new HashMap();
parametros.put( "PARAM1", request.getParameter("param1") );
parametros.put( "PARAM2", request.getParameter("param2") );

/* geração do relatório */
rel.geraRelatorio( parametros, "arquivoJasper", "caminhoDestino", tipoRelatorio );  

/* direciona para uma página que abrirá o arquivo PDF */
request.getRequestDispatcher("/relatorios/abreDiretorio.jsp").forward( request, response );

Espero ter ajudado.

R

vcs poderiam me disponibilizar o codigo da aplicação para min enteder?!

Marcos_Perboni

Preciso de uma ajuda, sou desenvolvedor java junior e estou tentando transformar um arquivo de excel em pdf. tipo assim:
tenho um sistema que gera um relatorio em excel e eu preciso pegar esse excel e transformar ele em PDF. Alguém poderia me dar uma ajuda por favor?

Criado 11 de outubro de 2006
Ultima resposta 11 de set. de 2012
Respostas 6
Participantes 4