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

Camara de Seguridad por Internet (LiveCam)

Camara de Seguridad por Internet (LiveCam)

Existen muchas camaras de seguridad por internet algunas protegidas por contrase帽a pero la mayoria no, utilizando el hac...

Incrustar reporte en formulario java

Incrustar reporte en formulario java

Jasperreport nos brinda su propio visor de reportes, sin embargo en ocasiones queremos mostrar los informes directamente...

GraphADT: Clases para trabajar con grafos en java

GraphADT: Clases para trabajar con grafos en java

GraphADT es una proyecto alojado en github escrito en java que te permite trabajar con grafos, a la fecha de escribir es...

JLabel: Escalar imagen

JLabel: Escalar imagen

El componente swing JLabel nos permite cargar una imagen con la propiedad setIcon, sin embargo la imagen no toma el tama...

TextView Autocompletado

TextView Autocompletado

Un TextView autocompletado nos facilita el ingreso de informaci贸n en aplicaciones m贸viles ya que te muestra posibles opc...

Arreglos en Visual Basic

Arreglos en Visual Basic

Un array es un conjunto finito y ordenado de elementos homogeneos. Ordenado porque los elementos n-esimo de un array pue...

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(鈥渦ser.dir鈥) + 鈥淺\src\\Reportes\\Reporte_ProdFac.jasper鈥;
      System.out.println(鈥渕aster鈥 + master);

      if (master == null) { JOptionPane.showMessageDialog(null,鈥漀o Encuentro El Archivo Del Reporte鈥); }

      JasperReport masterReport = null;

      try{
      masterReport = (JasperReport) JRLoader.loadObject(master);
      } catch (JRException e){ JOptionPane.showMessageDialog(null,鈥滶rror 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(鈥淚dCliente鈥,IdCliente);
      parametro.put(鈥淚dSubCliente鈥,IdSubCliente);
      parametro.put(鈥淔echa01鈥,Fecha01);
      parametro.put(鈥淔echa02鈥,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 鈥減referencias de impresion鈥
      JasperPrintManager.printReport(jasperPrint, false);
      }catch (JRException ex) { System.err.println( 鈥淓rror 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.

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *

*

Comparte lo que sabes

Categorias

脷ltimas entradas

Existen varias aplicaciones (free y de pago) que emulan una impresora virtual para generar archivos en PDF聽 (Portable Do...

En este post construiremos paso a paso un SharedPreferences m谩s conocido en espa帽ol como “Preferencias de Usuario...

La Inteligencia Artificial (AI – Artificial Intelligence) estar谩 presente en casi cada aspecto de nuestra vida聽en...

Una Interface Funcional es una interface que contiene uno y solo un m茅todo abstracto aunque puede contener m茅todos por d...

Android Bolivia

Bandera en Alto