Usando o i report como gerador de relatórios para php

7,049 views

Published on

Usando o iReport como gerador de relatórios para PHP

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,049
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
128
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Usando o i report como gerador de relatórios para php

  1. 1. Usando o iReport como gerador de relatórios para PHPVeremos hoje uma solução para utilizar um gerador de relatórios para a linguagemPHP. Consiste no uso do trabalho em conjunto de relatórios JasperReports e opacote PHPJasperXML.O que me motivou a buscar esta solução foi a procura por um gerador de relatóriospara PHP, na grande maioria das vezes com insucesso.A linguagem PHP é extremamente flexível e muitos desenvolvedores que autilizam, quando necessitam desenvolver relatórios, fazem seu próprio código,desenvolvendo suas próprias quebras de linha etc. Só que o uso de softwaresgeradores de relatórios, os chamados reportsgenerators, trazem inúmerasvantagens ao desenvolvedor. Além de ser mais profissional o uso destessoftwares, pois poupa tempo de desenvolvimento por serem muito mais fáceis deconfeccionar do que se elaborar um código para esta finalidade, é também útilquando se necessita de suporte, pois diversos usuários do mundo inteiro utilizamdesses softwares.iReportO iReport é um desenhador de layouts para JasperReports. É muito utilizado pordesenvolvedores da linguagem Java, sendo uma alternativa livre ao excelenteCrystal 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 é ofoco 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 asnecessidades na confecção de um relatório. Traz diversas opções como uso decódigo de barras, sub-relatórios e etc. O iReport permite que os relatórios sejamgerados em XML, PDF, HTML, DOCX, ODT, dentre outros formatos.Ao inserir as informações de conexão com o banco de dados (o iReport trazdiversas opções como JDBC, Conexão com Hibernate, XML e etc), processo quepode ser visto aqui, é gerado um arquivo de extensão jrxml. Ao ser compilado, umarquivo de extensão jasper também é gerado (arquivo executável do relatório). Fazanalogia à linguagem Java, que tem o código residente nos arquivos de extensãoJAVA (no caso do iReport, extensão jrxml). Depois de compilados são geradosarquivos de extensão CLASS (no iReport, jasper).PHPJasperXMLO 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çãoalternativa ao PHP/Java Bridge.Na página do projeto é possível fazer o download do código. Além de contertutoriais.Para seu uso é necessário basicamente editar o arquivo setting.php, que contémas 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
  2. 2. MySQL), ler o conteúdo arquivo jrxml e junto com a classe FPDF, gerar o relatórioem PDF.Exemplo de utilizaçãoIrei exemplificar o uso do iReport com a classe PHPJasperXML.Para nosso exemplo é necessário ter o SGBD MySQL instalado. Crie o banco dedados com os seguintes comandos:CREATEDATABASEProjetoPHP;USEProjetoPHP;CREATETABLEusuarios (id INT(11) NOTNULLAUTO_INCREMENT, nomeVARCHAR(50),PRIMARYKEY (id));INSERTINTOusuarios (nome) VALUES (PHP), (MySQL),(JasperReports), (PHPJasperXML);Após criar nosso banco de dados, chamado ProjetoPHP, é o momento de elaboraro relatório. Para nosso exemplo, o relatório será chamado de phpjasperxml.jrxml. Aconexão com o banco de dados que criamos deverá ser feita no iReport (esseprocesso é exemplificado em um link no texto introdutório do iReport, acima). Apóscriada a conexão, vamos inserir a seguinte query no Report Query do relatório(para ver como inserir queries no iReport, confiraaqui):SELECT* FROMusuarios;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 oarquivo setting.php para a pasta de seu projeto.A figura abaixo mostra a elaboração deste relatório no iReport:
  3. 3. 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 eseu conteúdo é descrito abaixo:<?phpinclude_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 = newPHPJasperXML();$PHPJasperXML->debugsql=false;
  4. 4. $descricao=$_GET["descricao"]; //recebendo o parâmetro descrição$PHPJasperXML->arrayParameter=array("descricao"=>$descricao); //passao 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 edigitarhttp://localhost/relatorioPHP/exemplo.php?descricao=HelloWordSe tudo ocorrer como o esperado, será exibido o relatório em PDF, de acordo coma figura 2:Figura 2: Relatório geradoO parâmetro é passado pelo método GET e tratado no nosso arquivoexemplo.php. Como este parâmetro já é esperado pelo relatório, definido em suacriação, é repassado pela classe PHPJasperXML ao nosso relatório.Uma observação é que no momento da elaboração do iReport, não se devecolocar nenhum objeto (Fields, parâmetros, Labels e etc) nas bandas Title eColumn Header do relatório. Isso porque a classe PHPJasperXML não trata essasbandas 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 classePHPJasperXML, que é o nosso caso. Nos relatórios gerados pelo iReport (e não
  5. 5. pela classe PHPJapserXML), os elementos contidos nestas bandas são exibidosnormalmente.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 amigoRonaldo Meneguite disponibilizou em seu site, em artigo publicado também porele, a classe modificada, que pode ser vista aqui.*Gostaria de agradecer à colega de trabalho, Jéssica Boalente Carvalho, pela ajudana procura desta solução e na utilização da mesma. Ao amigo Ronaldo LouroMeneguite, por postar em seu site a classe PHPJasperXML que modifiquei aosmoldes 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/

×