Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / iReport / Guardar reporte PDF directamente con Jasperreports

Guardar reporte PDF directamente con Jasperreports

Autor jc mouse martes, noviembre 20, 2012

Guardar un reporte PDF creado en iReport no es tan diferente de solo visualizarlo en pantalla.

En este ejemplo se hace uso de una base de datos en MySQL llamado «db123» y una sola tabla «estudiantes«, con algunos registros ya creados claro 🙂

CREATE TABLE estudiante (
  dni varchar(12) NOT NULL,
  nombre varchar(32) default NULL,
  email varchar(32) default NULL,
  celular varchar(12) default NULL,
  PRIMARY KEY  (dni)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Se hacen uso de las librerías de Jassperreports en su versión 3.7.2 🙂  no estoy actualizado pero creo que en nuevas versiones no debe de cambiar mucho.

Para la conexión con la base de datos se requiere el driver JDBC mysql-connector-java en cualquiera de sus versiones.

No explicaremos como implementar estas librerías ni como crear el archivo *.jasper, ya existen varios post dedicados a la creación de reportes los cuales invito a visitar 🙂

Utilizando la herramienta de iReport se crea un reporte como cualquier otro, (Ver post sobre reportes ), en este ejemplo no tenemos parámetros de entrada, la consulta se reduce a:

SELECT * FROM estudiante

Y la distribución de controles puede ser cualquiera, por ejemplo un formato tabular:

ireport template

Si queremos llamar este reporte desde java, utilizamos la función:

  public void ver( String jasper ){
     JasperReport jasperReport;
     JasperPrint jasperPrint;
     try{
        URL  in=this.getClass().getResource( "reporte.jasper" );
        jasperReport=(JasperReport)JRLoader.loadObject(in);            
        jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap() , this.getConexion() );            
        JasperViewer.viewReport(jasperPrint,false);
    }catch (JRException ex){
        System.err.println( "Error iReport: " + ex.getMessage() );
    }
  }

Ahora, si lo que queremos es guardar directamente en disco el reporte en formato PDF sin visualizarlo, entonces la función cambia a:

  public void pdf(){
        JasperReport jasperReport;
        JasperPrint jasperPrint;                
        try
        {
          //se carga el reporte
          URL  in=this.getClass().getResource( "reporte.jasper" );
          jasperReport=(JasperReport)JRLoader.loadObject(in);
          //se procesa el archivo jasper
          jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), this.getConexion() );
          //se crea el archivo PDF
          JasperExportManager.exportReportToPdfFile( jasperPrint, "E:/temporal/reporte.pdf");
        }
        catch (JRException ex)
        {
          System.err.println( "Error iReport: " + ex.getMessage() );
        }
  }

Como se puede ver, las instrucciones son similares, cambia al final donde se utiliza la funcion«exportReportToPdfFile» , donde se especifica la ruta donde salvar el archivo, en este ejemple, el disco E:/…

reporte en pdf

o.O nada más.

El proyecto del ejemplo en netbeans 6.9  AQUI.

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Ejemplo de operaciones CRUD con MyBatis 3

Ejemplo de operaciones CRUD con MyBatis 3

«MyBatis es una herramienta de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacenados co...

Graficos estadisticos con javafx y swing

Graficos estadisticos con javafx y swing

En este post aprenderemos a usar los gráficos 2d que viene con JavaFX en nuestras aplicaciones java swing. Esto puede se...

Capturar webcam con VB.NET

Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames...

Encriptación simétrica en java

Encriptación simétrica en java

En este post veremos un ejemplo sencillo de encriptación/desencriptación simétrica que el API de Java nos permite realiz...

Procedimientos Almacenados: Parámetros INOUT

Procedimientos Almacenados: Parámetros INOUT

En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la...

Blog MVC – Consultas Ajax a la base de datos [p5]

Blog MVC – Consultas Ajax a la base de datos [p5]

Quinta parte de la serie de tutoriales «Creación de un blog siguiendo el patrón MVC (Modelo, Vista y Controlador)«. En e...

