2017 © Pedro Peláez
 

library phpjasper

Create Reports in PHP/Laravel with JasperReports

image

i4n/phpjasper

Create Reports in PHP/Laravel with JasperReports

  • Wednesday, January 10, 2018
  • by viniciusdiazevedo
  • Repository
  • 0 Watchers
  • 0 Stars
  • 24 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 3 Versions
  • 9 % Grown

The README.md

PHPJasper

License Total Downloads, (*1)

Nota para servidores Linux, (*2)

Não esqueça de fornecer permissão 777 para o diretório /vendor/i4n/phpjasper/src/JasperStarter/bin e o arquivo binário jasperstarter, (*3)

Resolver problemas com fontes Windows apt-get install ttf-mscorefonts-installer, (*4)

Introdução

Este pacote é a solução perfeita para compilar e processar relatórios Jasper (.jrxml & .jasper) com PHP puro ou através do Laravel Framework., (*5)

Por quê preciso do PHPJasper?

Alguma vez você precisou de um relatório complexo em PHP para seu sistema web?, (*6)

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 :), (*7)

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

O que eu posso fazer com isso?

Texto tirado do site JasperSoft:, (*9)

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 ., (*10)

Exemplos do que você pode fazer:, (*11)

  • Faturas
  • Relatórios
  • Listas

Requisitos

Notas sobre o Java

Verifique se o Java está instalado executando o comando:, (*12)

$ java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

Se você obter esse retorno:, (*13)

command not found: java

Instale o java no: (Ubuntu/Debian), (*14)

$ sudo apt-get install default-jdk

Para instalar no: (centOS/Fedora), (*15)

# yum install java-1.8.0-openjdk.x86_64

Para o windows siga o link-> JDK e procure a versão mais apropriada para seu Sistema Operacional., (*16)

Execute o novamente o comando java -version e verifique se a saída está ok., (*17)

Instalação

  1. Instale o Composer se você ainda não possui e então rode o comando:
composer require i4n/phpjasper

Crie um arquivo 'composer.json' e escreva o seguinte código:, (*18)

{
    "require": {
        "i4n/phpjasper": "1.*"
    }
}

Rode o comando:, (*19)

composer install

Você acaba de instalar PHPJasper, (*20)

Exemplos

O exemplo Hello World.

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

Compilando

Primeiro precisamos compilar o arquivo com a extensão .JRXML em um arquivo binário do tipo .JASPER, (*22)

Nota: Caso você não queira usar Jaspersoft Studio. É possivel compilar o seu arquivo .jrxml da seguinte forma:, (*23)


require __DIR__ . '/vendor/autoload.php'; use JasperPHP\JasperPHP; $input = __DIR__ . '/vendor/i4n/phpjasper/examples/hello_world.jrxml'; $jasper = new JasperPHP; $jasper->compile($input)->execute();

Esta comando compila o arquivo fonte hello_world.jrxml em um arquivo hello_world.jasper, (*24)

Processing

Agora vamos processar o nosso relatório:, (*25)


require __DIR__ . '/vendor/autoload.php'; use JasperPHP\JasperPHP; $input = __DIR__ . '/vendor/i4n/phpjasper/examples/hello_world.jasper'; $output = __DIR__ . '/vendor/i4n/phpjasper/examples'; $jasper = new JasperPHP; $jasper->process( $input, $output, array("pdf", "rtf") )->execute();

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

Check the API of the compile and process functions in the file src/JasperPHP/JasperPHP.php file., (*27)

Listando parâmetros

Consultando o arquivo jasper para examinar os parâmetros disponíveis no relatório:, (*28)


