Relatórios do iReport no PHP com PHPJasperXML

Publicado por Ronaldo Meneguite em 12/02/2010

[ Hits: 32.564 ]

Blog: http://www.rlmti.com

 


Relatórios do iReport no PHP com PHPJasperXML



Já a algum tempo venho buscando uma solução geradora de relatórios em PHP e descobri ser essa uma das áreas mais carentes no mesmo, não que não haja soluções para isso.. porém são poucas, e até hoje não havia encontrado nenhuma a qual suprira minhas necessidades ... além de possuírem produtividade muito baixa se comparada a outras ferramentas para desenvolvimento de relatórios para Java por exemplo com o iReport.

A intenção de usar de ferramentas já consagradas como o iReport, com inúmeras ferramentas e funcionalidades, além de possuir uma comunidade muito ativa no seu desenvolvimento, particularmente me agrada muito. Porém a única maneira de fazermos era se utilizando do PHP/Java Bridge.

Hoje através do amigo Marcus Vinícius, conheci uma classe de nome PHPJasperXML, desenvolvida em PHP, que possui a capacidade de criar uma "interface" entre o PHP e os relatórios jrxml (formato do iReport/JasperReport), na verdade essa classe junto com a classe FPDF transforma o arquivo jrxml e uma saída pdf.

Principais vantagens do uso dessa classe:
  • Desenvolver todo o relatório na ferramenta iReport, que propicia ótima produtividade com muita flexibilidade;
  • Rodar nativamente em PHP, sem a integração com o JAVA;
  • Facilidade de integrar a um projeto em andamento;
  • Possibilidade de enviar qualquer parâmetro facilmente, quer com GET ou POST;
  • Essa classe possui código aberto o que propicia a facilidade de você mesmo melhorá-la como quiser.

Faça o download do código do projeto em:
Para visualizar um exemplo de relatório gerado com o PHPJasperXML:
Para poder visualizar o exemplo siga os seguintes procedimentos:

1. Baixe e extraia o arquivo os arquivos do projeto no diretório root do seu site (é assumido /var/www/PHPJasperXML)

2. Importe sampledb.sql para seu mysql database, neste projeto é assumido: username=root, password=mysql, database = phpjasperxml. Se você usa algo diferente disso devera mudar a configuração no arquivo setting.php localizado na raiz do projeto.

3. Com seu browser acesse http://localhost/PHPJasperXML/index.php e teste os relatórios desenvolvidos como exemplo.

4. Fim.

Caso ainda tenha dúvidas, pode saná-las assistindo os tutoriais disponibilizados pelo próprio desenvolvedor aos quais relaciono abaixo (áudio em inglês):
Inicialmente o projeto aborda somente a integração com o MySQL, porém integrar como outros bancos como o PostgreSQL não é uma tarefa muito complicada. Para quem tem interesse de utilizar essa classe com o PostgreSQL, meu amigo Marcus Vinícius disponibilizou os métodos já alterados para conexão com esse servidor, para baixar a classe acesse:
Site do desenvolvedor: http://www.simit.com.my/?q=phpjasperxml

Wiki: http://www.simit.com.my/wiki/index.php/PHPJasperXML

Fórum: http://www.extraknowledge.org/forum/viewforum.php?f=23

Um artigo muito interessante com uma aplicação prática foi publicada recentemente pelo Marcus Vinícius no site Imasters, disponível em:
Certamente uma boa leitura!

Este post foi publicado inicialmente em meu site: http://www.rlmti.com

Outras dicas deste autor

Pipes no Linux

Leitura recomendada

Tunelamento usando SSH

Configurando modem Lucent v90 no Ubuntu 7.04

Instalação e Configurando Apache2 PostgreSQL e phpPgAdmin no Debian Lenny

Som do Android-x86 para notebook Dell Inspiron 1525

Ubuntu salva "computalixos"

  

Comentários
[1] Comentário enviado por lucianocidao em 22/07/2010 - 17:15h

Olá, muito bom o tópico, mas tenho uma duvida, gostaria de saber quem é o verdadeiro responsavel por gerar de fato o relatorio, o PHP ou o Jasper? pois gosria de tirar este peso de gerar o relatorio dentro do PHP.

Agradeço e Aguardo uma resposta!

Luciano Barros Montebeller

[2] Comentário enviado por dastyler em 15/02/2011 - 14:28h

Bom para gerar PDF´s de dados.

[]´s


[3] Comentário enviado por wgmadeira em 13/04/2011 - 13:55h

Desenvolvi um relatório no iReport com duas páginas que são exibidas corretamente, mas ao passar os dados para PHPJasperXML o relatório é exibido em uma única página com os campos um por cima uns dos outros, porem no iReport é exibido corretamente em duas páginas. Alguém sabe como resolver este problema?

[4] Comentário enviado por wgmadeira em 19/04/2011 - 15:50h

É o seguinte, quem utiliza o PHPJasperXML como ponte para gerar relatórios em PDF vão se deparar com um problema que não tem solução até a presente data, que é a exibição de um relatório com mais de uma página, pois simplesmente ele não dá suporte a isto.

¬¬

Veja a resposta do desenvolvedor sobre este problema.

http://www.extraknowledge.org/forum/viewtopic.php?t=883

[5] Comentário enviado por carlosmarian em 12/07/2014 - 19:20h

Olá.
Alguém conseguiu usar esta biblioteca em um projeto?

At+

[6] Comentário enviado por nettoac em 01/08/2014 - 12:43h

Mt bom o artigo, agora estou com duvida em como ao inves de gerar em pdf, eu gerasse esse msm relatorio em excel *.xls com as opcoes de exibir e download, grato

[7] Comentário enviado por lucas3671 em 10/12/2015 - 09:13h

Pessoal bom dia,
Sempre desenvolvo relatórios no Ireports, até agora utilizo o Jasperserver para exibir os relatórios.
Porem, surgiu a necessidade de utilizar o PHP, não tive problemas em gerar os relatórios utilizando MYSQL, no entanto estou tendo grandes dores de cabeça ao utilizar SQLSERVER.
Alguem utiliza PHP + JASPER + SQLSERVER ?
Seria de grande ajude se pudessem enviar alguns exemplos.

Att.

[8] Comentário enviado por CloudStrifer em 29/03/2017 - 16:49h

Olá, não sei se a classe esta obsoleta ou se existe outra melhor,  mas mesmo assim adicionei o suporte para MS SQL Server, o PHPJasperXml não é perfeito, mas funciona razoavelmente bem. 

A classe do MS SQL usada foi a SQLSRV, caso haja duvida sobre o funcionamento pesquise.

Versão 0.9d, corrigi a identação do codigo e algumas melhorias na formatação de valores.

Deixo aqui o link para download https://mega.nz/#!NNxhRbQR!nRhxPvAuraXVeHZ_Z1-jgphu3PvIGBhRAHvMPXwXxXw

Próximo a linha 5404, o while para ajustar ao tamanho pode causar um bug para tipos data, para contornar isso no iReport utilize sempre 'Print When Detail Overflows = checked'.

Ajustei somente o sample1.php, fiz dois relatórios simples e funcionou, mas tem algumas limitações e caso você faça uso de alguma função do iReport que não funcione simplesmente a tela fica branca ou aparece que não conseguiu retornar dados do database,  para mostrar o erro real você deve comentar uma linha //error_reporting(E_ALL);..

Se alguém fizer alguma modificação boa eu gostaria de saber.

Obrigado!



Contribuir com comentário