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.
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:
[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.
[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.
[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.
[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.