usando o ireport como gerador de relatrios para php

6
Usando o iReport como gerador de relatórios para PHP Veremos hoje uma solução para utilizar um gerador de relatórios para a linguagem PHP. Consiste no uso do trabalho em conjunto de relatórios JasperReports e o pacote PHPJasperXML. O que me motivou a buscar esta solução foi a procura por um gerador de relatórios para PHP, na grande maioria das vezes com insucesso. A linguagem PHP é extremamente flexível e muitos desenvolvedores que a utilizam, quando necessitam desenvolver relatórios, fazem seu próprio código, desenvolvendo suas próprias quebras de linha etc. Só que o uso de softwares geradores de relatórios, os chamados reports generators, trazem inúmeras vantagens ao desenvolvedor. Além de ser mais profissional o uso destes softwares, pois poupa tempo de desenvolvimento por serem muito mais fáceis de confeccionar do que se elaborar um código para esta finalidade, é também útil quando se necessita de suporte, pois diversos usuários do mundo inteiro utilizam desses softwares. iReport O iReport é um desenhador de layouts para JasperReports. É muito utilizado por desenvolvedores da linguagem Java, sendo uma alternativa livre ao excelente Crystal Reports. Neste link o download pode ser feito, além de conter tutoriais. É necessário ter a suíte JDK já instalada para fazer a instalação do iReport. Não é o foco do artigo a explicação de como utilizar o iReport. Além de ser muito intuitivo e de fácil uso, é útil em praticamente todas as necessidades na confecção de um relatório. Traz diversas opções como uso de código de barras, sub-relatórios e etc. O iReport permite que os relatórios sejam gerados em XML, PDF, HTML, DOCX, ODT, dentre outros formatos. Ao inserir as informações de conexão com o banco de dados (o iReport traz diversas opções como JDBC, Conexão com Hibernate, XML e etc), processo que pode ser visto aqui , é gerado um arquivo de extensão jrxml. Ao ser compilado, um arquivo de extensão jasper também é gerado (arquivo executável do relatório). Faz analogia à linguagem Java, que

Upload: strategistbr

Post on 23-Oct-2015

142 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Usando o Ireport Como Gerador de Relatrios Para Php

Usando o iReport como gerador de relatórios para PHP

Veremos hoje uma solução para utilizar um gerador de relatórios para a linguagem PHP. Consiste no uso do trabalho em conjunto de relatórios JasperReports e o pacote PHPJasperXML.

O que me motivou a buscar esta solução foi a procura por um gerador de relatórios para PHP, na grande maioria das vezes com insucesso.

A linguagem PHP é extremamente flexível e muitos desenvolvedores que a utilizam, quando necessitam desenvolver relatórios, fazem seu próprio código, desenvolvendo suas próprias quebras de linha etc. Só que o uso de softwares geradores de relatórios, os chamados reports generators, trazem inúmeras vantagens ao desenvolvedor. Além de ser mais profissional o uso destes softwares, pois poupa tempo de desenvolvimento por serem muito mais fáceis de confeccionar do que se elaborar um código para esta finalidade, é também útil quando se necessita de suporte, pois diversos usuários do mundo inteiro utilizam desses softwares.

iReport

O iReport é um desenhador de layouts para JasperReports. É muito utilizado por desenvolvedores da linguagem Java, sendo uma alternativa livre ao excelente Crystal Reports. Neste link o download pode ser feito, além de conter tutoriais. É necessário ter a suíte JDK já instalada para fazer a instalação do iReport. Não é o foco do artigo a explicação de como utilizar o iReport.

Além de ser muito intuitivo e de fácil uso, é útil em praticamente todas as necessidades na confecção de um relatório. Traz diversas opções como uso de código de barras, sub-relatórios e etc. O iReport permite que os relatórios sejam gerados em XML, PDF, HTML, DOCX, ODT, dentre outros formatos.

Ao inserir as informações de conexão com o banco de dados (o iReport traz diversas opções como JDBC, Conexão com Hibernate, XML e etc), processo que pode ser visto aqui, é gerado um arquivo de extensão jrxml. Ao ser compilado, um arquivo de extensão jasper também é gerado (arquivo executável do relatório). Faz analogia à linguagem Java, que tem o código residente nos arquivos de extensão JAVA (no caso do iReport, extensão jrxml). Depois de compilados são gerados arquivos de extensão CLASS (no iReport, jasper).

PHPJasperXML

O PHPJasperXML possibilita a leitura de arquivos jrxml, feitos utilizando o iReport, para transformá-los em relatórios no formato PDF, com o auxílio da classe FPDF. É escrito em PHP e muito fácil de ser configurado. É também uma solução alternativa ao PHP/Java Bridge.Na página do projeto é possível fazer o download do código. Além de conter tutoriais.

Para seu uso é necessário basicamente editar o arquivo setting.php, que contém as variáveis indicativas da conexão com banco de dados.

