Permalink
Fetching contributors…
Cannot retrieve contributors at this time
324 lines (220 sloc) 9.07 KB

PHPJasper

Gerador de relatórios PHP

Scrutinizer Code Quality Latest Stable Version Minimum PHP Version Total Downloads License

Documentação

Language-en_US

Sobre a biblioteca

PHPJasper é a solução perfeita para compilar e processar relatórios Jasper (.jrxml & .jasper) com PHP, ou seja, gerar relatórios com PHP.

Notas:

  • PHPJasper pode ser usado independente de seu Framework
  • Se você está usando uma versão menor que PHP 7.0 veja: v1.16
  • Aqui tem vários exemplos de como usar PHPJasper

Por quê preciso do PHPJasper?

Alguma vez você precisou de um relatório simples ou complexo em PHP para seu sistema web?

Eu já precisei e fui em busca de algumas soluções, a maioria delas é complexa e você precisa escrever HTML + CSS para gerar um PDF, isso não faz sentido, além de ser muito trabalhoso :)

Apresento para vocês JasperReports a melhor solução open source que existe para relatórios.

O que eu posso fazer com isso?

Texto extraido do site JasperSoft:

A biblioteca JasperReports é o mecanismo de geração de relatórios de código aberto mais popular do mundo. É inteiramente escrito em Java e é capaz de usar dados provenientes de qualquer tipo de fonte de dados e gerar documentos perfeitos que podem ser visualizado, impresso ou exportado em uma variedade de formatos de documentos, incluindo HTML, PDF, Excel, OpenOffice e Word .

Exemplos do que você pode fazer:

  • Faturas
  • Relatórios
  • Listas

Requisitos

  • PHP 7.0 em diante
  • Java JDK 1.8

Opcional

Instalando a biblioteca PHPJasper

Instale o Composer, e rode o comando:

composer require geekcom/phpjasper

Ou crie um arquivo 'composer.json' e adicione o trecho:

{
    "require": {
        "geekcom/phpjasper": "^2.7"
    }
}

E execute o comando:

composer install

é isso, você tem a biblioteca instalada e pronta para uso.


Exemplos

Hello World PHPJasper.

Vá para o diretório de exemplos na raiz do repositório (vendor/geekcom/phpjasper/examples). Abra o arquivo hello_world.jrxml com o JasperStudio ou seu editor favorito e dê uma olhada no código.

Compilando

Primeiro precisamos compilar o arquivo com a extensão .JRXML em um arquivo binário do tipo .JASPER

Nota 1: Caso você não queira usar o Jaspersoft Studio. É possivel compilar o seu arquivo .jrxml da seguinte forma:


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

use PHPJasper\PHPJasper;

$input = __DIR__ . '/vendor/geekcom/phpjasper/examples/hello_world.jrxml';   

$jasper = new PHPJasper;
$jasper->compile($input)->execute();

Esse comando compila o arquivo fonte hello_world.jrxml em um arquivo binário hello_world.jasper.

Processando

Agora vamos processar o nosso relatório que foi compilado acima:

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

Agora olhe a pasta /examples :) Ótimo trabalho? Você tem 2 arquivos, hello_world.pdf e hello_world.rtf.

Listando parâmetros

Como consultar o arquivo jrxml para examinar os parâmetros disponíveis no relatório:


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

Relatórios a partir de um banco de dados

Adicione os parâmetros específicos para conexão com seu banco de dados: MYSQL, POSTGRES ou 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();

Nota 2:

Para a lista completa de idiomas suportados veja o link Supported Locales

Relatórios com banco de dados 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' => '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();

Relatórios a partir de um arquivo 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();

Relatórios a partir de um arquivo 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

Incluímos o MySQL connector (v5.1.39) na pasta /src/JasperStarter/jdbc/

PostgreSQL

Incluímos também o PostgreSQL (v9.4-1203) na pasta /src/JasperStarter/jdbc/

MSSQL

Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server .

Performance

Depende da complexidade do seu relatório.

Agradecimentos

Cenote GmbH pelo JasperStarter tool.

JetBrains pelo PhpStorm e seu grande apoio.

Dúvidas?

Abra uma Issue ou procure por Issues antigas

Licença

MIT

Contribuição

Contribua com a comunidade PHP, faça um fork !!