Exportar Relatório de JasperReports para PDF numa aplicação Swing

7 respostas
rsantik

O Jasper gera um relatório e conseguimos visualizar no JasperView, entretando, gostaria que exportar isso para PDF numa aplicação swing. Sei fazer isso usando servlet numa aplicação WEB e tal, mas numa aplicação local, desktop, utilizando java swing não consegui. Alguém sabe como? Teria algum código para postar? É possível fazer isso?Abs.

7 Respostas

Gustavo_Sperandio

Não consegui parar direito para ver mas tente isso:

JasperPrint rel = null;

try {

con = getConexao().getDatabase();

HashMap map = new HashMap ();

String arquivoJasper = System.getProperty(user.dir)+"\relatorios\meuRelatorio.jasper";

JasperFillManager.fillReportToFile(ORIGEM, DESTINO, map, con);

}catch (JRException e) {

JOptionPane.showMessageDialog (null,e.getMessage());

}

quando chamar o JasperFillManager.fillReportToFile(Formulario, map, con); ele cria o arquivo, depois é só mandar abrir, mas como falei não tenho certeza que vai funcionar mas testa e me fala.

rafaelviny
public void sqlGeradoPeloFiltro(String sql, int tipo, String diretorio) throws SQLException {
        try {
            Connection con = Conexao.abrirConexao();
            Statement stm = con.createStatement();
            String queryCompra = "SELECT distinct COMPRA.CODIGOCOMPRA AS COMPRA_CODIGOCOMPRA, COMPRA.DATACOMPRA AS COMPRA_DATACOMPRA,  COMPRA.VALORTOTAL AS COMPRA_VALORTOTAL,  PESSOA.NOME AS PESSOA_NOME FROM PESSOA, COMPRA, itenscompra WHERE PESSOA.CODIGOPESSOA = COMPRA.CODIGOPESSOA and compra.codigocompra = itenscompra.codigocompra  " + sql;
            Map parametersCompra = new HashMap();
            parametersCompra.put("REPORT_CONNECTION", con);
            parametersCompra.put("SUBREPORT_DIR", System.getProperty("user.dir") + "\\Relatorios\\");

            ResultSet rs = stm.executeQuery(queryCompra);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
            JasperPrint impressao = JasperFillManager.fillReport(System.getProperty("user.dir") + "\\Relatorios\\RelatorioCompras.jasper", parametersCompra, jrRS);
            if (tipo == 1) {
                JasperViewer jasper = new JasperViewer(impressao, false);
                JDialog viewer = new JDialog(new javax.swing.JFrame(), "Visualização do Relatório - Sistema de Gerenciamento de Fazendas", true);

                viewer.pack();
                viewer.getContentPane().add(jasper.getContentPane());
                viewer.repaint();
                viewer.setSize(largura, altura);

                ds = viewer.getSize();
                viewer.setLocation(((dx.width - ds.width) / 2), ((dx.height - ds.height) / 2));

                viewer.setVisible(true);
                viewer.dispose();
            }
            if (tipo == 2) {
                JasperExportManager.exportReportToPdfFile(impressao, diretorio);
            }
            if (tipo == 3) {
                JasperExportManager.exportReportToHtmlFile(impressao, diretorio);
            }
        } catch (JRException ex) {
            Logger.getLogger(RelatorioProduto.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

vai ser uma coisa do genero

Gustavo_Sperandio

Isso ai, com isso deu certo? ou ficou faltando alguma coisa?

rafaelviny

vai dar alguns erros pois na classe que está esse metodo ela extends de uma generic class :smiley:

Gustavo_Sperandio

Mas com isso você conseguiu tirar sua duvida?

ferreira2006

Se o problema é só exportar:

JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "/home/PastaPessoal/Área de Trabalho/MeuRelatório"+".pdf");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.exportReport();
rafaelviny

a duvida nao era minha, o codigo que postei é a solução para a duvida do topico

Criado 22 de março de 2011
Ultima resposta 24 de mar. de 2011
Respostas 7
Participantes 4