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

Crea un servicio web REST con PHP y MYSQL

Crea un servicio web REST con PHP y MYSQL

Servicio Web Un servicio web (en ingl茅s, Web Service o Web services) es una tecnolog铆a que utiliza un conjunto de protoc...

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...

Ejemplo socket java Cliente/Servidor

Ejemplo socket java Cliente/Servidor

En este post construiremos un sencillo sistema Cliente/Servidor en lenguaje Java,聽el sistema consistir谩 b谩sicamente en u...

Ejecutables con Launch4J

Ejecutables con Launch4J

Launch4j es un software OpenSource hecho en Java que permite crear ejecutables para programas escritos en ese mismo leng...

Google Open Source: C贸digo Abierto +2000 proyectos

Google Open Source: C贸digo Abierto +2000 proyectos

Google abre las puertas de Google Open Source un nuevo sitio web que une聽todos sus proyectos de聽“C贸digo Abierto...

Crea c贸digo HTML5 desde java con j2html

Crea c贸digo HTML5 desde java con j2html

j2html es una biblioteca para java que permite generar c贸digo html seguro desde c贸digo java utilizando sus propias etiqu...

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.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

脷ltimas entradas

Acierta los colores o Adivina los colores es un sencillo juego que consiste en que dado 6 colores “rojo”,...

“MyBatis es una herramienta de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacena...

MyBatis es un framework de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacenados a part...

Webcam Capture es un API聽 que permite usar una c谩mara web incorporada o externa directamente desde c贸digo Java utilizand...

Herramientas

Generador de Enlaces a Whatsapp