{"id":4079,"date":"2023-08-14T17:41:14","date_gmt":"2023-08-14T23:41:14","guid":{"rendered":"https:\/\/linuxitos.com\/main\/?p=4079"},"modified":"2023-08-14T18:23:21","modified_gmt":"2023-08-15T00:23:21","slug":"laravel-10-jaspersoft-rest-client","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/laravel-10-jaspersoft-rest-client\/","title":{"rendered":"Laravel 10 &#038; Jaspersoft Rest Client"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/laravel_jasperserver.png\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"485\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/laravel_jasperserver.png\" alt=\"\" class=\"wp-image-4080\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/laravel_jasperserver.png 860w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/laravel_jasperserver-300x169.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/laravel_jasperserver-768x433.png 768w\" sizes=\"auto, (max-width: 860px) 100vw, 860px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Contexto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si necesitan consumir reportes a JasperServer desde Laravel, es posible utilizar Jaspersoft Rest Client, y decid\u00ed compartir una de las configuraciones que utilic\u00e9 inicialmente, puede que les de una idea de c\u00f3mo implementarlo y mejorar el consumo de reportes usando una API de \u00e9ste tipo<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 es Laravel?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Laravel es un framework de c\u00f3digo abierto para desarrollar aplicaciones y servicios web con PHP 5 y PHP 7. Su filosof\u00eda es desarrollar c\u00f3digo PHP de forma elegante y simple, evitando el\u00a0<q>c\u00f3digo espagueti<\/q>.\u00a0<a href=\"https:\/\/laravel.com\/\">official site<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 es Jaspersoft Rest Client?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es una librer\u00eda que se utilizar para realizar peticiones e interactuar con los reportes alojados en Jasper Reports Server a trav\u00e9s de la API REST en PHP nativo. Esto permite incrustar m\u00e1s f\u00e1cilmente los datos en el servidor de reportes, o realizar tareas administrativas en el servidor utilizando PHP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requerimientos para \u00e9ste ejemplo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El proyecto se puede descargar del repositorio <a href=\"https:\/\/github.com\/jesusferm\/Laravel-10-Jaspersoft-Rest-Client\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/jesusferm\/Laravel-10-Jaspersoft-Rest-Client<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SO Fedora 38 (Puede usarse otro SO, sin embargo se utiliz\u00f3 una distro GNU\/Linux)<\/li>\n\n\n\n<li>XAMPP 8.2.4<\/li>\n\n\n\n<li>PHP 8.2.4<\/li>\n\n\n\n<li>Laravel 10<\/li>\n\n\n\n<li>Jaspersoft Rest Client<\/li>\n\n\n\n<li>Composer<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n de Jasper Server<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>** Importante! Se asume que se cuenta con Jasper Server configurado y con al menos un reporte, ya sea con conexi\u00f3n a base de datos o no<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Descargar Laravel 10<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crear el proyecto de laravel 10 <a href=\"https:\/\/github.com\/jesusferm\/Laravel-10-Jaspersoft-Rest-Client\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/jesusferm\/Laravel-10-Jaspersoft-Rest-Client<\/a><\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">composer create-project --prefer-dist laravel\/laravel laravelcv10-jasper<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">**Si s\u00f3lo se clona el repositorio, no olvidar ejecutar el comando composer update, para actualizar y descargar los paquetes:<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">composer update<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Entrar al proyecto desde la terminal y descargar el paquete:<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">composer require jaspersoft\/rest-client<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n de Laravel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Configurar el archivo .env con los accesos de jasperserver<\/p>\n\n\n\n<pre style=\"background: rgb(242, 242, 242); border-radius: 2px; border: 1px solid #aaa; box-sizing: border-box; color: #222; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">JASPER_SERVER_USERNAME=jasperadmin\nJASPER_SERVER_PASSWORD=jasperadmin\nJASPER_SERVER_URL=http:\/\/localhost:8080\/jasperserver<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configurar autoload<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00f1adir los siguiente elementos en el autoload:<\/p>\n\n\n\n<pre style=\"background: rgb(242, 242, 242); border-radius: 2px; border: 1px solid #aaa; box-sizing: border-box; color: #222; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">[...]\n\n\"autoload\": {\n    \"psr-4\": {\n        \"App\\\\\": \"app\/\",\n        \"Database\\\\Factories\\\\\": \"database\/factories\/\",\n        \"Database\\\\Seeders\\\\\": \"database\/seeders\/\"\n    },\n    \"files\": [\n        \"app\/Helpers\/jasper.php\"\n    ]\n},\n\n[...]<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Archivo helper reports<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crear en dentro del directorio App\/Helpers\/helpers el archivo jasper.php y a\u00f1adir lo siguiente ** Aqu\u00ed se configura la jasper server, por lo que si las contrase\u00f1as o direcci\u00f3n url, no corresponden a las predeterminadas, realizar el cambio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nuse Illuminate\\Support\\Facades\\Storage;\nuse Jaspersoft\\Client\\Client;\n\nfunction reporte($idRegistro, $name, $params, $type = 'pdf')\n{\n    try {\n        $client = new Client(env('JASPER_SERVER_URL'), env('JASPER_SERVER_USERNAME'), env('JASPER_SERVER_PASSWORD'));\n        $report = $client->reportService()->runReport('\/reports\/'.$name, $type, null, null, $params);\n        $nombre_temporal = str_replace('\/', '_', $name).'_'.$idRegistro.'.'.$type;\n        Storage::disk('public')->put('reports\/'.$nombre_temporal, $report);\n\n        return 'storage\/reports\/'.$nombre_temporal;\n    } catch (Throwable $error) {\n        return 'error '.$error;\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">A\u00f1adir al archivo web.php<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Route::get('\/', function () {\n    return view('welcome');\n})->name('\/');\n\nRoute::get('reports', 'App\\Http\\Controllers\\ReportController@index')->name('reports');<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Crear el controlador ReportController.php<\/h2>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">php artisan make:controller ReportController --resource<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y a\u00f1adir en el m\u00e9todo index<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public function index()\n{\n    $params = &#91;\n        'nombre_movimiento' => 'Determinaci\u00f3n del tr\u00e1mite',\n        'autoriza' => '',\n        'cargo' => '',\n    ];\n    $pdf = reporte(1, 'Codeigniter\/reporteuno', $params, 'pdf');\n    return view('report', compact('pdf'));\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Crear la vista report.blade.php<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\">\n    &lt;head>\n        &lt;meta charset=\"utf-8\">\n        &lt;title>Test Report Jasper Laravel 10 | linuxitos&lt;\/title>\n        &lt;link rel=\"icon\" href=\"{{ asset('assets\/images\/favicon.png')}}\" type=\"image\/png\">\n        &lt;link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.1\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-4bw+\/aepP\/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9\" crossorigin=\"anonymous\">\n        &lt;link rel=\"preconnect\" href=\"https:\/\/fonts.bunny.net\">\n        &lt;link href=\"https:\/\/fonts.bunny.net\/css?family=figtree:400,600&amp;display=swap\" rel=\"stylesheet\" \/>\n    &lt;\/head>\n    &lt;body class=\"antialiased\">\n        &lt;div class=\"container\">\n            &lt;main>\n                &lt;div class=\"py-5 text-center\">\n                    &lt;a href=\"{{route('\/')}}\">\n                        &lt;img class=\"d-block mx-auto mb-4\" src=\"{{asset('assets\/images\/logo.svg')}}\" alt=\"\" width=\"200\">\n                    &lt;\/a>\n                    &lt;h1 class=\"d-inline\">Welcome to Laravel!&lt;\/h1> &lt;small class=\"small align-top\">v{{ Illuminate\\Foundation\\Application::VERSION }}&lt;\/small>\n                &lt;\/div>\n                &lt;div class=\"row\">\n                    &lt;div class=\"col-md-12\">\n                        &lt;p>\n                            PDF: &lt;a href=\"{{asset($pdf)}}\" target=\"_blank\">{{asset($pdf)}}&lt;\/a>\n                        &lt;\/p>\n                    &lt;\/div>\n                &lt;\/div>\n                &lt;div class=\"row\">\n                    &lt;div class=\"col-md-12\">\n                        &lt;embed src=\"{{asset($pdf)}}\" type=\"application\/pdf\" width=\"100%\" height=\"600px\"\/>\n                    &lt;\/div>\n                &lt;\/div>\n                &lt;div class=\"ml-4 text-center text-sm text-gray-500 dark:text-gray-400 sm:text-right sm:ml-0\">\n                    Laravel v{{ Illuminate\\Foundation\\Application::VERSION }} (PHP v{{ PHP_VERSION }})\n                &lt;\/div>\n            &lt;\/main>\n        &lt;\/div>\n        &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.1\/dist\/js\/bootstrap.bundle.min.js\" integrity=\"sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm\" crossorigin=\"anonymous\">&lt;\/script>\n    &lt;\/body>\n&lt;\/html><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_1.4.10\">Crear enlace con link<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar que el directorio storage\/app\/public\/reports exista, en caso de que no, crearlo manualmente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan storage:<strong>link<\/strong><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_1.4.11\">Iniciar el proyecto<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>php<\/strong> artisan serve<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Abrir el enlace\u00a0<a href=\"http:\/\/127.0.0.1:8000\/reports\">http:\/\/127.0.0.1:8000\/reports<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"653\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/2-1024x653.png\" alt=\"\" class=\"wp-image-4082\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/2-1024x653.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/2-300x191.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/2-768x489.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/2.png 1365w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El proyecto completo lo pueden descargar de <a href=\"https:\/\/github.com\/jesusferm\/Laravel-10-Jaspersoft-Rest-Client\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contexto Si necesitan consumir reportes a JasperServer desde Laravel, es posible utilizar Jaspersoft Rest Client, y decid\u00ed compartir una de las configuraciones que utilic\u00e9 inicialmente, puede que les de una idea de c\u00f3mo implementarlo y mejorar el consumo de reportes usando una API de \u00e9ste tipo Qu\u00e9 es Laravel? Laravel es un framework de c\u00f3digo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1889,1540,1543,292,1541,1890],"tags":[1836,1936,1934,1933,1638,1891],"class_list":["post-4079","post","type-post","status-publish","format-standard","hentry","category-desarrollo-web","category-develepmet","category-developer","category-web","category-web-developer","category-web-development","tag-jasper","tag-jaspersoft-client","tag-jaspersoft-rest","tag-jaspersoft-rest-client","tag-laravel","tag-laravel-10"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/comments?post=4079"}],"version-history":[{"count":8,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4079\/revisions"}],"predecessor-version":[{"id":4089,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4079\/revisions\/4089"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=4079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=4079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=4079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}