Академический Документы
Профессиональный Документы
Культура Документы
Todo sistema Web gera algum tipo de relatrio para seus clientes.
Normalmente estes relatrios so gerados no formato PDF devido sua
facilidade na hora de imprim-los. No mundo Java temos algumas
opes de ferramentas para gerao destes relatrios, mas sem dvida a
mais conhecida e utilizada no mercado o JasperReports e sua
ferramenta grfica para desenhar relatrios, o iReport.
Embora seja comum associarmos o iReport como a tecnologia
responsvel por gerar os relatrios no mundo Java, a verdade que ela
apenas a ferramenta grfica que te ajudar a construir e desenharos
relatrios, ela o que chamamos de report designer. Quem de fato gera
e exporta os relatrios para determinado formato o JasperReports, na
qual conhecido como report engine.
String jasper =
JasperCompileManager.compileReportToFile(jrxml);
System.out.println(jasper); // alunos.jasper
parametros.put("curso_id", 2020);
Connection conexao = // obtem uma conexo jdbc...
JasperPrint print =
JasperFillManager.fillReport("alunos.jasper", parametros,
conexao);
Repare que o arquivo PDF final ser gerado na sada que indicamos,
nesse caso num FileOutputStream com o nome alunos.pdf.
Para facilitar a compreenso, vamos juntar todo o cdigo em um bloco
um pouco mais organizado, como a seguir:
String jrxml = "alunos.jrxml";
// preenche relatorio
JasperPrint print = JasperFillManager.fillReport(jasper,
parametros, conexao);
exporter.exportReport();
Com essa nova API voc tem a possibilidade de fazer ajustes finos no
PDF de maneira mais simples, como ajustar fontes, layout, verso do
formato exportado, criptografia, permisses, idioma e muito mais.
Caso queira o relatrio em outro formato, como Excel, basta mudar o
cdigo responsvel pela exportao do arquivo.
try {
// preenche relatorio
JasperPrint print =
JasperFillManager.fillReport(jasper, parametros,
this.conexao);
exporter.exportReport();
} catch (Exception e) {
throw new RuntimeException("Erro ao gerar
relatrio", e);
}
}
}
Bem melhor, no ?
se levarmos esse cdigo para dentro de uma Servlet teramos algo bem
prximo disso:
@WebServlet("/relatorios/alunos")
public class RelatorioDeAlunosServlet extends HttpServlet {
// prepara parmetros
Map<String, Object> parametros = new HashMap<>();
parametros.put("curso",
request.getParameter("curso_id"));
// gera relatrio
GeradorDeRelatorios gerador = new
GeradorDeRelatorios(conexao);
gerador.geraPdf(jrxml, parametros,
response.getOutpuStream());
Perceba que o cdigo est simples por questes de didtica, porm sua
responsabilidade garantir que a conexo ser fechada num bloco trycatch-finally, assim voc evita problemas de vazamento de conexo na
sua aplicao.
E as libs?
No adianta mostrar s o cdigo, n? Precisamos saber quais as
bibliotecas (JARs) necessrios para rodar nosso cdigo com
JasperReports. Basicamente voc precisar dos seguintes JARs dentro do
seu projeto:
o
o
o
o
o
o
o
o
jasperreports-5.x.x.jar
iText-2.x.x.jar (necessria para gerar o PDF em si)
jfreechart-1.x.x.jar (necessria se voc quiser gerar grficos e
charts)
jcommon-1.x.x.jar (necessria se voc quiser gerar grficos e
charts)
commons-beanutils-1.x.x.jar
commons-collections-3.x.x.jar
commons-digester-2.x.jar
commons-logging-1.x.jar