julfiker / php-jaspersoft
Jasper 报告基于 jaspersoft REST 服务器集成到 Laravel 或任何其他基于 PHP 的应用程序。
v1.1
2023-04-25 08:14 UTC
Requires
- php: >=7.2
- jaspersoft/rest-client: ^2.0
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。
谢谢