Gerador de relatórios PHP
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
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.
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
- PHP 7.0 em diante
- Java JDK 1.8
- Mysql JDBC Driver (se você pretende usar esse tipo de banco de dados)
- PostgreSQL JDBC Driver (se você pretende usar esse tipo de banco de dados)
- Microsoft JDBC Drivers (se você pretende usar esse tipo de banco de dados)
- Jaspersoft Studio (para escrever e compilar seus relatórios)
Verifique se o JDK está instalado:
$ javac -version
javac version 1.8.0_101
Se você receber a resposta:
command not found: javac
Então você precisa instalar, para o (Ubuntu/Debian) rode o comando:
$ sudo apt-get install default-jdk
Para instalar no (centOS/Fedora) faça o seguinte:
# yum install java-1.8.0-openjdk.x86_64
Para instalar no Windows visite o link-> JDK e veja qual a versão mais apropriada para o seu Sistema Operacional.
Agora rode novamente o comando javac -version
e veja se deu tudo certo.
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.1"
}
}
E execute o comando:
composer install
é isso, você tem a biblioteca instalada e pronta para uso.
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.
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
.
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
.
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>';
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
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();
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();
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();
Incluímos o MySQL connector (v5.1.39) na pasta /src/JasperStarter/jdbc/
Incluímos também o PostgreSQL (v9.4-1203) na pasta /src/JasperStarter/jdbc/
Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server .
Depende da complexidade do seu relatório.
Cenote GmbH pelo JasperStarter tool.
JetBrains pelo PhpStorm e seu grande apoio.
Abra uma Issue ou procure por Issues antigas
MIT
Contribua com a comunidade PHP, faça um fork !!