Una de las características de Jaspersoft Reports es la capacidad de incluir gráficos estáticos (logotipos, por ejemplo) en los informes completos. Estos archivos gráficos (jpg, png, etc) normalmente se especifican en el archivo fuente del reporte el archivo JRXML registrándolos por referencia, lo que significa que lo que se almacena es la ruta absoluta o relativa mas el nombre de archivo, no el gráfico en sí. En una implementación empresarial o enfocado en reportes la norma es que el archivo fuente y los archivos de gráficos auxiliares se cargan en un servidor JasperReports para su ejecución.
Dependiendo de nuestra solución o del requerimiento podemos usar recursos externos relativos o cargar los datos desde una base de datos. En este post vamos a dar ejemplos de 4 escenarios y mostrando como hacerlo.

Opción 1 . Usando recursos Externos
Un recurso externo es la forma mas común de colocar una imagen en el reporte
Opción 2: Incrustando la imagen en el reporte (Base64)
Paso 1: codifica tu imagen en base64
Definición: Base64 es un estandar que permite tomar un archivo binario y codificarlo en caracteres ASCII. Como sabemos los archivos XML tienen limitaciones en cuanto a lo que pueden contener, por lo que codificar el archivo de imagen binario en base64 proporciona una forma de incrustar los datos de la imagen en XML manteniendonos dentro del ASCII de XML. Hay muchas opciones de codificar; en este caso puedes usar este codificador de imágenes Base64 online, al terminar lo que obtendrá es una cadena de texto que comienza así:
data:image/jpeg;base64,/9j/4AAQSkZJRAABCCCQEAY...
Esta cadena llamada URI DE DATOS contiene detalles al principio que no forman parte de los datos de la imagen en sí. Desde el inicio hasta la coma incluida – data:image/jpeg;base64,
– debe eliminarse. El resto de la cadena son los datos de imagen codificados en base64 que vamos a utilizar.

Paso 2: coloque los datos de la imagen base64 en una variable de informe
Primero debemos crear la variable.


Se deja todos los demás valores iguales (el nombre de clase de valor es java.lang.String
, sin función de cálculo o tipo de incremento, el tipo de restablecimiento es Report
y sin datos en la expresión de valor inicial o el nombre de clase de fábrica de incrementador).
Paso 3: Agregar imagen al informe
Haga clic y arrastre un elemento de imagen desde la Paleta hasta el informe. Aparece un cuadro de diálogo “Crear nuevo elemento de imagen” con varias opciones para el “Modo de creación de imagen”, incluido un recurso de espacio de trabajo, una ruta absoluta o una URL. Elija la última opción, “Expresión personalizada”, e ingrese este fragmento de Java a continuación. Hay un lugar en el fragmento donde se incluye la variable con la imagen codificada en base64, reemplácelo con el nombre de la variable del paso anterior.


Paso 4: agregue la importación de clase Base64 al informe
Último paso… para usar la Base64.decodeBase64
función cuando se ejecuta el informe, necesitamos importar explícitamente esa clase cuando se ejecuta el informe. En el editor de informes hay pestañas para “Diseño”, “Fuente” y “Vista previa”. Haga clic en “Fuente” para ver el JRXML sin procesar. Debajo de la última línea que comienza con <property name="</code">
y encima de la <querystring>
línea, agregue esta línea:
<import value="org.apache.commons.codec.binary.Base64"></import>


Hemos terminado: Guarde y obtenga una vista previa de su informe, y verá la imagen incluida en el informe.
Las otros métodos de inserción desde la base de datos se describe en el siguiente post.