15 comentarios en “Guardar reporte PDF directamente con Jasperreports”

  1. Diego Londoño dice:

    El post es muy util, ya que no todas las veces se quiere imprimir el archivo. Una pregunta es posible imprimir un reporte directamente sin ver su vista previa, como es lo habitual.

    Gracias

    1. Jonny dice:

      Excelente, Diego yo lo mando asi:

      public static void Reporte_Imprimir(){
      try {
      String master = System.getProperty(“user.dir”) + “\\src\\Reportes\\Reporte_ProdFac.jasper”;
      System.out.println(“master” + master);

      if (master == null) { JOptionPane.showMessageDialog(null,”No Encuentro El Archivo Del Reporte”); }

      JasperReport masterReport = null;

      try{
      masterReport = (JasperReport) JRLoader.loadObject(master);
      } catch (JRException e){ JOptionPane.showMessageDialog(null,”Error Al Cargando El Reporte: ” + e.getMessage()); }
      //este es el parámetro, se pueden agregar más parámetros basta con poner mas parametro.put
      Map parametro = new HashMap();
      parametro.put(“IdCliente”,IdCliente);
      parametro.put(“IdSubCliente”,IdSubCliente);
      parametro.put(“Fecha01″,Fecha01);
      parametro.put(“Fecha02″,Fecha02);

      //se procesa el archivo jasper
      JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,Con_MySQL.Conn_MySQL);
      //impresion de reporte
      // TRUE: muestra la ventana de dialogo “preferencias de impresion”
      JasperPrintManager.printReport(jasperPrint, false);
      }catch (JRException ex) { System.err.println( “Error iReport: ” + ex.getMessage() ); }
      }

      pero = necesito guardarlo a excel en una direccion especifica y no doi como.
      Responder

      1. Mouse dice:

        si lo que necesitas guardar el resultado de una consulta en excel, puedes utilizar POI o jExcelApi sin necesidad de utilizar jasper 🙂

  2. Gloriana dice:

    Excelente, me podrías ayudar necesito exportar el resultado de Reporte a Excel por favor te lo agradecería mucho.

  3. David M. C. dice:

    Una consulta… (talvez no sigo el hilo del post)

    Como haria para un imprimir una imagen que tengo almacenado en una BBDD.

    Es una aplicacion que busca direcciones de croquis, almaceno registro croquis(imagenes), con sus respectivos datos (ej: Nombre de la Persona que pertenece el croquis, etc).

    1. Mouse dice:

      creo que ya hice un post sobre impresión de imágenes en reportes :/ lo buscare para estar mas seguro

  4. vanessa dice:

    Hola Un saludo, he seguido todos tus post, sobre reportes me han parecido muy buenos, la verdad es un gran trabajo, el problema es q ahora yo tengo todos m is reportes en ireport creados, hice desde un estado financiero con ireports hasta graficas, tambien unos con parametros por mes etc. Se supone que termino toda mi aplicacion pero me pido que pase todo a otra pc entonvces ahi comienza el problema ya q me recone la ruta de la anterior maquina, ya cambie la ruta en el codigo del jasper, en el xml de jrxml, y nada sigue el problema,AYUDAME POR FAVOR,,,,,, 🙂 🙂

    1. Mouse dice:

      los archivos .jasper usan la ruta del jar en el que están empaquetados así como las librerías jasperreport, si estas usando imágenes en tus reportes, al insertar estas en tus archivos jxrml y compilarlas usan la ruta de la maquina en la que se compilaron, a menos que la PC de destino tenga la misma ruta de tus imágenes que la PC origen no tendrás problemas en ejecutar el reporte, sino, te toca agregar las imagenes a los reportes desde tu aplicación en java

  5. Walter Toledo dice:

    Hola tengo un problema y desconozco cual es su error. Soy nuevo usando la librería. El error es el siguiente:
    mar 29, 2015 8:57:09 PM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles
    ADVERTENCIA: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components
    Alguien me puede ayudar…

  6. Aaron dice:

    Y si quiero bloquear el pdf generado para que no pueda modificar el archivo o copiar el texto que contiene, es decir, que el usuario solo pueda ver el archivo e imprimirlo… ¿cómo hago eso?

  7. gian dice:

    Hola y como haría para guardarlo en Word?

  8. freddy molleda dice:

    buenas amigo. no he podido descargar el proyecto. es posible que actives los link.!

    1. Mouse dice:

      links activos

  9. Obed Hernández dice:

    Gracias Mouse.

    Gracias por ilustrarnos con este ejemplo. Saludos desde México.

  10. Feder dice:

    Hola tengo una duda.. Comó podria resolver el tema de los fonts al exportar a pdf.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

En muchas ocasiones es necesaria la personalización de componentes java para que estos se adecuen a nuestros requerimien...

En este post mostramos como personalizar el Header (encabezado) de un componente JTable en Java colocando iconos, centra...

El JTable de Java es un gran componente para mostrar datos en una tabla de una forma rápida y sencilla, sin embargo en v...

En este post veremos un ejemplo sencillo de como descargar desde Internet archivos de cualquier tipo (*.jpg, *.png, *.gi...

Herramientas

Generador de Enlaces a Whatsapp