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.
Exportar Relatório de JasperReports para PDF numa aplicação Swing
7 Respostas
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.
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
Isso ai, com isso deu certo? ou ficou faltando alguma coisa?
vai dar alguns erros pois na classe que está esse metodo ela extends de uma generic class 
Mas com isso você conseguiu tirar sua duvida?
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();
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