hboie / jasper-report-bundle
Symfony 2-5 / Symfony Flex Bundle 集成 Jaspersoft REST v2 客户端 (jaspersoft/rest-client)
Requires
- php: >=5.3.2
- ext-zip: *
- hboie/jasper-rest-client: *
- symfony/filesystem: >=2.6
- symfony/framework-bundle: ~2.6|~3.0|~4.0|~5.0
README
JasperReportBundle 需要jaspersoft/rest-client 并在 Symfony 服务容器中提供 JasperReport-Client 服务。
使用 Symfony Flex 安装(4 / 5)
Symfony 4 / 5 中的基本用法
使用 Symfony 2 / 3 安装
Symfony 2 / 3 中的基本用法
搜索资源命令
导出资源命令
导入资源命令
在不同服务器之间复制资源
附加配置选项
使用 Symfony Flex 安装(4 / 5)
1 将捆绑包添加到 composer.json
composer require hboie/jasper_report_bundle
2 捆绑包将被自动注册,并执行配方,在 config/packages
目录中创建配置文件 jasper-report.yaml
,并在 .env
文件中创建相应的条目
3 在文件 jasper-report.yaml
中更改标准设置
hboie_jasper_report: host: 'https://:8080/jasperserver' username: '%env(HBOIE_JASPER_REPORT_USERNAME)%' password: '%env(HBOIE_JASPER_REPORT_PASSWORD)%' org_id: '%env(HBOIE_JASPER_REPORT_ORGID)%'
和在 .env
文件中
HBOIE_JASPER_REPORT_USERNAME=jasperadmin
HBOIE_JASPER_REPORT_PASSWORD=jasperadmin
HBOIE_JASPER_REPORT_ORGID=
Symfony 4 / 5 中的基本用法
捆绑包支持自动装配,因此您可以直接在控制器中访问报告服务,例如。
use Symfony\Component\HttpFoundation\Request; use Hboie\JasperReportBundle\ReportService; public function reportAction(Request $request, ReportService $reportService) { $report = $reportService->runReport('/reports/TestReport', 'pdf'); $response = new Response($report); $response->headers->set('Content-type', 'application/pdf'); $response->headers->set('Content-Disposition', 'inline; filename=Report.pdf'); $response->headers->set('Cache-Control', 'must-revalidate'); return $response; }
使用 Symfony 2 / 3 安装
1 将捆绑包添加到 composer.json
composer require hboie/jasper_report_bundle
2 在 app/AppKernel.php
中注册捆绑包
$bundle = [ ... new Hboie\JasperReportBundle\HboieJasperReportBundle(), ... ];
3 向 app/config/config.yml
添加参数
hboie_jasper_report: host: "%jasper_host%" username: "%jasper_user%" password: "%jasper_password%" org_id: "%jasper_org_id%"
4 在 app/config/paramters.yml.dist
中添加一个示例配置
jasper_host: https://:8080/jasperserver jasper_user: jasperadmin jasper_password: jasperadmin jasper_org_id:
5 在 app/config/paramters.yml
中添加您自己的配置
Symfony 2 / 3 中的基本用法
您现在可以通过 Symfony 服务 jasperreport.client
访问 Client
对象
$client = $this->get('jasperreport.client');
或直接使用 Symfony 服务 jasperreport.reportservice
访问 ReportService
$report = $this->get('jasperreport.reportservice')->runReport('/reports/TestReport', 'pdf');
因此,返回 PDF 报告的控制器看起来像
public function reportAction(Request $request) { $report = $this->get('jasperreport.reportservice')->runReport('/reports/TestReport', 'pdf'); $response = new Response($report); $response->headers->set('Content-type', 'application/pdf'); $response->headers->set('Content-Disposition', 'inline; filename=Report.pdf'); $response->headers->set('Cache-Control', 'must-revalidate'); return $response; }
搜索资源命令
使用 jasper:repository:search
可以在 JaserReport 服务器上搜索资源
php bin/console jasper:repository:search <Citeria> <Detail>
标准:搜索标准
详细信息:显示详细信息(可选)
如果没有提供详细值,则仅列出资源的 uri。如果提供了大于 0 的详细值,将显示完整数据。
导出资源命令
使用 jasper:export:resource
命令,可以从 JasperServer 导出指定资源并将其下载到 zip 存档文件。
php bin/console jasper:export:resource <UriOfResource> <Filename> <SkipDependentResources>
资源 Uri:要下载的资源 uri
文件名:本地目标文件的文件名
跳过依赖资源:如果设置为 "true",则跳过依赖资源,例如报告的数据库连接。
导入资源命令
使用 jasper:import:resource
命令,可以将先前导出的资源导入到 JasperServer。
php bin/console jasper:import:resource <Filename> <IncludebrokenDependencies>
文件名:本地导入文件的文件名
包含损坏的依赖项:如果设置为 "true",对于具有损坏的依赖项的资源(例如,带有 SkipDependentResources
选项导出),导入过程将尝试通过使用本地资源解析依赖项来导入资源。
在不同服务器之间复制资源
您可以使用导出和导入资源命令将资源从一个服务器复制到另一个服务器,例如在应用程序的不同阶段之间。在导出资源时使用SkipDependentResources
选项,在第二个服务器导入资源时使用IncludebrokenDependencies
选项,以避免在目标服务器上覆盖数据库连接。
请注意,两个服务器上的导出和导入密钥已调整。有关如何使用自定义密钥的更多信息,请参阅https://community.jaspersoft.com/documentation/tibco-jasperreports-server-security-guide/v7/using-custom-keys。
创建密钥存储
keytool -genseckey -keystore ./mystore -storetype jceks -storepass <storepass> -keyalg AES -keysize 128 -alias importExportEncSecret -keypass <keypass>
将存储复制到JasperServer的buildomatic目录
cp ./mystore /opt/jasperreports-server-cp-7.8.0/buildomatic/
以root用户身份进入buildomatic目录,并将密钥导入JasperServer
./js-import.sh --input-key --keystore ./mystore --storepass <storepass> --keyalias importExportEncSecret --keypass <keypass>
重启JasperServer应用程序或重启服务器
附加配置选项
hboie_jasper_report: host: 'https://:8080/jasperserver' username: '%env(HBOIE_JASPER_REPORT_USERNAME)%' password: '%env(HBOIE_JASPER_REPORT_PASSWORD)%' org_id: '%env(HBOIE_JASPER_REPORT_ORGID)%' timeout: 50
timeout: REST请求的超时时间(以秒为单位)