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

Leer y escribir en un archivo binario

Leer y escribir en un archivo binario

Problema: Desarrolle un programa en consola con c# para escribir y leer informaci贸n de un archivo binario. Los datos a e...

Estilos condicionales en iReport

Estilos condicionales en iReport

iReport nos da la posibilidad de dar un formato condicional a los diferentes registros resultado de nuestras consultas S...

Crea una ventana de dialogo “Acerca de…” personalizado

Crea una ventana de dialogo “Acerca de…” personalizado

Cuando se crean aplicaciones android o cualquier otro tipo de software, es importante dejar informaci贸n del o los desarr...

Generador de n煤meros aleatorios UNIX

Generador de n煤meros aleatorios UNIX

El M茅todo Congruencial Lineal Mixto es el m谩s utilizado en simulaci贸n en computadoras digitales y esta basado en una rel...

base de datos multiple – parte II

base de datos multiple – parte II

Continuaci贸n del tutorial “Utiliza 2 bases de datos diferentes en una aplicaci贸n” La Interfaz frmSelected.ja...

Juego de memoria para ni帽os (C贸digo Fuente)

Juego de memoria para ni帽os (C贸digo Fuente)

En un post anterior, desarrollamos un swing para simular un efecto FLIP 聽y recib铆 algunos mensajes pidi茅ndome un ejemplo...

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

Si quieres cambiar el nombre de tus atributos sin tener que reescribir c贸digo java por X o Y raz贸n, GSON te permite reno...

Un JList nos permite almacenar objetos en una lista y mostrarlos gr谩ficamente en una serie vertical en el cual el usuari...

El proyecto聽“Java Decompiler”聽tiene como objetivo desarrollar herramientas para descompilar y analizar byte...

En este post aprenderemos lo que es un JSON Web Token, como crear nuestro propio token de acceso y como usarlo en un Ser...

Android Bolivia

Bandera en Alto