O arquivo PHPJasperXML.inc contém a classe PHPJasperXML, que faz todo o "trabalho pesado" de conectar com o banco de dados (vem configurada para

Page 2: Usando o Ireport Como Gerador de Relatrios Para Php

MySQL), ler o conteúdo arquivo jrxml e junto com a classe FPDF, gerar o relatório em PDF.

Exemplo de utilização

Irei exemplificar o uso do iReport com a classe PHPJasperXML.

Para nosso exemplo é necessário ter o SGBD MySQL instalado. Crie o banco de dados com os seguintes comandos:

CREATE DATABASE ProjetoPHP;

USE ProjetoPHP;

CREATE TABLE usuarios (

id INT(11) NOT NULL AUTO_INCREMENT, nome VARCHAR(50),

PRIMARY KEY (id)

);

INSERT INTO usuarios (nome) VALUES ('PHP'), ('MySQL'), ('JasperReports'), ('PHPJasperXML');Após criar nosso banco de dados, chamado ProjetoPHP, é o momento de elaborar o relatório. Para nosso exemplo, o relatório será chamado de phpjasperxml.jrxml. A conexão com o banco de dados que criamos deverá ser feita no iReport (esse processo é exemplificado em um link no texto introdutório do iReport, acima). Após criada a conexão, vamos inserir a seguinte query no Report Query do relatório (para ver como inserir queries no iReport, confiraaqui):SELECT* FROM usuarios;

Esta query nos retornará dois fields (id e nome) que deverão estar no relatório.

Finalizando nosso relatório, deverá ser inserido um parâmetro chamado descricao. Para saber como adicionar parâmetros em um relatório com o iReport, confira aqui.

Depois de feito o download do PHPJasperXML, basta extrair a pasta class e o arquivo setting.php para a pasta de seu projeto.

A figura abaixo mostra a elaboração deste relatório no iReport:

Page 3: Usando o Ireport Como Gerador de Relatrios Para Php

Figura 1: Elaboração do relatório no iReport.

Para nosso exemplo, o projeto será chamado relatorioPHP. No arquivo setting.php, você deve informar o caminho para seu banco de dados, como a seguir:

<?php

$server="localhost";

$db="phpjasperxml";

$user="root";

$pass="phpmaster";

$version="0.6d";

?>

A variável $version não precisa ser editada. Você pode criar um arquivo que irá instanciar a classe PHPJasperXML. Vamos chamar este arquivo de exemplo.php e seu conteúdo é descrito abaixo:

<?php

include_once('class/fpdf/FPDF.php');

include_once("class/PHPJasperXML.inc");

include_once ('setting.php');

$xml = simplexml_load_file("phpjasperxml.jrxml"); //informe onde está seu arquivo jrxml

$PHPJasperXML = new PHPJasperXML();

$PHPJasperXML->debugsql=false;

Page 4: Usando o Ireport Como Gerador de Relatrios Para Php

$descricao=$_GET["descricao"]; //recebendo o parâmetro descrição

$PHPJasperXML->arrayParameter=array("descricao"=>$descricao); //passa o parâmetro cadastrado no iReport

$PHPJasperXML->xml_dismantle($xml);

$PHPJasperXML->connect($server,$user,$pass,$db);

$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db);

$PHPJasperXML->outpage("I");

?> Agora vamos testar nossa aplicação. Basta ir ao browser e digitarhttp://localhost/relatorioPHP/exemplo.php?descricao=HelloWord

Se tudo ocorrer como o esperado, será exibido o relatório em PDF, de acordo com a figura 2:

Figura 2: Relatório gerado

O parâmetro é passado pelo método GET e tratado no nosso arquivo exemplo.php. Como este parâmetro já é esperado pelo relatório, definido em sua criação, é repassado pela classe PHPJasperXML ao nosso relatório.

Uma observação é que no momento da elaboração do iReport, não se deve colocar nenhum objeto (Fields, parâmetros, Labels e etc) nas bandas Title e Column Header do relatório. Isso porque a classe PHPJasperXML não trata essas bandas e os objetos contidos nela simplesmente não são exibidos no relatório. Essa observação só vale caso você queira utilizar o iReport com a classe PHPJasperXML, que é o nosso caso. Nos relatórios gerados pelo iReport (e não

Page 5: Usando o Ireport Como Gerador de Relatrios Para Php

pela classe PHPJapserXML), os elementos contidos nestas bandas são exibidos normalmente.

Como foi dito, PHPJasperXML vem configurado para um conexão com MySQL. Para o que precisei foi necessário adaptar esta classe ao PostgreSQL. Meu amigo Ronaldo Meneguite disponibilizou em seu site, em artigo publicado também por ele, a classe modificada, que pode ser vista aqui.

*

Gostaria de agradecer à colega de trabalho, Jéssica Boalente Carvalho, pela ajuda na procura desta solução e na utilização da mesma. Ao amigo Ronaldo Louro Meneguite, por postar em seu site a classe PHPJasperXML que modifiquei aos moldes do PostgreSQL e pela troca de experiências sobre o assunto.

Fonte.: http://imasters.com.br/artigo/15736/php/usando_o_ireport_como_gerador_de_relatorios_para_php/