Foro de elhacker.net

Programación => Java => Mensaje iniciado por: marc85 en 6 Abril 2015, 18:01 pm



Título: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 18:01 pm
Hola, tengo un gran problema, no puedo hacer que un reporte hecho en ireport se me guarde en PDF en una carpeta especifíca automáticamente (sin que el usuario tenga la necesidad de indicar donde guardar el reporte). Este es el código que uso, gracias de antemano:

String urlreporte = "src/RptDxImagen.jasper";
String destino = "C:\\Reportes\\"+idserv+".pdf";

try
{
Map parametros = new HashMap();
parametros.put("idserv", codserv);
JasperPrint reporte = JasperFillManager.fillReport(urlreporte, parametros, con);
JasperExportManager.exportReportToPdfFile( reporte, destino);
}
catch(Exception e)
{
System.err.println( "Error iReport: " + e.getMessage() );


Título: Re: Reportes en pdf con guardado automático
Publicado por: Usuario Invitado en 6 Abril 2015, 19:24 pm
Hola,

1) Si vas a publicar código, colócalo entre etiquetas [ code=java][ /code] (sin los espacios).

Intenta:

Código
  1. JRExporter exporter = new JRPdfExporter();
  2. exporter.setParameter(JRExporterParameter.JASPER_PRINT, reporte);
  3. exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destino);
  4. exporter.exportReport();


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 21:02 pm
estas son las librería que importé:

Código
  1.  
  2. import java.io.File;
  3. import java.sql.*;
  4. import java.text.SimpleDateFormat;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import javax.swing.JOptionPane;
  8. import net.sf.jasperreports.engine.JRException;
  9. import net.sf.jasperreports.engine.JRExporter;
  10. import net.sf.jasperreports.engine.JRExporterParameter;
  11. import net.sf.jasperreports.engine.JasperExportManager;
  12. import net.sf.jasperreports.engine.JasperFillManager;
  13. import net.sf.jasperreports.engine.JasperPrint;
  14. import net.sf.jasperreports.engine.JasperReport;
  15. import net.sf.jasperreports.engine.export.JRPdfExporter;
  16. import net.sf.jasperreports.engine.util.JRLoader;
  17. import net.sf.jasperreports.view.JasperViewer;
  18. [ /code]
  19.  
  20. y así dejé el código con lo que me indicastes
  21.  
  22. [ code=java]
  23. String urlreporte = "src/RptDxImagen.jasper";
  24. String destino = "C:\\Reportes\\"+idserv+".pdf";
  25. try
  26. {
  27.    Map parametros = new HashMap();
  28.    parametros.put("idserv", codserv);
  29.    JasperReport  jasperReport=(JasperReport)JRLoader.loadObject(urlreporte);
  30.    JasperPrint reporte = JasperFillManager.fillReport(urlreporte, parametros, con);
  31.    JRExporter exporter = new JRPdfExporter();
  32.    exporter.setParameter(JRExporterParameter.JASPER_PRINT, reporte);
  33.    exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destino);
  34.    exporter.exportReport();
  35. }
  36. catch(Exception e)
  37. {
  38.    System.err.println( "Error iReport: " + e.getMessage() );
  39. }
  40. [ /code]                
  41.  
  42. y me mandó un error en tiempo de ejecución en la línea:
  43.  
  44. JRExporter exporter = new JRPdfExporter();
  45.  
  46. Espero me puedas ayudar te lo agradecería mucho


Título: Re: Reportes en pdf con guardado automático
Publicado por: Usuario Invitado en 6 Abril 2015, 21:07 pm
Citar
Y me mandó un error en la línea...

