JasperReport. Error en subreport con imagen.
Buenos dias.
Espero que me puedan ayudar con un problema que tengo. Estoy desarrollando un motor de informes con JasperReport 6. Todo va correctamente salvo los subreportes con imágenes. Lo que hago es crear un subreporte correspondiente a la cabecera de los documentos ya que esta es común a todos ellos y en caso de que cambie el logo o descripción es mejor cambiarlo solo en un subreport que no en todos los reportes. El caso es que cuando esta cabecera tiene una imagen con el logo, el reporte sale pero sin esta cabecera.
Los reportes están en un repositorio en el file system y son compilados por mi motor.
Las rutas a los subrepor e imágenes se componen con parámetros que son pasados antes de compilar. Si la imagen está en el reporte principal esta se inserta correctamente y los reportes salen correctamente pero si añado un subreporte con imagen estos no aparecen.
Alguna idea de que puede estar pasando?
La linea donde se inserta la imagen en el subreporte es:
Se declara el parámetro en el subreport.
......
La imagen insertada en el subreportes:
<reportElement x="25" y="6" width="61" height="61" uuid="e6cb597a-eb5e-4fc8-92c2-1b6e1e6e4f71"/>
<imageExpression><![CDATA["alerta.png"]]></imageExpression>
</image>
Para compilar tanto el reporte como los subreportes lo que se hace es:
JasperReport jasperReport = JasperCompileManager.compileReport("nombredelreporte.jrxml");
JRSaver.saveObject(jasperReport, "nombredelreporte.jasper");
JRElementsVisitor.visitReport(jasperReport, new ListadoVisitor());
La clase ListadoVisitor es un inspector que se encarga de compilar los subreportes y el código es (pongo solo el método que interesa):
public void visitSubreport(JRSubreport subreport){
try {
String sNewSubReporte = "rutadelsubreport" + UtilReport.getNombreSinExtension(extractFilename(subreport)) + ".jasper";
log.debug("Se debe compilar ::: " + sNewSubReporte);
String jasperFile = JasperCompileManager.compileReportToFile(UtilReport.getNombreSinExtension(sNewSubReporte) + ".jrxml");
if (new File(jasperFile).exists()){
log.info("El reporte ha sido generado con exito. " + jasperFile);
} else {
throw new RuntimeException("Error al generar " + jasperFile);
}
} catch (Throwable e) {
log.info("Error al compilar la cabecera ::: " + e);
}
}
Los parámetros una vez ha sido todo compilado se pasan de la siguiente manera:
exporter.fillReportAndReturn(jasperReport, params, output, formato);
params es un Map donde se le pasa "IMAGEN_DIR" y la ruta absoluta de las imágenes.
El resultado es un pdf con el reporte principal pero sin el subreporte, sin traza de error ni warning
Gracias por adelantado y espero que me podáis ayudar.
Un saludo
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 9 semanas 1 hora
hace 10 semanas 1 día
hace 16 semanas 6 días
hace 1 año 9 semanas
hace 2 años 21 semanas
hace 2 años 25 semanas
hace 2 años 32 semanas
hace 2 años 41 semanas
hace 2 años 43 semanas
hace 2 años 45 semanas