{"id":4064,"date":"2023-08-14T11:33:02","date_gmt":"2023-08-14T17:33:02","guid":{"rendered":"https:\/\/linuxitos.com\/main\/?p=4064"},"modified":"2023-08-14T14:52:20","modified_gmt":"2023-08-14T20:52:20","slug":"codeigniter-3-jaspersoft-rest-client","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/codeigniter-3-jaspersoft-rest-client\/","title":{"rendered":"Codeigniter 3 &#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\/civ3_jasperserver.png\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"485\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/civ3_jasperserver.png\" alt=\"\" class=\"wp-image-4065\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/civ3_jasperserver.png 860w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/civ3_jasperserver-300x169.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/civ3_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\">Recientemente desarroll\u00e9 un proyecto en Codeigniter 3 en donde se consumen reportes alojados en JasperServer, con el paquete de composer llamado 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 CodeIgniter?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CodeIgniter es un framework de desarrollo de aplicaciones web de c\u00f3digo abierto y basado en PHP. Fue creado por EllisLab y ahora es mantenido por la comunidad de desarrolladores. <a href=\"https:\/\/www.codeigniter.com\/download\" target=\"_blank\" rel=\"noreferrer noopener\">CodeIgniter<\/a> proporciona una estructura ligera y sencilla para desarrollar aplicaciones web r\u00e1pidas y eficientes, siguiendo el patr\u00f3n de dise\u00f1o MVC official site.<\/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 de <a href=\"https:\/\/github.com\/jesusferm\/Codeigniter-3-Jaspersoft-Rest-Client\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/jesusferm\/Codeigniter-3-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 7.4<\/li>\n\n\n\n<li>PHP 7.4<\/li>\n\n\n\n<li>Codeigniter 3 (S\u00f3lo es soportado hasta la versi\u00f3n 8, por tal motivo se us\u00f3 PHP 7.4)<\/li>\n\n\n\n<li>Jaspersoft Rest Client 2.0<\/li>\n\n\n\n<li>Composer<\/li>\n\n\n\n<li>Installaci\u00f3n de Jaspersoft Rest Client en Codeigniter 3<\/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 Codeigniter 3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ir al <a href=\"https:\/\/www.codeigniter.com\/download\" target=\"_blank\" rel=\"noreferrer noopener\">sitio oficial de codeigniter<\/a> y descargar la versi\u00f3n 3, \u00e9ste ejemplo es para la versi\u00f3n 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Descomprimir el archivo en htdocs de xampp<\/p>\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<p class=\"wp-block-paragraph\">Configuraci\u00f3n de Codeigniter<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crear un archivo llamado .htaccess en el proyecto y a\u00f1adir el siguiente c\u00f3digo<\/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;\">RewriteEngine On\nRewriteCond %{REQUEST_URI} ^\/system.*\nRewriteRule ^(.*)$ index.php?\/$1 [L]\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^(.+)$ index.php?\/$1 [L]\nConfigurar config\/config.php<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Modificar y a\u00f1adir la Url completa del directorio del proyecto<\/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;\">$config['base_url'] = 'http:\/\/localhost\/codeigniter-jasper\/';<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quitar la configuraci\u00f3n que se utilice index.php para acceder en la url<\/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;\">$config['index_page'] = '';<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar que el uri protocol sea REQUEST_UR<\/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;\">$config['uri_protocol'] = 'REQUEST_URI';<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configurar autoload<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00f1adir que se autocarguen los siguiente elementos:<\/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;\">$autoload['helper'] = array('reports', 'file', 'url');<\/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 helpers el archivo reports_helper.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\nrequire_once \"vendor\/autoload.php\";\nuse Jaspersoft\\Client\\Client; \n\nfunction reporte($idRegistro, $name, $params, $type = 'pdf')\n{\n\t$ci = &amp;get_instance();\n    try {\n\t\t$client = new Client('http:\/\/localhost:8080\/jasperserver', 'jasperadmin', 'jasperadmin');\n        $report = $client-&gt;reportService()-&gt;runReport('\/reports\/'.$name, $type, null, null, $params);\n        $nombre_temporal = str_replace('\/', '_', $name).'_'.$idRegistro.'.'.$type;\n\t\t$config&#91;'upload_path'] \t\t= '.\/files\/reports\/';\n\t\t\/* $config&#91;'max_size']     \t= '1000000';\n\t\t$config&#91;'max_width'] \t\t= '10240000000';\n\t\t$config&#91;'max_height'] \t\t= '76889';\n\t\t$config&#91;'encrypt_name'] \t= true;\n\t\t$config&#91;'allowed_types'] \t= 'jpg|jpeg|png|gif|pdf';\n\t\t$config&#91;'file_name'] \t\t= $nombre_temporal; *\/\n\t\twrite_file($config&#91;'upload_path'].$nombre_temporal, $report);\n        return 'files\/reports\/'.$nombre_temporal;\n    } catch (Throwable $error) {\n        return 'error '.$error;\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Invocar a la funci\u00f3n reporte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para invocar a la funci\u00f3n reporte, es necesario pasar los siguientes par\u00e1metros:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un id consecutivo, el nombre del reporte que debe estar en el servidor de jasper, la lista de par\u00e1metros en caso que se requieran en el reporte, y el formato del reporte que se quiera obtener.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;...]\n\npublic function index()\n{\n\t$params = &#91;\n            'nombre_movimiento' => 'Reporte uno',\n            'autoriza' => '',\n            'cargo' => '',\n        ];\n        $data&#91;'pdf'] = reporte(1, 'Codeigniter\/reporteuno', $params, 'pdf');\n\t\t$this->load->view('report', $data);\n}\n\n&#91;...]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Abrir la url del proyecto en el navegador<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Configurar y modificar la url del proyecto a como lo manjen <a rel=\"noreferrer noopener\" href=\"http:\/\/localhost\/civ3-jasper\/\" target=\"_blank\">http:\/\/localhost\/civ3-jasper\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"675\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/1-1024x675.png\" alt=\"\" class=\"wp-image-4068\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/1-1024x675.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/1-300x198.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/1-768x507.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/08\/1.png 1331w\" 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\/Codeigniter-3-Jaspersoft-Rest-Client\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas fuentes de consulta<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211; <a href=\"https:\/\/stackoverflow.com\/questions\/39633886\/how-to-integrate-jasper-reports-in-codeigniter-php\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stackoverflow.com\/questions\/39633886\/how-to-integrate-jasper-reports-in-codeigniter-php<\/a><br>&#8211; <a href=\"https:\/\/blog.e-zest.com\/integration-of-jaspersoft-report-php-codeigniter-web-framework\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/blog.e-zest.com\/integration-of-jaspersoft-report-php-codeigniter-web-framework<\/a><br>&#8211; <em><a href=\"https:\/\/forum.codeigniter.com\/thread-77397.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/forum.codeigniter.com\/thread-77397.html<\/a><\/em><br>&#8211; <a href=\"https:\/\/forum.codeigniter.com\/thread-1202.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/forum.codeigniter.com\/thread-1202.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contexto Recientemente desarroll\u00e9 un proyecto en Codeigniter 3 en donde se consumen reportes alojados en JasperServer, con el paquete de composer llamado 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4065,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,929,67,1511,1165],"tags":[1936,1934,1933,1932,1935],"class_list":["post-4064","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codeigniter","category-mysql-server","category-php","category-server","category-servidor-php","tag-jaspersoft-client","tag-jaspersoft-rest","tag-jaspersoft-rest-client","tag-rest","tag-rest-client"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4064","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=4064"}],"version-history":[{"count":6,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4064\/revisions"}],"predecessor-version":[{"id":4077,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/4064\/revisions\/4077"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media\/4065"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=4064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=4064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=4064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}