¿Qué error?


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 21:12 pm
por cierto este es el error que me genera:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException
   at Principal_Reportes.btnImagenActionPerformed(Principal_Reportes.java:297)
   at Principal_Reportes.btnImagenActionPerformed(Principal_Reportes.java:297)
   at Principal_Reportes.access$000(Principal_Reportes.java:20)
   at Principal_Reportes$1.actionPerformed(Principal_Reportes.java:133)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
   at java.awt.Component.processMouseEvent(Component.java:6516)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
   at java.awt.Component.processEvent(Component.java:6281)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4872)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4698)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4698)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
   at java.awt.EventQueue.access$300(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:699)
   at java.awt.EventQueue$3.run(EventQueue.java:697)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:713)
   at java.awt.EventQueue$4.run(EventQueue.java:711)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.DocumentException
   at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
   ... 39 more


Título: Re: Reportes en pdf con guardado automático
Publicado por: Usuario Invitado en 6 Abril 2015, 21:32 pm
Te falta la librería itextpdf. Agrégala a tu class path, recompila y ejecuta.


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 21:47 pm
import java.io.File;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;

estas son todas las librerías que acabo de agregar y me manda el mismo error, disculpa tantas molestias pero me urge


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 22:06 pm
Logré que me creara el archivo pdf con estas librerias:

import java.io.File;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import com.itextpdf.awt.*;
import com.itextpdf.text.*;

pero no me mostró el contenido del reporte, me mandó este error:

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: PRINTSCALING
   at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:532)
   at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:532)
   at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:417)
   at Principal_Reportes.btnImagenActionPerformed(Principal_Reportes.java:308)
   at Principal_Reportes.access$000(Principal_Reportes.java:29)
   at Principal_Reportes$1.actionPerformed(Principal_Reportes.java:142)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
   at java.awt.Component.processMouseEvent(Component.java:6516)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
   at java.awt.Component.processEvent(Component.java:6281)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4872)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4698)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4698)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
   at java.awt.EventQueue.access$300(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:699)
   at java.awt.EventQueue$3.run(EventQueue.java:697)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:713)
   at java.awt.EventQueue$4.run(EventQueue.java:711)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
BUILD STOPPED (total time: 4 minutes 24 seconds)


Título: Re: Reportes en pdf con guardado automático
Publicado por: Usuario Invitado en 6 Abril 2015, 22:27 pm
¿Qué versión de iText estás usando? Prueba con la 2.1.7, porque parece que Jasper es compatible solo con ésta versión.


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 22:58 pm
Intentaré cambiar la versión del itext, aunque estoy usando netbeans 7.4 e iReport 4.7.1, espero no tener problemas


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 23:19 pm
Muchas gracias por la ayuda, por fin dió a como deseaba y esto quedaría de la siguiente manera por si alguien mas le sirve:

String urlreporte = "src/RptDxImagen.jasper";
                        String destino = "C:\\Reportes\\"+idserv+"\\"+idserv+".pdf";
                        //pdf(idpac, urlreporte, codpac);*/
                        try
                        {
                            Map parametros = new HashMap();
                            parametros.put("idserv", codserv);
                            JasperReport  jasperReport=(JasperReport)JRLoader.loadObject(urlreporte);
                            JasperPrint reporte = JasperFillManager.fillReport(urlreporte, parametros, con);
                            JRExporter exporter = new JRPdfExporter();
                            exporter.setParameter(JRExporterParameter.JASPER_PRINT, reporte);
                            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destino);
                            exporter.exportReport();
                        }
                        catch(Exception e)
                        {
                            System.err.println( "Error iReport: " + e.getMessage() );
                        }

Hay que tener en mente la versión del itext que debe ser 2.1.7


Título: Re: Reportes en pdf con guardado automático
Publicado por: Usuario Invitado en 6 Abril 2015, 23:35 pm
Fue un placer haber sido de ayuda. Si tienes un minuto, por favor marca el tema como solucionado (check verde en la parte superior derecha). Y no olvides, cada vez que pongas código, ponlo entre las etiquetas.


Un saludo.


Título: Re: Reportes en pdf con guardado automático
Publicado por: marc85 en 6 Abril 2015, 23:48 pm
Gracias por las recomendaciones