smart145 / phpjasper
PHP报告生成器
Requires
- php: ^7.2|^8.0
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
Requires (Dev)
- php-coveralls/php-coveralls: ^2.2
- phpstan/phpstan: ^0.12.5
- phpunit/phpunit: ^8.4|^9.4
- squizlabs/php_codesniffer: *
- dev-master
- v3.3.19
- v3.3.18
- v3.3.17
- 3.3.16
- 3.3.15
- 3.3.14
- 3.3.13
- 3.3.12
- 3.3.11
- 3.3.10
- 3.3.9
- 3.3.8
- 3.3.7
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.1
- 3.0.0
- v2.7
- v2.6
- v2.5
- v2.4
- v2.3
- v2.2
- v2.1
- 2.0
- v1.16
- v1.15
- v1.14
- v1.13
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- v1.6
- v1.5
- v1.4
- v1.3
- v1.2
- v1.1
- v1.0
- dev-add-cambria-font
- dev-add_packages
- dev-update_packages
- dev-add_century_gothic_font
- dev-develop
This package is auto-updated.
Last update: 2024-09-21 19:50:26 UTC
README
PHPJasper
PHP报告生成器
文档
请考虑捐款,支持我们的活动
关于
PHPJasper是使用PHP编译和处理JasperReports (.jrxml & .jasper文件)的最好解决方案,简而言之:使用PHP生成报告。
我们Discord频道
注意事项
- PHPJasper可以不依赖于你的PHP框架使用
- 对于低于7.0的PHP版本,请参阅:v1.16
- 这里有一些如何使用PHPJasper的示例
为什么选择PHPJasper?
你是否曾需要为你的伟大Web应用程序创建一个具有许多字段的漂亮发票?
我需要,但现有的解决方案都不完美。生成HTML + CSS以创建PDF?这毫无意义! :)
然后我发现了<强> JasperReports强>,这是最好的开源报告解决方案。
我可以用它做什么?
好吧,一切。JasperReports是报告和BI的强大工具。
从他们的网站
JasperReports库是全球最受欢迎的开源报告引擎。它完全用Java编写,能够使用来自任何类型数据源的数据,并生成像素完美的文档,可以以多种文档格式查看、打印或导出,包括HTML、PDF、Excel、OpenOffice和Word。
建议使用Jaspersoft Studio构建报告,将其连接到数据源(例如MySQL、POSTGRES),遍历结果,并输出到PDF、XLS、DOC、RTF、ODF等。
你可以做的示例
- 发票
- 报告
- 列表
需求
- PHP 7.2或更高版本
- Java JDK 1.8
可选
- 任何
jdbc
驱动程序,用于从数据库(MySQL、POSTGRES、MSSQL...)生成报告,必须复制到文件夹bin/jasperstarter/jdbc
- 我们在
bin/jasperstarter/jdbc
目录中提供了<强> PostgreSQL强>(42.2.9)。 - 我们在
bin/jasperstarter/jdbc
目录中提供了<强> MySQL连接器强>(v5.1.48)。 - Microsoft JDBC Drivers SQL Server.
- <强> Jaspersoft Studio强>(用于绘制报告)。
安装
如果你没有安装,请安装Composer。
composer require geekcom/phpjasper
或者在你的文件'composer.json'中添加
{ "require": { "geekcom/phpjasper": "^3.2.0" } }
然后只需运行
composer install
就这样。
PHPJasper与Docker
安装了Docker CE和docker-compose后,只需运行
docker-compose up -d
docker exec -it phpjasper composer install
要执行测试
docker exec -it phpjasper sudo composer test
或docker exec -it phpjasper sudo composer testdox
要手动查看测试覆盖率,执行文件:tests/log/report/index.html
帮助我们编写新的测试,进行分支操作 :)
示例
《你好,世界》示例。
前往仓库根目录下的示例目录(vendor/geekcom/phpjasper/examples
)。使用 Jaspersoft Studio 或您喜欢的文本编辑器打开 hello_world.jrxml
文件,并查看源代码。
编译
首先,我们需要将我们的 JRXML
文件编译成 JASPER
二进制文件。我们只需要做一次。
注意 1:如果您使用的是 Jaspersoft Studio,则无需执行此步骤。您可以直接在程序中编译。
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = __DIR__ . '/vendor/geekcom/phpjasper/examples/hello_world.jrxml'; $jasper = new PHPJasper; $jasper->compile($input)->execute();
此命令将编译 hello_world.jrxml
源文件到 hello_world.jasper
文件。
处理
现在让我们处理之前编译的报告
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = __DIR__ . '/vendor/geekcom/phpjasper/examples/hello_world.jasper'; $output = __DIR__ . '/vendor/geekcom/phpjasper/examples'; $options = [ 'format' => ['pdf', 'rtf'] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
现在查看示例文件夹! :) 很好对吧?您现在有 2 个文件,hello_world.pdf
和 hello_world.rtf
。
查看 src/JasperPHP.php
中的 methods compile
和 process
以获取更多详细信息
列出参数
查询 jasper 文件以检查给定 jasper 报告文件中可用的参数
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = __DIR__ . '/vendor/geekcom/phpjasper/examples/hello_world_params.jrxml'; $jasper = new PHPJasper; $output = $jasper->listParameters($input)->execute(); foreach($output as $parameter_description) print $parameter_description . '<pre>';
使用数据库生成报告
我们还可以指定连接到数据库的参数
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = '/your_input_path/your_report.jasper'; $output = '/your_output_path'; $options = [ 'format' => ['pdf'], 'locale' => 'en', 'params' => [], 'db_connection' => [ 'driver' => 'postgres', //mysql, .... 'username' => 'DB_USERNAME', 'password' => 'DB_PASSWORD', 'host' => 'DB_HOST', 'database' => 'DB_DATABASE', 'port' => '5432' ] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
注意 2
有关完整的位置列表,请参阅支持的位置
使用 MSSQL 数据库
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = '/your_input_path/your_report.jasper or .jrxml'; $output = '/your_output_path'; $jdbc_dir = __DIR__ . '/vendor/geekcom/phpjasper/bin/jaspertarter/jdbc'; $options = [ 'format' => ['pdf'], 'locale' => 'en', 'params' => [], 'db_connection' => [ 'driver' => 'generic', 'host' => '127.0.0.1', 'port' => '1433', 'database' => 'DataBaseName', 'username' => 'UserName', 'password' => 'password', 'jdbc_driver' => 'com.microsoft.sqlserver.jdbc.SQLServerDriver', 'jdbc_url' => 'jdbc:sqlserver://127.0.0.1:1433;databaseName=Teste', 'jdbc_dir' => $jdbc_dir ] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
从 XML 生成报告
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = '/your_input_path/your_report.jasper'; $output = '/your_output_path'; $data_file = __DIR__ . '/your_data_files_path/your_xml_file.xml'; $options = [ 'format' => ['pdf'], 'params' => [], 'locale' => 'en', 'db_connection' => [ 'driver' => 'xml', 'data_file' => $data_file, 'xml_xpath' => '/your_xml_xpath' ] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
从 JSON 生成报告
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = '/your_input_path/your_report.jasper'; $output = '/your_output_path'; $data_file = __DIR__ . '/your_data_files_path/your_json_file.json'; $options = [ 'format' => ['pdf'], 'params' => [], 'locale' => 'en', 'db_connection' => [ 'driver' => 'json', 'data_file' => $data_file, 'json_query' => 'your_json_query' ] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
性能
取决于复杂性、数据量以及您的机器资源(告诉我您的使用情况)。
我有一个生成带有 DB 连接、图片和多页的 发票 报告,它大约需要 3/4 秒 来处理。我建议您使用工作器在后台生成报告。
谢谢
Cenote GmbH 为 JasperStarter 工具。
JetBrains 为 PhpStorm 和所有优秀的工具。
有问题?
打开一个新的 问题 或查找一个已关闭的问题
许可
MIT
贡献
贡献者 ✨
感谢这些优秀的人(emoji key)
此项目遵循 all-contributors 规范。欢迎任何形式的贡献!