Foros del Web » Programación para mayores de 30 ;) » Java »

Insertar imagenes en reporte desde disco

Estas en el tema de Insertar imagenes en reporte desde disco en el foro de Java en Foros del Web. Hola, otra vez estoy aquí, confío en que me puedan ayudar, no se por donde cogerlo. He estado intentado y buscando información sobre como insertar ...
  #1 (permalink)  
Antiguo 25/08/2014, 00:31
 
Fecha de Ingreso: octubre-2012
Ubicación: Elche
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Pregunta Insertar imagenes en reporte desde disco

Hola, otra vez estoy aquí, confío en que me puedan ayudar, no se por donde cogerlo.
He estado intentado y buscando información sobre como insertar unas imágenes en un informe que estoy realizando, y lo que he conseguido encontrar indica como hacerlo con imágenes almacenadas en la base de datos. Sin embargo yo necesito realizarlo con imágenes que están en una carpeta de una unidad de red.

¿Alguien podría orientarme en como puedo realizar esto, ya que no se donde más mirar?

Este es el cógigo que tengo en el botón que me lanza el informe:

Código:
private void btn_InformeActionPerformed(java.awt.event.ActionEvent evt) {                                            
        GesCalzado mysql = new GesCalzado();
        Connection con = mysql.conectar();
        
        //String path = "C:\\Users\\Manolo\\Documents\\Programas\\GesCalzado\\src\\Informes\\Pedido.jasper";
        URL path = this.getClass().getResource("/Informes/Pedido.jasper");
        Map parametros = new HashMap();
        parametros.clear();
        parametros.put("Empresa", GesCalzado.Empresa);
        parametros.put("Pedido", NumPed);
        rutaLogo = ObtenerRutalogo(Marca);
        if(rutaLogo == null){
            rutaLogo = "";
        }
        parametros.put("Logo", this.getClass().getResourceAsStream(rutaLogo));
        JasperReport jrPedido = null;
        try {
            jrPedido = (JasperReport) JRLoader.loadObject(path);
            JasperPrint jpPedido = JasperFillManager.fillReport(jrPedido, parametros, con);
            JasperViewer jvPedido = new JasperViewer(jpPedido, false);
            jvPedido.setVisible(true);
            jvPedido.setTitle("Pedido nº:" + NumPed + " de la empresa: " + GesCalzado.Empresa);
            
            con.close();
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, "No seha podido cargar el informe  de : " + path + " Error: " + ex);
        } catch (SQLException ex) {
            Logger.getLogger(PedidosCliente.class.getName()).log(Level.SEVERE, null, ex);
        } 
    }
Además tengo definido el parámetro "Logo" como de tipo Object y la imagen como java.awt.Image.

Estaría muy agradecido si alguien me pudiera orientar.
Muchas gracias de ante mano
  #2 (permalink)  
Antiguo 26/08/2014, 08:50
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Insertar imagenes en reporte desde disco

Prueba este codigo amigo funciona muy bien.. probado por mi mismo en un proyecto..//

Map<String, Object> parametros = new HashMap<>();
parametros.put("logo", this.getClass().getResourceAsStream("/controlador/reportes/logo.jpg"));
parametros.put("firma", this.getClass().getResourceAsStream("/controlador/reportes/firma.jpg"));

try {
JasperReport reporte = (JasperReport) JRLoader.loadObject(getClass().getResource("/controlador/reportes/reporteEval.jasper"));
JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros, new JREmptyDataSource());
JasperViewer jviewer = new JasperViewer(jasperPrint, false);

JDialog vistaPrevia = new JDialog(jviewer, true);
vistaPrevia.setTitle(titul);
vistaPrevia.setContentPane(jviewer.getContentPane( ));
vistaPrevia.setSize(900, 900);
vistaPrevia.setLocationRelativeTo(null);
vistaPrevia.validate();

vistaPrevia.setVisible(true);

} catch (JRException ex) {
System.out.println("Error evaluaciones: " + ex);
Logger.getLogger(Reporte.class.getName()).log(Leve l.SEVERE, null, ex);
}


espero haber ayudado..!!
  #3 (permalink)  
Antiguo 26/08/2014, 23:38
 
Fecha de Ingreso: octubre-2012
Ubicación: Elche
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Respuesta: Insertar imagenes en reporte desde disco

Muchas gracias por tu respuesta mijayasu.
He probado el código que me has propuesto pero sigue sin funcionar. En cuanto a la imagen que pretendo cargar sigue sin aparecer y ahora tampoco me pasa al informe los parámetros que antes si pasaba.
De todas formas muchas gracias por tu interés. Voy a seguir buscando para ver si doy con la clave, sino tendré que plantearme el pasar las fotos a la base de datos en lugar de tenerlas en una unidad.

Muchas gracias.
  #4 (permalink)  
Antiguo 27/08/2014, 10:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Insertar imagenes en reporte desde disco

amig@ tienes que tener en cuenta que en el diseño de tu reporte en la propiedad de tu etiqueta cambiar en Image Expression tienes que fijar tu parametro en mi caso $P{logo} y en Expression Class: java.lang.String

y en el ReportInspector al parametro 'logo' cambiar en la propiedad Parameter Class: InputStream

ahi funciona ..!!
  #5 (permalink)  
Antiguo 27/08/2014, 23:43
 
Fecha de Ingreso: octubre-2012
Ubicación: Elche
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Respuesta: Insertar imagenes en reporte desde disco

He vuelto a probar haciendo los cambios que me has indicado, sigue sin funcionar.

Pongo como ha quedado el código por si a alguien se el ocurre donde estoy metiendo la pata, de todas formas agradezco mucho tu ayuda mijayasu.

Código:
private void btn_InformeActionPerformed(java.awt.event.ActionEvent evt) {                                            
        GesCalzado mysql = new GesCalzado();
        Connection con = mysql.conectar();
        
        Map<String, Object> parametros = new HashMap<>();
        parametros.clear();
        parametros.put("Empresa", GesCalzado.Empresa);
        parametros.put("Pedido", NumPed);
        rutaLogo = ObtenerRutalogo(Marca);
        if(rutaLogo == null){
            rutaLogo = "";
        }
        parametros.put("Logo", this.getClass().getResourceAsStream(rutaLogo));
        
        try {
        JasperReport reporte = (JasperReport) JRLoader.loadObject(getClass().getResource("/Informes/Pedido.jasper"));
        JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros, con);
        JasperViewer jviewer = new JasperViewer(jasperPrint, false);

        JDialog vistaPrevia = new JDialog(jviewer, true);
        vistaPrevia.setTitle("Pedido nº:" + NumPed + " de la empresa: " + GesCalzado.Empresa);
        vistaPrevia.setContentPane(jviewer.getContentPane( ));
        vistaPrevia.setSize(900, 900);
        vistaPrevia.setLocationRelativeTo(null);
        vistaPrevia.validate();

        vistaPrevia.setVisible(true);

        } catch (JRException ex) {
        System.out.println("Error evaluaciones: " + ex);
        }
    }

Etiquetas: imágen, informe, ireport, jasperreports
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:41.