copam / phpjasper7
Gerador de relatórios PHP
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6.1
This package is not auto-updated.
Last update: 2024-11-16 20:08:56 UTC
README
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:
- Versão para o PHP 7.0 em diante
- PHPJasper pode ser usado independente de seu Framework
- Forneça as permissões devidas aos arquivos dentro da pasta vendor/copam/phpjasper7/src/JasperStarter/bin/
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, impressom ou exportadom 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
- 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)
Instalando o Java(JDK)
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.
Instalando a biblioteca PHPJasper
Instale o Composer, e rode o comando:
composer require copam/phpjasper7
Ou crie um arquivo 'composer.json' e adicione o trecho:
{ "require": { "copam/phpjasper7": "^1.0" } }
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/copam/phpjasper7/exemplos
).
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/copam/phpjasper7/exemplos/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/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();
Agora olhe a pasta /exemplos :) Ó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/copam/phpjasper7/exemplos/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/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();
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 !!