Esse artigo faz parte da revista Clube Delphi Edição 102. Clique aqui para ler todos os artigos desta edição

PHP

Relatórios no PHP com arquivos PDF

Aprenda a gerar arquivos PDF no PHP para emissão de relatórios

 

Neste artigo veremos

·         Como utilizar a classe FPDF para criar arquivos PDF;

·         Como gerar relatórios em PDF para Web Sites PHP.

Qual a finalidade?

·         Implementar uma solução para relatórios, em formato profissional, no PHP.

Quais situações utilizam esses recursos?

·         Desenvolvimento de sistemas e sites com PHP onde se necessita de relatórios para obter-se informações.

 

Resumo do DevMan

Todos nós sabemos que grande parte dos sistemas de como um todo acabam não tenho tanta utilidade quando não há relatórios. É assim com aplicações Win32, mais cedo ou mais tarde o cliente pede para desenvolver algum tipo de relatório, tais como: comissão de vendas, vendas no mês, controle de estoque, gráfico de vendas, fluxo de caixa etc.

É possível desenvolver relatórios em Delphi for Win32 numa facilidade incrível, já que temos diversos editores de relatórios para todo gosto e bolso.

Na web não é diferente, os relatórios serão solicitados e teremos que estar preparados para desenvolver a solução para o cliente. A diferença maior entre aplicações Win32 e Web é que em Web a gama de opções para o desenvolvimento é bastante pequena. Por isso, nesse artigo quero mostrar uma boa solução para desenvolver relatórios na Web utilizando a biblioteca FPDF que é específica para programação PHP.

 

Quem tem uma aplicação WEB sabe que haverá solicitação de relatórios que deverão ter uma aparência profissional, que não percam a formatação de uma impressora para outra e, o mais importante, possam ser salvos para arquivo ou enviados via e-mail.

O formato ideal para relatórios na Web atualmente é o PDF, pois além de imprimir nas mais variadas impressoras sem perder formatação, podemos guardar os arquivos e enviá-los por e-mail ou qualquer outra mídia.

Portanto, nesse artigo criaremos arquivos PDF utilizando a biblioteca PDFLib do PHP. Vamos aprender na prática!

 

Preparando a utilização

Como o FPDF é uma classe, basta fazer o download do mesmo e colocar em um diretório dentro da sua aplicação. Para baixar acesse o site www.fpdf.org e o link Downloads. Escolha a versão mais atual até o fechamento dessa edição. Depois de fazer o download descompacte o arquivo. Como resultado, tem-se o arquivo da classe (fpdf.php) que deverá ser copiada para o diretório da sua aplicação, bem como a pasta font que contém as fontes TrueType que poderão ser utilizadas.

Os demais arquivos são a documentação, um tutorial e informações. No site também existe um tutorial traduzido para o português do Brasil que pode ser baixado.

FPDF é liberado sob uma licença permissiva: não há qualquer restrição de utilização. Você pode inserí-lo livremente na sua aplicação (comercial ou não), com ou sem modificações.

 

Conhecendo alguns recursos disponíveis

Para geração de arquivos PDF, a FPDF oferece suporte para inserir imagens nos formatos JPEG, PNG e GIF. Para a edição do texto, qualquer fonte TrueType pode ser utilizada, desde que seja distribuída juntamente com a aplicação, podendo-se também definir a cor das fontes. Quanto à formatação do texto, é possível criar cabeçalhos e rodapés, criar links hipertexto, sendo também possível a quebra automática de linhas e páginas. Além de também definir as medidas das margens.

 

Nota: Para inserir no relatórios imagens do tipo Gif, será necessário ter carregada no PHP a biblioteca GD. Em instalações do Delphi for PHP essa biblioteca já vem carregada. Se não seu caso, verifique o arquivo PHP.ini.

 

E o melhor de tudo é que o arquivo PDF resultante estará devidamente compactado, o que torna sua exibição mais rápida, em um tempo aceitável para aplicações Web.

 

Construindo os primeiros relatórios

Vamos iniciar nosso primeiro teste criando uma aplicação bastante conhecida de todos, a famosa e tradicional mensagem: Ola Mundo! Abra seu editor preferido e digite o código da Listagem 1. Minha preferência é pelo Delphi For PHP, para agilizar a execução dos testes e ter a possibilidade de debug do código PHP, mas sinta-se a vontade para utilizar seu software de preferência, como o Bloco de Notas do Windows, por exemplo.

 

Listagem 1. Relatório Olá Mundo!

210 mm, deixando 20 mm de margem, ou seja, 2 centímetros. Como altura utilizou-se a medida de 4 mm o que é suficiente para um texto com fonte Arial tamanho 10. Ainda no método Cell, após o texto que deverá ser escrito colocou-se no próximo parâmetro o número ‘1’ que significa que uma borda será aplicada em toda a célula, o que é bem interessante em relatórios que precisam de linhas a cada registro. Depois da borda, tem-se mais um parâmetro com ‘1’ para definir uma quebra de linha após o texto. Com isso a próxima chamada ao método Cell estará posicionado na linha seguinte.

Na chamada escreve o texto Próxima Linha 2 tem-se, como último parâmetro a letra C que define que o texto deve ser centralizado dentro da célula, levando em conta seu tamanho (largura). Pode-se ainda definir a posição do texto com R (direita) e L (esquerda), como demonstra-se na última chamada ao método Cell que alinha o texto na margem direita. Colocando esse script para executar tem-se como resultado o exibido na Figura 1.

 

Figura 1. Relatório criado através do script da Listagem 2

 

Adicionando cabeçalho e rodapé ao relatório

A classe FPDF possui dois métodos que não foram implementados, deixando essa possibilidade de extensão dos mesmos. Esses métodos são o Header (cabeçalho) e o Footer (rodapé). Portanto, para criar um cabeçalho e rodapé faze-se uma extensão da classe definindo esses dois métodos. É importante salientar a necessidade de utilizar o $this para chamar os métodos da própria classe. Veja na Listagem 3 um relatório com cabeçalho e rodapé, bem como recursos de imagem e contador de páginas.

 

Listagem 3. Relatório com cabeçalho e rodapé