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

Cambiar API Level en Android Studio

Cambiar API Level en Android Studio

Cuando desarrollamos aplicaciones en el IDE (Entorno de Desarrollo Integrado) de Android Studio, es importante indicar e...

Introducción a Retrofit: Cliente para consumir un API REST

Introducción a Retrofit: Cliente para consumir un API REST

La página oficial de Retrofit, se describe así misma como «Un cliente REST seguro para Android y Java».  Y es así, ya qu...

Sourcetrail ahora es Open Source

Sourcetrail ahora es Open Source

Sourcetrail el explorador de código fuente de los lenguaje C, C ++, Java y Python se pasa al Software Libre y desde ahor...

Imprimir imagen con Print

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, e...

Ejemplo de aplicación Android y SQLite

Ejemplo de aplicación Android y SQLite

En esta oportunidad dejo para estudio y critica de los programadores android un ejemplo sencillo de una aplicación que h...

Procedimientos Almacenados: Parámetros OUT

Procedimientos Almacenados: Parámetros OUT

En un post anterior conocimos que es y como funciona un parámetro de entrada IN en procedimientos almacenados y lenguaje...

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

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...

Herramientas

Generador de Enlaces a Whatsapp