require __DIR__ . '/vendor/autoload.php'; use JasperPHP\JasperPHP; $input = __DIR__ . '/vendor/i4n/phpjasper/examples/hello_world_params.jrxml'; $jasper = new JasperPHP; $output = $jasper->list_parameters($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 seu banco de dados, (*29)


require __DIR__ . '/vendor/autoload.php'; use JasperPHP\JasperPHP; $input = __DIR__ . '/vendor/i4n/phpjasper/examples/hello_world.jrxml'; $output = __DIR__ . '/vendor/i4n/phpjasper/examples'; $jasper = new JasperPHP; $jasper->process( $input, $output, array("pdf", "rtf"), array("php_version" => phpversion()), array( 'driver' => 'postgres', 'username' => 'vagrant', 'host' => 'localhost', 'database' => 'samples', 'port' => '5432', ), 'pt_BR' //locale )->execute();

Usando JasperPHP com Laravel 5.*

  1. Instale o Composer
composer require i4n/phpjasper

Crie um arquivo 'composer.json':, (*30)

{
    "require": {
        "i4n/phpjasper": "1.*"
    }
}
  1. Rode:, (*31)

    composer update, (*32)

  2. Adicione o provider ao array providers em config/app.php:, (*33)

    JasperPHP\JasperPHPServiceProvider::class,, (*34)

  3. Crie a pasta /report em /public directory, (*35)

  4. Copie o arquivo hello_world.jrxml em /vendor/i4n/phpjasper/examples para a pasta: /public/report, (*36)

  5. Rode php artisan serve, (*37)

  6. Acesse localhost:8000/reports, (*38)

  7. Verifique a pasta /public/report. Você tem 3 arquivos, hello_world.pdf, hello_world.rtf e hello_world.xml., (*39)

Copie o código abaixo para seu arquivo route.php, (*40)

use JasperPHP\JasperPHP;

Route::get('/reports', function () {

    $output = public_path() . '/report/'.time().'_hello_world';
    $report = new JasperPHP;
    $report->process(
        public_path() . '/report/hello_world.jrxml', 
        $output, 
        array('pdf', 'rtf', 'xml'),
        array(),
        array(),
        'pt_BR' //locale  
        )->execute();
});

Neste exemplo nós geramos 3 arquivos: pdf, rtf and xml., (*41)

Relatórios a partir de um xml em PHP/Laravel 5.*

Veja como é fácil gerar um relatório com uma origem de um arquivo XML, (*42)


use JasperPHP\JasperPHP; public function xmlToPdf() { $output = public_path() . '/report/'.time().'_CancelAck'; $ext = "pdf"; $data_file = public_path() . '/report/CancelAck.xml'; $driver = 'xml'; $xml_xpath = '/CancelResponse/CancelResult/ID'; $php_jasper = new JasperPHP; $php_jasper->process( public_path() . '/report/CancelAck.jrxml', $output, array($ext), array(), array('data_file' => $data_file, 'driver' => $driver, 'xml_xpath' => $xml_xpath))->execute(); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.time().'_CancelAck.'.$ext); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Length: ' . filesize($output.'.'.$ext)); flush(); readfile($output.'.'.$ext); unlink($output.'.'.$ext); }

Nota:, (*43)

Para usar os exemplos acima você precisa de uma cópia dos arquivos localizados em:, (*44)

\vendor\i4n\phpjasper\examples\CancelAck.jrxml e \vendor\i4n\phpjasper\examples\CancelAck.xml para a pasta: \public\report, (*45)

Relatórios a partir de um arquivo JSON em PHP/Laravel 5.*

Veja como é fácil gerar um relatório com uma fonte de um arquivo JSON:, (*46)


use JasperPHP\JasperPHP; public function jsonToPdf() { $output = public_path() . '/report/'.time().'_Contacts'; $ext = "pdf"; $driver = 'json'; $json_query= "contacts.person"; $data_file = public_path() . '/report/contacts.json'; $php_jasper = new JasperPHP; $php_jasper->process( public_path() . '/report/json.jrxml', $output, array($ext), array(), array('data_file' => $data_file, 'driver' => $driver, 'json_query' => $json_query))->execute(); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.time().'_Contacts.'.$ext); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Length: ' . filesize($output.'.'.$ext)); flush(); readfile($output.'.'.$ext); unlink($output.'.'.$ext); }

Nota:, (*47)

Para usar os exemplos acima você precisa de uma cópia dos arquivos localizados em:, (*48)

\vendor\i4n\phpjasper\examples\json.jrxml e \vendor\i4n\phpjasper\examples\contacts.json para a pasta: \public\report, (*49)

MySQL

Nós incluimos MySQL connector (v5.1.39) na pasta /src/JasperStarter/jdbc/, (*50)

PostgreSQL

Nós incluimos PostgreSQL (v9.4-1203) na pasta/src/JasperStarter/jdbc/, (*51)

MSSQL

Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server ., (*52)

Performance

Varia de acordo com o tamanho do seu relatório, (*53)

Agradecimentos

A Cenote GmbH por JasperStarter., (*54)

A JetBrains pelo PhpStorm e todas as ótimas soluções., (*55)

Dúvidas?

Abra uma Issue, ou pesquise por Issues antigas., (*56)

Licença

MIT, (*57)

Contribuição

Contribua com a comunidade PHP e Laravel, fique a vontade para fazer um fork!!!, (*58)

The Versions

10/01 2018

dev-master

9999999-dev https://github.com/i4nGit/phpjasper

Create Reports in PHP/Laravel with JasperReports

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

php json xml pdf reports java jasper jasperreports

10/01 2018

2.20

2.20.0.0 https://github.com/i4nGit/phpjasper

Create Reports in PHP/Laravel with JasperReports

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

php json xml pdf reports java jasper jasperreports

02/01 2018

2.0.0

2.0.0.0 https://github.com/i4nGit/phpjasper

Create Reports in PHP/Laravel with JasperReports

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

php json xml pdf reports java jasper jasperreports