Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como gerei PDF com JasperSoft Studio CE

Primeiro detalhe: atenção aos jars:

Usei commons-collections-3.2.2.jar (deve ser versão 3x por causa do ReferenceMap)

Usei itext-2.1.7.js4.jar - necessariamente esta versão!

Usei jasperreports-6.7.0.jar - a mais atualizado para esta data.

Usei mysql-connector-java-8.0.11.jar - correspondente à minha versão do mySQL


Tive problema com timeZone, então a minha string de conexão tive que colocar assim

jdbc:mysql://localhost:3307/financas?useTimezone=true&serverTimezone=UTC&useSSL=false", "root", "minha_senha" ...

Outro detalhe: tive problemas com o JREExplorer, está deprecated nesta data. Então fiz alterações conforme código abaixo, e funcionou tudo corretamente! ...

package br.com.caelum.financas.relatorio;

import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import java.io.File;
import br.com.caelum.financas.ConnectionFactory;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;

public class TesteGeraRelatorio {

    public static void main(String[] args) throws SQLException, JRException, FileNotFoundException {

        // Testando se o arquivo compilado existe. Ele é necessário para se criar o PDF.
        File tmp = new File("financas.jasper");

        if (!tmp.exists()) { // Arquivo não existe ainda. Relatório não foi compilado.
            JasperCompileManager.compileReportToFile("financas.jrxml"); // Compilando antes.
        }

        // Criando conexão com o banco de dados.
        Connection conexao = new ConnectionFactory().getConnection();

        // Criando o HashMap de parâmetros.
        Map<String, Object> params  = new HashMap<String, Object>();

        // Gerando o relatório.
        JasperPrint jPrint = JasperFillManager.fillReport("financas.jasper", params, conexao);

        conexao.close(); // Não precisaremos mais da conexão.


        // Criando objeto que gerencia a  exportação
        JRPdfExporter exporter = new JRPdfExporter();


        // Setando as configurações de entrada e saída no objeto que gerencia a exportação
        exporter.setExporterInput(new SimpleExporterInput(jPrint));
        exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("financas.pdf"));

        // Gravando o PDF.
        exporter.exportReport();        

    }
}
1 resposta
solução!

Sandro, realmente muito bacana sua iniciativa!!!