使用 JasperReports 在 PHP 中创建报告
Requires
- php: >=5.4.0
- yiisoft/yii2: *
Requires (Dev)
README
使用 JasperReports 6 库通过 JasperStarter v3 命令行工具生成报告的包。
##安装
composer require chrmorandi/jasper
##简介
此包旨在成为编译和处理 JasperReports (.jrxml & .jasper 文件) 的解决方案。
###为什么?
JasperReports 是最佳的开放源代码报告解决方案。
生成 HTML + CSS 以制作 PDF。别再想了,这没有意义! :p
###我能用这个做什么?
嗯,一切。JasperReports 是报告和 BI 的强大工具。
根据他们的网站
JasperReports 库是全球最受欢迎的开放源代码报告引擎。它是完全用 Java 编写的,能够使用来自任何类型数据源的数据,并生成像素完美的文档,可以查看、打印或导出为各种文档格式,包括 HTML、PDF、Excel、OpenOffice 和 Word。
我建议使用 Jaspersoft Studio 来构建你的报告,将其连接到你的数据源(例如 MySQL),遍历结果,并将其输出为 PDF、XLS、DOC、RTF、ODF 等。
你可以用 Jaspersoft 做什么
- 图形设计环境
- 像素完美的报告生成
- 输出到 PDF、HTML、CSV、XLS、TXT、RTF 等
##示例
###《Hello World》示例。
前往存储库根目录中的示例目录(vendor/chrmorandi/yii2-jasper/examples
)。使用 iReport 或你喜欢的文本编辑器打开 hello_world.jrxml
文件,查看源代码。
##要求
- Java JDK 8 或更高版本
- PHP exec() 函数
- [可选] Mysql Connector(如果你想使用 Mysql 数据库)
- [可选] PostgreSQL Connector(如果你想使用 PostgreSQL 数据库)
- [可选] Jaspersoft Studio(用于绘制和编译你的报告)
##安装
###Java
检查你是否已经安装了 Java
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
如果你得到
command not found: java
然后使用以下方法安装它:(Ubuntu/Debian)
$ sudo apt-get install default-jdk
现在再次运行 java -version
并检查输出是否正常。
###Composer
如果你没有安装 Composer,请安装它。
composer require chrmorandi/yii2-jasper
或者在你的 composer.json
文件中添加
{ "require": { "chrmorandi/yii2-jasper": "*" } }
然后只需运行
composer update
这样就完成了。
###将组件添加到配置中
使用数据源名称 (DSN) 格式的连接信息与数据库进行连接。请参阅 https://php.ac.cn/manual/pt_BR/pdo.construct.php
return [ ... 'components' => [ 'jasper' => [ 'class' => 'chrmorandi\jasper\Jasper::className()', 'redirect_output' => false, //optional 'resource_directory' => false, //optional 'locale' => 'pt_BR', //optional 'db' => [ 'dsn' =>'psql:host=localhost;port=5432;dbname=myDatabase', 'username' => 'username', 'password' => 'password', //'jdbcDir' => './jdbc', **Defaults to ./jdbc //'jdbcUrl' => 'jdbc:postgresql://"+host+":"+port+"/"+dbname', ] ] ... ], ... ];
###使用
use chrmorandi\jasper\Jasper; public function actionIndex() { // Set alias for sample directory Yii::setAlias('example', '@vendor/chrmorandi/yii2-jasper/examples'); /* @var $jasper Jasper */ $jasper = Yii::$app->jasper; // Compile a JRXML to Jasper $jasper->compile(Yii::getAlias('@example') . '/hello_world.jrxml')->execute(); // Process a Jasper file to PDF and RTF (you can use directly the .jrxml) $jasper->process( Yii::getAlias('@example') . '/hello_world.jasper', ['php_version' => 'xxx'], ['pdf', 'rtf'], false, false )->execute(); // List the parameters from a Jasper file. $array = $jasper->listParameters(Yii::getAlias('@example') . '/hello_world.jasper')->execute(); // return pdf file Yii::$app->response->sendFile(Yii::getAlias('@example') . '/hello_world.pdf'); }
###MySQL
我们将在 /src/JasperStarter/jdbc/
目录下提供 MySQL 连接器(版本 v5.1.39)。
### PostgreSQL
我们将在 /src/JasperStarter/jdbc/
目录下提供 PostgreSQL(版本 v9.4-1208)。
## 性能
取决于复杂度、数据量以及机器资源。
可以在后台生成报告。
## 许可证
MIT