Martes, 11 Abril 2017 00:00

Usar Jasper Server Client en Symfony

Escrito por 
Valora este artículo
(0 votos)

En uno de los proyectos del trabajo, nos topamos con la necesidad  de poder construir reportes en un servidor Jasper Server, y poder llamarlo desde php con Symfony, hay un par de bundles con errores y no cumplia con  nuestras necesidades, no quedaba otra que incorporar manualmente.

 Acontuniacion detallo los pasos de manera resumida

Descargarse el jasper server cliente de

http://community.jaspersoft.com/project/php-client/releases

Descomprimimos la descarga y nos econtraremos con el directorio src, que es el que nos importa para poder hacer uso del cliente. Para comentar tambien tenemos el directorio docs que contiene la documentacion en html.
Una vez descargado, en nuestra aplicación Symfony dentro del directorio vendor deberiamos tener las siguiente estructura, según el estandar de codificación PHP psr-0

vendor/Jasper/lib/Jaspersoft

Dentro del directorio Jaspersoft incluimos nuestro src descargado anteriormente

 

 

El siguiente paso es modificar nuestro composer.json, este permite cargar automaticamente clases propias o de terceros mediante el autoload

 

1
2
3
4
5
6
7
8
9
10
11
12
13
    "autoload": {
        "psr-4": {
            "": "src/"
        },
        "classmap": [
            "app/AppKernel.php",
            "app/AppCache.php",
            "vendor/Jasper/lib"
        ],
        "psr-0": {
            "": "src/"
        }
    }

Lo que agregamos

"classmap": [

"app/AppKernel.php",

"app/AppCache.php",

"vendor/Jasper/lib"

],

 

La liena resaltada buscara en esa ubicación lo que queremos autocargar, luego tambien le decimos que seguen el estandar psr-0, buscara siempre en el directorio src

 

"psr-0": {

"": "src/"

}

Una captura de nuestro composer.json

 

Por ultimo para que estos cambios en nuestro composer.json sean reflejados, ejecutamos

 

1
composer install

 

Si queremos ver los cambios reflejados y si realmente se estan incorporando el autocargado del cliente, podemos revisar el archivo

vendor/composer/autoload_classmap.php

Con esto estamos listo para poder usar el cliente dee Jasper Server en nuestro proyecto Symfony

Suponemos que lo usaremos en un controlador rest (con el bundel FOST Rest), estas seria nuestras lineas importantes

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
namespace mi.name.espace;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Jaspersoft\Client\Client;
 
class MyController extends FOSRestController {
  
     /**
     * Genera un reporte  de prueba en jasper server 
     *
     * @param Request $request param fetcher service
     
     * @GET("/public/jasperServer") 
     
     */
    public function getReporteJasperServerAction(Request $request) {
                $c = new \Jaspersoft\Client\Client(
                "http://<MISERVER>/jasperserver", "jasperadmin", "jasperadmin", ""
        );
        $report = $c->reportService()->runReport('/reportes/reportecilo2', 'pdf', null, null,$controls);
        return new Response($report, 200, array(
            'Content-Type' => 'application/pdf',
            'Content-Disposition' => 'attachment; filename="Reporte.pdf"'
               )
        );
    }
 
}

 

 

Ejecutamos la url del servicio en el navegador y deberiamos poder descagar nuestro PDF. Espero les haya servido, hasta pronto

Visto 329 veces Modificado por última vez en Martes, 11 Abril 2017 16:34

1 comentario

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.