Olá gente. Sou iniciante em programação e estou realizando testes para exportar uma tabela feita no banco de dados para PDF. Pegando alguns códigos na internet e realizando ajustes cheguei a um produto final que, quando executo no Netbeans, não mostra erros, porém abre o arquivo em PDF totalmente em branco. Segue o código abaixo. Alguém sabe o que pode ser?
RelAlunos.jrxml
<?xml version="1.0" encoding="UTF-8"?>Index.html
Seja bem vindo! Geração de relatório:Clique aqui para gerar o relatório!
Pacote model.
Classe GeraRelatorio.java
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
public class GeraRelatorio {
// Método para realizar a conexão com o banco de dados
public Connection getConexao() {
try {
Class.forName("org.postgresql.Driver");
Connection conexao = DriverManager.getConnection("jdbc:postgresql://localhost:5432/meubd", "tutorial", "123456");
return conexao;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// Método para ser executado em JSE
public static void main(String[] args) {
System.out.println("Inicio");
GeraRelatorio geraRelatorio = new GeraRelatorio();
String path = "C:\\Users\\cpf\\Documents\\NetBeansProjects\\JasperReportsWeb\\web\\relatorios\\";
geraRelatorio.gerarPDF(path);
System.out.println("Fim");
}
public byte[] gerarPDF(String diretorio) {System.out.println("D1");
byte[] retorno = null;
//String relatorio = diretorio + "RelAlunos.jrxml";
String relatorio ="C:\\Users\\cpf\\Documents\\NetBeansProjects\\JasperReportsWeb\\web\\relatorios\\RelAlunos.jrxml";
String imagem = diretorio + "cherry.jpg";
try
{
// Faz a compilação do relatório
JasperReport jasperReport = JasperCompileManager.compileReport(relatorio);
System.out.println("D3");
// Cria o mapa de parâmetros que será enviado ao relatório
HashMap<String, Object> paramatros = new HashMap<String, Object>();
System.out.println("D4");
// Faz o apontamento para a imagem que aparece no top do relatório
paramatros.put("logo", imagem);
System.out.println("D5");
// Preenche os dados do relatório
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, paramatros, getConexao());
System.out.println("D6");
// Objeto para a ser retornado
retorno = JasperRunManager.runReportToPdf(jasperReport, paramatros, getConexao());
System.out.println("D7");
// Gera o arquivo PDF no caminho especificado
JasperExportManager.exportReportToPdfFile(jasperPrint, "M://temp/RelatorioAlunos.pdf");
System.out.println("D8");
} catch (Exception e) {
System.out.println("D9");
e.printStackTrace();
}
return retorno;
}
}
Classe RelatorioAlunoServlet.java
package model;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/RelatorioAlunoServlet")
public class RelatorioAlunoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
// Pega o caminho completo de onde a aplicação está rodando
ServletContext servletContext = getServletContext();
String diretorio = servletContext.getRealPath(File.separator) + "relatorios/";
// Instaciar a classe que possui os métodos de geração de relatório
GeraRelatorio geraRelatorio = new GeraRelatorio();
// Chama o método que gera um array de bytes com o
// conteúdo do arquivo PDF
System.out.println("c1");
byte[] pdf = geraRelatorio.gerarPDF(diretorio);System.out.println("c2");
OutputStream outStream = response.getOutputStream();
response.setHeader("Content-Disposition", "inline, filename=RelatorioAluno.pdf");
response.setContentType("application/pdf");
response.setContentLength(pdf.length);
outStream.write(pdf, 0, pdf.length);
} catch (Exception e) {
e.printStackTrace();
}
}
}