julfiker / php-jaspersoft

Jasper 报告基于 jaspersoft REST 服务器集成到 Laravel 或任何其他基于 PHP 的应用程序。

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

This package is auto-updated.

Last update: 2024-09-15 06:00:08 UTC


README

将 jaspersoft REST API 集成到 PHP 应用程序中,以管理所有格式报告,如 Jasper 提供的 pdf、docx 和 xlsx 等。我尽量让它更容易与 Jasper Soft 集成。

通过 composer 安装到应用程序

composer require julfiker/php-jaspersoft

Laravel 特定配置

1. 首先将服务提供者添加到 config/app 文件中
Julfiker\Jasper\JasperReportServiceProvider::class,

2. 发布配置
php artisan vendor:publish --provider="Julfiker\Jasper\JasperReportServiceProvider"

3. 在 .env 文件中添加以下内容并配置 Jasper 服务器凭据

#### 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

Laravel 使用说明

1. 使用辅助函数

/** 
* 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]); 
  

如果您想从路由调用,请按照以下步骤操作

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

2. 使用它生成路由并创建一个链接以渲染报告

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

3. Blade 模板

<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>

在其他 PHP 应用程序中使用它的说明

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();
}

需要帮助吗?

您可以通过以下方式联系我
邮箱:mail.julfiker@gmail.com
skype:eng.jewel
whatsapp:01817108853

欢迎您为其进一步的改进/更新或扩展功能做出贡献。只需发起一个 pull request。

谢谢