sellerbox / phpjasper
PHP报表生成器 phpjasper 版本 6.2
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6.1
This package is auto-updated.
Last update: 2024-09-13 18:16:07 UTC
README
PHP报表生成器
文档
关于
PHPJasper 是使用 PHP 编译和处理的最佳解决方案 JasperReports (.jrxml & .jasper 文件),简而言之:使用 PHP 生成报表。
备注
- 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.0 或以上
- Java JDK 1.8
可选
- Mysql JDBC 驱动程序(如果您想使用数据库)
- PostgreSQL JDBC 驱动程序(如果您想使用数据库)
- Microsoft JDBC 驱动程序(如果您想使用数据库)
- Jaspersoft Studio(用于绘制和编译您的报表)
Java (JDK)
检查您是否已安装 Java
$ javac -version
javac version 1.8.0_101
如果您得到
command not found: javac
那么使用以下方式安装它:(Ubuntu/Debian)
$ sudo apt-get install default-jdk
要在(centOS/Fedora)上安装
# yum install java-1.8.0-openjdk.x86_64
要安装在 Windows 上,请访问链接-> JDK 并查找适合您系统的最合适的版本。
现在再次运行 javac -version
并检查输出是否正常。
安装
如果您没有安装,请安装 Composer。
composer require lavela/phpjasper
或者在您的文件 'composer.json' 中添加
{ "require": { "lavela/phpjasper": "^3.0" } }
然后只需运行
composer install
就这样。
示例
《Hello World》示例。
转到仓库根目录中的示例目录(vendor/lavela/phpjasper/examples
)。使用 Jaspersoft Studio 或您喜欢的文本编辑器打开 hello_world.jrxml
文件,并查看源代码。
编译
首先,我们需要将我们的 JRXML
文件编译成一个 JASPER
二进制文件。我们只需要做一次。
注意 1:如果您使用的是 Jaspersoft Studio,则不需要执行此步骤。您可以直接在程序中进行编译。
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = __DIR__ . '/vendor/lavela/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/lavela/phpjasper/examples/hello_world.jasper'; $output = __DIR__ . '/vendor/lavela/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/lavela/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/lavela/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();
MySQL
我们在 /src/JasperStarter/jdbc/
目录中提供了 MySQL 连接器(v5.1.39)。
PostgreSQL
我们在 /src/JasperStarter/jdbc/
目录中提供了 PostgreSQL(v9.4-1203)。
MSSQL
SQL Server 的 Microsoft JDBC 驱动程序 6.0、4.2、4.1 和 4.0.
性能
取决于复杂性、数据量以及您的机器资源(告诉我您的用例)。
我有一个生成带有数据库连接、图像和多个页面的 发票 报告,它大约需要 3/4 秒 来处理。我建议您使用工作器在后台生成报告。
谢谢
Cenote GmbH 提供了 JasperStarter 工具。
JetBrains 提供了 PhpStorm 和所有优秀工具。
有问题吗?
打开一个新的 问题 或查找已关闭的问题
许可证
MIT
贡献
为 PHP 社区做出贡献,进行分支!