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.

Imagen en JasperReport : Estas son las opciones del contenedor de imagen.

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.

imagen convertida en Base64

Paso 2: coloque los datos de la imagen base64 en una variable de informe

Primero debemos crear la variable.

Creando una variable en JasperReport.
Asignamos nombre a la variable, y dejamos el resto de los campos iguales.

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

Seleccione “Expresión personalizada” y pegue el fragmento de Java.
Expresion

Paso 4: agregue la importación de clase Base64 al informe

Último paso… para usar la Base64.decodeBase64funció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>
Agregando la importacion de clase Paso 01.

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.

Nosotros y terceros seleccionados utilizamos cookies o tecnologías similares con fines técnicos y, con su consentimiento, para otras finalidades (“interacciones y funcionalidades básicas”, “mejora de la experiencia”, “medición” y “segmentación y publicidad”) según se especifica en la política de cookies. Usted es libre de otorgar, denegar o revocar su consentimiento en cualquier momento.    Configurar y más información
Privacidad