julfiker/php-jaspersoft

Jasper report base on jaspersoft rest server in to the Laravel or any other php based application.

v1.1 2023-04-25 08:14 UTC

This package is auto-updated.

Last update: 2024-04-15 05:00:36 UTC


README

Integation jaspersoft REST API to php application to manage report in all format as jasper provided like pdf, docx and xlsx etc. I tried to make it easier to integration with jasper soft.

Install it to the application through composer

composer require julfiker/php-jaspersoft

Laravel specific configuration

1. First add service provider as below in to the config/app
Julfiker\Jasper\JasperReportServiceProvider::class,

2. To publish the config
php artisan vendor:publish --provider="Julfiker\Jasper\JasperReportServiceProvider"

3. Add following and configure jasper server credential in to the .env

#### Jasper server credential configuration #######
JASPER_SERVER_URL=http://127.0.0.1:8888/jasperserver
JASPER_SERVER_USERNAME=jasperadmin
JASPER_SERVER_PASSWORD=jasperadmin  
JASPER_SERVER_REQUEST_TIMEOUT=30

Instruction to use in to the Laravel

1. Using Helper function

/** 
* From controller action
*
* @param $path
* @param string $type  pdf|xlsx|docx
* @param string $name name of the report
* @param array $params its optional, parameter of report in array if required. 
*/
return render_report('{JASPER_REPORT_PATH}', 'pdf', "report_name", ["param" => 123]); 
  

If you want to call from route define just follow as below

Route::get('/testing', function (Redirect $redirect) {
    return render_report('{REPORT_PATH}', 'pdf', 'name_of_the_report');
});

2. Using to generate route and make a link to render a report

echo route('julfiker.jasper.report.render', ['path' => "{report_path}", 'type' => 'pdf', "name" => "{name_of_report}", "param" => 1]);

3. Blade template

<a href="{{route('julfiker.jasper.report.render', ['path' => "{report_path}", 'type' => 'pdf', "name" => "{name_of_report}", "param" => 1])}}">Report</a>
OR
<a href="/jasper/report/render?path={report_path}&type=pdf&name=report_name&p=122">Report</a>

Instruction to use it in other php based application

use Julfiker\Jasper\Manager\JasperReport;

$jasper =  new JasperReport();
$jasper->setServerUrl('jasper_server_url')
       ->setUsername('jasper_user')
       ->setPassword('jasper_password')
       ->make();
     
try {
    $reportContent = $jasper
        ->setPath("{JASPER_REPORT_PATH}")
        ->setType("pdf")
        ->setParams(["param1"=> 1, "param2" => 2])
        ->setRequestTimeout(30)  #30 seconds
        ->generate();
  
  

   //If pdf render
   echo $reportContent;
   header('Content-Type: pdf');
   header('Content-Disposition: inline; filename=report.pdf');
   exit;
   
   //if download in excel file with xlsx
    echo $reportContent;
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment; filename==report.xlsx');
    exit;
    
    //Note: If you response header framework specific where you are working on.
}
catch (\Exception $e) {
    echo $e->getMessage();
}

Any Help?

You can contact me through following access
email: mail.julfiker@gmail.com
skype: eng.jewel
whatsapp: 01817108853

You are welcome to contribute on it further improvement/update or extended usability for all. Just make a pull request.

Thank you