Relatórios do iReport no PHP com PHPJasperXML

Publicado por Ronaldo Meneguite em 12/02/2010

[ Hits: 34.445 ]

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

Squid caindo devido ao erro "WARNING! Your cache is running out of filedescriptors"

Configurando Speedy no Slackware 12.2 corretamente

Curso de Linux

BIOS sem opção de boot pelo CD-ROM

Instalando Linux em notebook Intelbras e outros

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts