copam/phpjasper7

PHP报表生成器

v1.3 2019-11-22 20:39 UTC

This package is not auto-updated.

Last update: 2024-09-21 19:30:12 UTC


README

Scrutinizer Code Quality Latest Stable Version Minimum PHP Version License

关于这个库

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

可选

安装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.pdfhello_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!!