JasperReports e i-Reports Un ejemplo práctico
JasperReports es una poderosa herramienta de creación de informes Java open source
que tiene la habilidad de generar ficheros PDF, HTML, XLS, CSV y XML.
JasperReports se usa comúnmente con iReports, un front-end gráfico open source para la edición de informes.
En próximos posts hablaré de este sencillo programa, el cual nos ayudará bastante a la hora de generar nuestros informes.
Os voy a presentar un ejemplo bastante sencillo de como generar a partir de un fichero .Jasper, de los que se crean con i-reports, un
informe en formato PDF
Lo primero que tenemos que hacer es conseguir el .jar con los paquetes y clases de JasperReports. El fichero .jar nos los podemos descargar de
su página web.
Crearemos una página jsp, importaremos las clases necesarias, y expecificaremos el content-type de la página como “application/pdf”
<%@ page import="java.sql.*,java.text.SimpleDateFormat,net.sf.jasperreports.engine.JasperRunManager,java.util.Map,java.util.HashMap,javax.servlet.ServletOutputStream" %> <%@ page contentType="application/pdf" %> |
Al informe se le pueden pasar parámetros
<% //Creamos un mapa de parametros para pasar al Reporte. Map parameters = new HashMap(); parameters.put("CC" ,(String)request.getParameter("CC")); parameters.put("referencia" ,(String)request.getParameter("referencia")); |
Obtenemos una conexión a base de datos, y llamamos a JasperRunManager.runReportToPdf(), con la ruta del fichero .jasper, los parámetros y la conexión establecida.
Conseguiremos que se rellene el informe con la información obtenida de la base de datos y se mostrará el PDF en pantalla.
//Obtenemos una conexion a una fuente de datos ResultSet resultado = null; BaseDatos fuenteDatos= new BaseDatos((String)session.getAttribute("usuario"),(String)session.getAttribute("password")); Connection conexion = null; try{ fuenteDatos.conectar(); conexion = fuenteDatos.getConexion(); }catch(Exception ex){ } byte[] bytes=null; try{ bytes = JasperRunManager.runReportToPdf("C:\\www\\informes\\Certificado.jasper",parameters,conexion); }catch(Exception ex){ ex.printStackTrace(); } response.setContentLength(bytes.length); ServletOutputStream ouputStream = response.getOutputStream(); ouputStream.write(bytes, 0, bytes.length); ouputStream.flush(); ouputStream.close(); conexion.close(); %> |