jheferson-br/phpjasper

一个简单易实现的PHP报告生成器

4.0.6 2022-06-06 11:27 UTC

This package is auto-updated.

Last update: 2024-09-18 15:01:12 UTC


README

一个简单易实现的PHP报告生成器

关于

PHPJasper 是使用 PHP 编译和处理 JasperReports (.jrxml & .jasper 文件) 的最佳解决方案,简而言之:使用 PHP 生成报告。

安装

如果您还没有,请安装 Composer

composer require jheferson-br/phpjasper

或者,在您的文件 'composer.json' 中添加

{
    "require": {
        "jheferson-br/phpjasper": "^3.2.7"
    }
}

然后只需运行

composer install

就完成了。

示例

编译

首先,我们需要将我们的 JRXML 文件编译成一个 JASPER 二进制文件。我们只需做一次。

注意 1:如果您使用的是 Jaspersoft Studio,则无需此步骤。您可以直接在程序内进行编译。

require __DIR__ . '/vendor/autoload.php';

$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';

$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.pdfhello_world.rtf

src/JasperPHP.php 中查看 methods compileprocess 以获取更多详细信息

列出参数

查询 Jasper 文件以检查给定 Jasper 报告文件中可用的参数

require __DIR__ . '/vendor/autoload.php';


$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';
 

$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';


$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';


$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';


$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();