copam/ phpjasper7
PHP报表生成器
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6.1
This package is not auto-updated.
Last update: 2024-09-21 19:30:12 UTC
README
关于这个库
PHPJasper是使用PHP编译和处理Jasper (.jrxml & .jasper) 报表的完美解决方案,也就是说,用PHP生成报表。
注意
- 适用于PHP 7.0及更高版本
- PHPJasper可以独立于您的框架使用
- 请确保为以下目录中的文件提供适当的权限 vendor/copam/phpjasper7/src/JasperStarter/bin/
为什么需要PHPJasper?
您是否曾需要为您的Web系统生成简单的或复杂的PHP报表?
我需要过,我寻找了一些解决方案,大多数都相当复杂,您需要编写HTML + CSS来生成PDF,这没有意义,而且非常耗时 :)
现在向您介绍最好的开源报表解决方案——JasperReports。
我能用它做什么?
以下内容摘自JasperSoft网站
JasperReports是最受欢迎的开源报表生成机制。它完全用Java编写,能够使用任何类型的数据源的数据,并能够生成完美的文档,这些文档可以在多种文档格式中查看、打印或导出,包括HTML、PDF、Excel、OpenOffice和Word。
您可以做到的事情的示例
- 发票
- 报告
- 列表
要求
- PHP 7.0及更高版本
- Java JDK 1.8
可选
- Mysql JDBC驱动(如果您打算使用此类数据库)
- PostgreSQL JDBC驱动(如果您打算使用此类数据库)
- Microsoft JDBC驱动(如果您打算使用此类数据库)
- Jaspersoft Studio(用于编写和编译您的报表)
安装Java(JDK)
检查是否已安装JDK
$ 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
并查看是否一切顺利。
安装PHPJasper库
安装Composer并运行以下命令
composer require copam/phpjasper7
或者创建一个'composer.json'文件并添加以下内容
{ "require": { "copam/phpjasper7": "^1.0" } }
然后执行以下命令
composer install
这样,您就安装了库,并准备好使用它。
示例
Hello World PHPJasper。
请访问存储库根目录中的示例目录(vendor/copam/phpjasper7/exemplos
)。使用JasperStudio或您喜欢的编辑器打开hello_world.jrxml
文件,查看代码。
编译
首先,我们需要将具有扩展名.JRXML
的文件编译成二进制类型的.JASPER
文件。
注意1:如果您不想使用Jaspersoft Studio,您可以通过以下方式编译您的.jrxml文件
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = __DIR__ . 'vendor/copam/phpjasper7/exemplos/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/copam/phpjasper7/exemplos/hello_world.jasper'; $output = __DIR__ . '/vendor/copam/phpjasper7/exemplos'; $options = [ 'format' => ['pdf', 'rtf'] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
现在查看 /exemplos 文件夹 :) 做得不错?你有 2 个文件,hello_world.pdf
和 hello_world.rtf
。
列出参数
如何查询 jrxml 文件以检查报告中可用的参数
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = __DIR__ . 'vendor/copam/phpjasper7/exemplos/hello_world_params.jrxml'; $jasper = new PHPJasper; $output = $jasper->listParameters($input)->execute(); foreach($output as $parameter_description) print $parameter_description . '<pre>';
数据库报告
添加连接到您数据库的特定参数:MYSQL、POSTGRES 或 MSSQL
require __DIR__ . '/vendor/autoload.php'; use PHPJasper\PHPJasper; $input = '/your_input_path/your_report.jasper'; $output = '/your_output_path'; $options = [ 'format' => ['pdf'], 'locale' => 'pt_BR', 'params' => [], 'db_connection' => [ 'driver' => 'postgres', 'username' => 'DB_USERNAME', 'password' => 'DB_PASSWORD', 'host' => 'DB_HOST', 'database' => 'DB_DATABASE', 'port' => '5432' ] ]; $jasper = new PHPJasper; $jasper->process( $input, $output, $options )->execute();
注 2
查看支持的完整语言列表,请参阅链接 Supported Locales
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/copam/phpjasper7/exemplos/bin/jaspertarter/jdbc'; $options = [ 'format' => ['pdf'], 'locale' => 'pt_BR', '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' => 'pt_BR', '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' => 'pt_BR', '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 connector (v5.1.39)。
PostgreSQL
我们还包含了 PostgreSQL (v9.4-1203) 在 /src/JasperStarter/jdbc/
文件夹中。
MSSQL
Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server.
性能
取决于您报告的复杂性。
感谢
Cenote GmbH 提供了 JasperStarter 工具。
JetBrains 提供了 PhpStorm 并给予了大力支持。
疑问?
打开一个 问题 或搜索旧问题
许可证
MIT
贡献
为 PHP 社区做出贡献,创建一个 fork!!