Usando relatórios jasper com PHP

Introdução

A criação de relatórios é uma tarefa muito comum na área de desenvolvimento de sistemas, produzir modelos de relatórios sempre foi uma tarefa muito árdua até o surgimento da biblioteca jasperreports e sua ferramenta de design, o iReport. Através destas ferramentas é possível criar modelos de relatórios de uma forma muito simples e prática.

O funcionamento básico trata-se da criação de um arquivo com extensão jrxml (Jasper Report XML), o qual pode ser facilmente desenhado através da ferramenta gráfica iReport, com o modelo de relatório em mãos, o arquivo jrxml, a biblioteca do jasperreport compila o arquivo para um formato com extensão jasper, este arquivo é o “byte-code” do modelo de relatório a ser interpretado pelo jasperreport. Em seguida a mesma biblioteca irá gerar o arquivo de relatório no formato desejado.

O jasperreport é capaz de gerar relatórios em vários formatos, como por exemplo: xml, odt, pdf, rtf, entre outros. Para cada um desses formatos o jasperreport vai precisar de uma biblioteca capaz de gerar conteúdo no específico formato (sendo que alguns formatos não é necessário nenhuma extensão extra). Por exemplo, para gerar arquivos pdf o jasperreport necessita da biblioteca itext.
São necessárias algumas bibliotecas para qualquer geração de relatório com o jasperreport, além das bibliotecas específicas para cada formato, são elas:

  • apache-commons-logging
  • apache-commons-beanutils
  • apache-commons-collections
  • apache-commons-digest

Se o modelo de relatório que está implementando fizer uma consulta ao banco de dados, a biblioteca de conexão a este banco também deve ser incluída.

Configurando o ambiente do servidor

As instruções a seguir consideram que o ambiente já tenha o apache, php e o jdk instalados na máquina, foram testados utilizando o apache2, php5 e o sun-java6. A configuração do servidor em ambientes linux pode ser feita de três maneiras diferentes dependendo da distribuição utilizada.

  • Distribuições que utilizam pacotes rpm podem ser configuradas automaticamente através do php-java-bridge-x.y.z-1-i386.rpm
  • Distribuições que utilizam pacotes deb podem ser configuradas automaticamente através do php-java-bridge_x.y.z-1_i386.deb
  • Outras distribuições podem ser instaladas a partir do arquivo código-fonte php-java-bridge_x.y.z.tar.gz, basta executar os comandos a seguir:
tar -zxvf php-java-bridge_*.tar.gz
cd php-java-bridge*
phpize && ./configure && make && sh install.sh

Disponíveis em: http://sourceforge.net/project/showfile … _id=117793
Execute um página no browser que tenha o <? phpinfo(); ?> e verifique se o módulo Java foi carregado corretamente.
Localize o arquivo de configuração do php (você pode, opcionalmente, criar um extra, nas instalações automáticas dos pacotes deb ou rpm isso é realizado automaticamente e é gerado um arquivo chamado java.ini, o endereço dele pode ser visto executando a página do phpinfo), neste arquivo configure os seguintes itens:

extension = java.so
java.java_home = /usr/lib/jvm/java-6-sun (diretório raiz do JDK)
java.java = /usr/lib/jvm/java-6-sun/jre/bin/java (arquivo binário java)

Pronto, o servidor apache agora é capaz de interpretar códigos java, nosso próximo passso é disponibilizar as bibliotecas necessárias para o jasperreports trabalhar. Para isso vamos copiar os jars necessários para a pasta $JAVA_INSTALL/jre/lib/ext/ neste exemplo copiei os seguintes arquivos:

commons-beanutils-1.8.0-BETA.jar - essencial para o jasper
commons-collections-3.2.1.jar - essencial para o jasper
commons-digester-1.8.jar - essencial para o jasper
commons-logging-1.1.1.jar - essencial para o jasper
iText-2.0.8.jar - biblioteca para gerar pdf
jasperreports-2.0.5.jar - essencial para o jasper
postgresql-8.3-603.jdbc3.jar - relatórios que conectam ao postgres

Para que o apache reconheça estas bibliotecas é necessário que reinice o servidor apache.

OBS.: Na instalação realizada na distruibuição linux Slackware, a compilação do código fonte do php-java-bridge, não gerou alguns jars necessários para o funcionamento do módulo Java para php, para solucionar este problema eu retirei estes jars contidos do pacote debian e inseri manualmente no diretório de módulos do php-java-bridge

Links

http://www.rjohnson.id.au/wordpress/200 … s-and-php/
http://php-java-bridge.sourceforge.net/
http://commons.apache.org/
http://www.lowagie.com/iText/
http://commons.apache.org/downloads/index.html
http://php-java-bridge.sourceforge.net/ … lation.php
http://www.hlegius.pro.br/integracao-ph … m-dificil/

Piada pra relaxar

Estava eu navegando no site do charges.com.br como de costume, quando vi uma piada no mínimo inusitada para nós da área de TI, segue a piada abaixo. Clique em “link relacionado” para ver o link original.

Profissão mais antiga
Um juiz, um médico, um arquiteto e um analista de sistemas estavam contando vantagem sobre as respectivas profissões.

o juiz disse:

– Antes de expulsar Adão e Eva do paraíso, Deus os julgou.

Foi o primeiro julgamento da historia e, portanto, minha profissão é a mais antiga de todas.

O analista de sistemas tentou contra argumentar, mas ante que pudesse falar, o médico disse:

– Sim, mas antes disso, lembre-se de que Eva foi Criada de uma costela de Adão.

Foi a primeira cirurgia da história e, portanto, minha profissão é a mais antiga de todas.

O analista de sistemas já ia entrar na briga, mas o arquiteto foi mais rápido:

– Ambos têm razão, mas antes da cirurgia e do julgamento, Deus criou o Universo.

Foi o primeiro projeto de arquitetura da história e, portanto, minha profissão é a mais antiga de todas.

Antes disso só existia o caos.

E o analista de sistemas:

– Arrá! E quem foi que criou o caos?!