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

Env铆a mensajes temporales y cifrados

Env铆a mensajes temporales y cifrados

Secret (https://getsecret.now.sh/) es una aplicaci贸n web gratuita que te permite enviar mensajes temporales cifrados que...

Arrastrar y cargar archivo Excel *.xlsx en tabla Java

Arrastrar y cargar archivo Excel *.xlsx en tabla Java

A continuaci贸n tenemos una clase que nos permite arrastrar un archivo de Excel (*.xlsx) y cargar su contenido en una tab...

Actualizar JComboBox al cambiar valor de otro JComboBox

Actualizar JComboBox al cambiar valor de otro JComboBox

Cuando se trabaja con base de datos, estos datos son聽din谩micos, cambian con el tiempo y es necesario que esos cambios se...

Ejemplo Cliente-Servidor en Android

Ejemplo Cliente-Servidor en Android

Continuando con estos post de Cliente/Servidor, en esta oportunidad realizaremos un ejemplo usando un dispositivo m贸vil...

Tomar fotos con la camara y guardar en la sdcard

Tomar fotos con la camara y guardar en la sdcard

En este post realizaremos una aplicaci贸n android que har谩 uso de la c谩mara del celular para tomar una foto y guardarla e...

Uso de Arrays: Ejemplo pr谩ctico

Uso de Arrays: Ejemplo pr谩ctico

En este post iremos conociendo de un modo pr谩ctico que es y como se utiliza un Array en java, para esto partiremos de un...

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

Las herramientas Online son cada vez m谩s comunes y pueden encontrarse herramientas para casi todo tipo de tareas, en est...

Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point. Apache POI se...

Gallery.io es una herramienta de colaboraci贸n gratuita desarrollada por Google para cargar trabajos de dise帽o, obtener c...

Android cuenta con una serie de herramientas en su API para el trabajo con gr谩ficos, entre estos podemos mencionar: Bitm...

Android Bolivia

MAUS