Relatórios PDF com PHP (CodeIgniter), Jasper Reports e Oracle (ou MySql ou PostgreSql) .
1. Introdução
Quem utiliza PHP sabe que a geração de relatórios nessa linguagem não é uma tarefa trivial.
Pouco tempo atrás, tive a necessidade de implementar uma solução para a geração de alguns relatórios, os quais eram bastante elaborados, e integrar essa solução às aplicações já existentes, as quais utilizam o framework CodeIgniter e o SGBD Oracle 11g. Além disso, essa solução teria que fazer uso de software de código aberto (de preferência) ou gratuitos.
Testei algumas bibliotecas, tais como FPDF e Mpdf, mas estas não atenderam às minhas necessidades. Depois de algumas pesquisas, cheguei a uma solução ideal para o meu caso, que utiliza os softwares iReport-Designer (iReport) e JasperReports Server (JasperServer), ambos com versões disponibilizadas de forma grutuita. Estas ferramentas possibilitam a criação dos relatórios em uma interface gráfica, e a geração desses relatórios com aspecto profissional.
Não é intenção deste artigo discorrer pormenorizadamente sobre as ferramentas usadas, e parto do pressuposto de que o leitor tenha conhecimento sobre PHP (CodeIgniter) e Oracle, e de que já os tenha instalados e funcionando. Esta solução também pode ser adaptada facilmente para o uso com MySql ou PostgreSql.
Os exemplos utilizados neste artigo foram realizados no Windows 7, mas poderão ser implementados no Linux com pouquíssimas adaptações, pois existem versões de todos os softwares envolvidos para este último Sistema Operacional.
Nos itens seguintes, discorrerei com mais detalhes sobre cada uma das partes envolvidas na solução.
Quem utiliza PHP sabe que a geração de relatórios nessa linguagem não é uma tarefa trivial.
Pouco tempo atrás, tive a necessidade de implementar uma solução para a geração de alguns relatórios, os quais eram bastante elaborados, e integrar essa solução às aplicações já existentes, as quais utilizam o framework CodeIgniter e o SGBD Oracle 11g. Além disso, essa solução teria que fazer uso de software de código aberto (de preferência) ou gratuitos.
Testei algumas bibliotecas, tais como FPDF e Mpdf, mas estas não atenderam às minhas necessidades. Depois de algumas pesquisas, cheguei a uma solução ideal para o meu caso, que utiliza os softwares iReport-Designer (iReport) e JasperReports Server (JasperServer), ambos com versões disponibilizadas de forma grutuita. Estas ferramentas possibilitam a criação dos relatórios em uma interface gráfica, e a geração desses relatórios com aspecto profissional.
Não é intenção deste artigo discorrer pormenorizadamente sobre as ferramentas usadas, e parto do pressuposto de que o leitor tenha conhecimento sobre PHP (CodeIgniter) e Oracle, e de que já os tenha instalados e funcionando. Esta solução também pode ser adaptada facilmente para o uso com MySql ou PostgreSql.
Os exemplos utilizados neste artigo foram realizados no Windows 7, mas poderão ser implementados no Linux com pouquíssimas adaptações, pois existem versões de todos os softwares envolvidos para este último Sistema Operacional.
Nos itens seguintes, discorrerei com mais detalhes sobre cada uma das partes envolvidas na solução.
Fiz um relatório no ireport 5 conseguir escrever um número por extenso (ex: 2,30) -Dois reais e trinta centavos. Tudo ok!
Mas, quando abro através de um link via php usando a classe phpjasper o relatório não abre. Sei que é problema no campo que escreve por extenso. Como resolver.
Sei que a classe phpjasper tem um monte de problemas. Conseguir contornar alguns. Mas, a escrita por extenso essa eu peço ajuda e desde já agradeço!
Mas, quando abro através de um link via php usando a classe phpjasper o relatório não abre. Sei que é problema no campo que escreve por extenso. Como resolver.
Sei que a classe phpjasper tem um monte de problemas. Conseguir contornar alguns. Mas, a escrita por extenso essa eu peço ajuda e desde já agradeço!
29/10/2014 10:09am
(~10 anos atrás)
Antonio,
Você está usando Oracle? Qual o charset? (as casas decimais estão separadas com ponto ou com vírgula?)
Que tipo de dado há nesse campo, no banco de dados?
Você está usando Oracle? Qual o charset? (as casas decimais estão separadas com ponto ou com vírgula?)
Que tipo de dado há nesse campo, no banco de dados?
25/06/2014 9:22pm
(~10 anos atrás)
Os campos de valores (double) de meu relatório saem no formato "americano" , ex.: 1,234.56 e não 1.234,56, apesar de eu configurar corretamente a propriedade "Pattern" do referido campo: #,##0.00
O que pode ser?
O que pode ser?
24/06/2014 10:19pm
(~10 anos atrás)
Parabéns Osmando...essa solução mostra a versatilidade de ser trabalhar com o PHP. Claro que existem diversas soluções possíveis, mas trabalhar com o iReport nos dá a confiabilidade de uma ferramenta gráfica já consagrada, com a flexibilidade do PHP.
Um abraço
Um abraço
02/09/2013 9:17am
(~11 anos atrás)
Você está passando este número por extenso como parâmetro para o jasper server? Caso positivo, tente usar a função do PHP utf8_encode ($parametros = array("PARAMETRO1" => utf8_encode($variavel)), por exemplo).
Se não resolver, informe mais detalhes sobre o seu problema, para que eu possa tentar resolvê-lo.
Sim, a clase phpjasper tem alguns bugs, mas, como ela atendeu às minhas necessidades, não me empenhei em tentar resolvê-los.
Osmando.