Ir al contenido principal

Cómo generar reportes JasperReports (JRXML) desde Quarkus con Gradle

En este tutorial aprenderás a ejecutar un reporte JasperReports (JRXML) desde una API REST creada con Quarkus. También veremos cómo generar un PDF dinámico a partir de parámetros.


1. Crear proyecto Quarkus con Gradle

quarkus create app com.demo:jkude --gradle
cd jkude

2. Agregar dependencias necesarias

Editar el archivo build.gradle:

dependencies {
    implementation "net.sf.jasperreports:jasperreports:6.20.6"
    implementation "com.lowagie:itext:2.1.7"

    // Soluciona la dependencia faltante que Jasper busca por defecto
    implementation "com.github.librepdf:openpdf:1.3.30"
}

repositories {
    mavenCentral()
}
Estas versiones funcionan sin errores y son completamente compatibles con JasperReports 6.20.x.

3. Crear un reporte JRXML básico

Crear:

src/main/resources/reports/report.jrxml

Contenido del archivo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"
        "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="sample" pageWidth="595" pageHeight="842" columnWidth="555">

    <parameter name="mensaje" class="java.lang.String"/>

    <detail>
        <band height="40">
            <textField>
                <reportElement x="0" y="0" width="300" height="40"/>
                <textFieldExpression><![CDATA[$P{mensaje}]]></textFieldExpression>
            </textField>
        </band>
    </detail>

</jasperReport>
Colocar los <parameter> siempre antes de las bandas (detail, title, etc.).

4. Crear un endpoint REST para generar PDF

Archivo:

src/main/java/com/demo/ReportResource.java

Contenido:

package com.demo;

import jakarta.ws.rs.*;
import jakarta.ws.rs.core.*;
import net.sf.jasperreports.engine.*;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

@Path("/reportes")
public class ReportResource {

    @GET
    @Path("/pdf")
    @Produces("application/pdf")
    public Response generar() throws Exception {

        InputStream jrxml = getClass().getResourceAsStream("/reports/report.jrxml");

        JasperReport report = JasperCompileManager.compileReport(jrxml);

        Map<String, Object> params = new HashMap<>();
        params.put("mensaje", "Hola desde Jasper!");

        JasperPrint print = JasperFillManager.fillReport(report, params, new JREmptyDataSource());

        byte[] pdf = JasperExportManager.exportReportToPdf(print);

        return Response.ok(pdf)
                .header("Content-Disposition", "inline; filename=reporte.pdf")
                .build();
    }
}
Ya tenés un endpoint REST que compila JRXML, lo llena con parámetros y devuelve un PDF.

5. Ejecutar el proyecto

./gradlew quarkusDev

Probar en el navegador:

http://localhost:8080/reportes/pdf
Si ves un PDF con “Hola desde Jasper!”, ¡funcionó correctamente!

Conclusión

Ahora tu proyecto Quarkus puede generar reportes PDF usando JasperReports de forma sencilla. Podés extender esto para crear reportes más complejos, tablas, listados o integrar datos desde una base de datos.

Comentarios

Entradas populares de este blog

Instalación y Configuración de MySQL 5.7 en Ubuntu 24.04 LTS

Instalar MySQL 5.7 en Ubuntu 24.04 1. Descargar e instalar MySQL Copiar mkdir ~/mysql57 cd ~/mysql57 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql 2. Instalar dependencias necesarias IMPORTANTE: Se descargan las versiones nuevas de las librerías y se las vincula con las librerías que necesita MySQL. Copiar sudo apt update # Reemplazo de libaio sudo apt install libaio1t64 # Reemplazo de libtinfo y ncurses sudo apt install libtinfo6 libncurses6 Copiar # Crear los enlaces simbólicos sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/libaio.so.1 sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5 sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64...

Instalar Evolution API en Docker con Redis y PostgreSQL Local

Instalar Evolution API en Docker con Redis y PostgreSQL Local En este tutorial vamos a levantar Evolution API usando Docker , con soporte de Redis para sesiones y PostgreSQL local para almacenar datos de manera persistente y compartida entre varios usuarios. 1. Estructura del proyecto Crea una carpeta para tu proyecto y colócate en ella: mkdir -p ~/docker/evolution-api cd ~/docker/evolution-api 2. Archivo docker-compose.yml Este compose levanta Redis y Evolution API : version: "3.9" services: # ✅ SERVICIO REDIS redis: container_name: evolution_redis image: redis:7-alpine restart: unless-stopped ports: - "6379:6379" volumes: - redis_data:/data command: redis-server --save 60 1 --loglevel warning # ✅ SERVICIO EVOLUTION API evolution-api: container_name: evolution_api image: atendai/evolution-api restart: unless-stopped ports: - "8085:8080" env_file: - .env ...

Instalar Jasper Studio 6.21 para Ubuntu 24.04

Instalar js-studiocomm_6.21.3 en Ubuntu 24.4 Para instalar Jaspersoft Studio en Ubuntu 24.4, sigue estos pasos: 1. Descargar Jasper Studio Descarga la versión js-studiocomm_6.21.3 desde el siguiente enlace: Jaspersoft Studio 6.21.3 2. Crear el directorio de instalación mkdir /opt/jasperstudio 3. Mover el archivo descargado mv /dir_descarga/js-studiocomm_6.21.3_linux_x86_64.tgz /opt/jasperstudio/ cd /opt/jasperstudio 4. Extraer el archivo tar -xvzf js-studiocomm_6.21.3_linux_x86_64.tgz cd js-studiocomm_6.21.3 5. Ejecutar Jaspersoft Studio ./Jaspersoft\ Studio 6. Crear acceso directo en el escritorio Para facilitar el acceso, crea un archivo .desktop en el escritorio: gedit ~/Escritorio/jaspersoft-studio.desktop En el archivo jaspersoft-studio.desktop , agrega lo siguiente: [Desktop Entry] Version=1.0 Ty...