A cada dia que passa a linguagem PHP (Hipertext Preprocessor) ganha mais espaço no que diz respeito a sistemas web, tudo isso graças à "quantidade, diversidade e qualidade de seus recursos, assim como a facilidade de utilização" (NIEDERAUER, 2005, p. 15) de suas funcionalidades.
Dentre tais funcionalidades e recursos está a capacidade de geração de documentos PDF (Portable Document Format), fato que simplifica a geração de relatórios, boletos eletrônicos, formulários e documentos em geral que necessitam de precisão na impressão do cliente. Há vários modos de gerar documentos PDF no PHP, mas no entanto, o modo escolhido foi através da classe FPDF, foco deste artigo.
Passos para a geração dum documento PDF com a classe FPDF no PHP:
1. Dispor de um servidor previamente configurado (Apache + PHP)
Este artigo não visa ensinar a configuração de um servidor. Para mais detalhes acesse o artigo:
2. Obter a classe FPDF
A classe FPDF foi desenvolvida por Olivier Plathey.
3. Preparando o terreno
Uma vez realizado o download da FPDF (fpdf16.tgz) e descompactados os arquivos, vamos ao que interessa.
Dentro do seu diretório "www" crie o diretório "PDF":
# mkdir /var/www/PDF
Dentro do diretório "PDF" crie o os diretório "lib":
# mkdir /var/www/PDF/lib
Mova o arquivo "fpdf.php" para o diretório "lib":
# mv [diretório de origem]/fpdf.php /var/www/PDF/lib/
Mova o diretório "font" para o diretório "PDF":
# mv [diretório de origem]/font/ /var/www/PDF/
Crie o arquivo "meuPrimerioGeradorPDF.php" no diretório "PDF":
# cd /var/www/PDF
# vi meuPrimerioGeradorPDF.php
4. Editando o arquivo "meuPrimeiroGeradorPDF.php":
Abra o vi ou o seu editor preferido e mãos a obra!
<?php
/******************************************************************************/
// Arquivo: meuPrimeiroGeradorPDF.php
// Este arquivo é parte integrante do artigo:
// Gerando Documentos PDF com a Classe FPDF no PHP
// Autor: José Vanol Jr. Data: 12/07/2010
/******************************************************************************/
//Incluindo o arquivo onde está a Classe FPDF
require_once("lib/fpdf.php");
//Definindo o diretório das fontes
define("FPDF_FONTPATH","font/");
//Iniciando o construtor FPDF
$pdf = new FPDF();
//Chamando o método para adicionar página
$pdf->AddPage();
//Posicionando o cursor
// "X" em milímetros de cima para baixo
// "Y" em milímetros da esquerda para a direita
$pdf->SetXY(25, 25); // SetXY($x, $y);
//Adicionando uma imagem (Disponível em: http://img.vivaolinux.com.br/imagens/layout/linux-logo-002.jpg)
$pdf->Image("image/linux-logo-002.jpg"); //Image($arquivo);
// Definindo nova posição do cursor
$pdf->SetXY(70, 25);
//Definindo a fonte
$pdf->SetFont("Helvetica", "B", 12); //SetFont($fonte, $estilo, $tamanho);
//Inserindo célula de texto
$pdf->Cell(0, 5, "Gerando Documentos PDF com a Classe FPDF no PHP");
// Definindo nova posição do cursor
$pdf->SetXY(115, 33);
//Inserindo célula de texto
$pdf->Cell(0, 5, "== Artigo 01 =="); //Cell($h, $w, $txt);
//Definindo novamente a fonte
$pdf->SetFont("Helvetica", "", 11);
// Definindo nova posição do cursor
$pdf->SetXY(120, 38);
//Inserindo célula de texto
$pdf->Cell(0, 5, "José Vanol Jr.");
//Inserindo uma linha divisória
$pdf->Line(25, 45, 185, 45);
// Definindo nova posição do cursor
$pdf->SetXY(25, 50);
//Texto
$txt="Introdução ..."; // Todo o texto a ser gravado com quebra de linha automática
//Inserindo o texto com quebra de linha automática
$pdf->MultiCell(160,5,$txt);
// Gerando um rodapé simples
$pdf->Line(25, 270, 185, 270); // insere linha divisória
$pdf->SetXY(25,270); //posição para o texto
$data=date("d/m/Y H:i:s"); //pegando data e hora da criação do PDF
$conteudo=$data." Pág. ".$pdf->PageNo(); //pegando o número da página
$texto="www.vivaolinux.com.br";
$pdf->Cell(80,5,$texto,0,0,"L"); //Insere célula de texto alinhado à esquerda
$pdf->Cell(80,5,$conteudo,0,0,"R"); //Insere célula de texto alinhado à direita
//Gerando o arquivo PDF
$pdf->Output("arquivo.pdf","D");
//Fim do arquivo
?>
5. Visualizando o resultado
Abra o seu navegador e acesse:
http://[Servidor]/PDF/meuPrimeiroGeradorPDF.php
Eis, pois, o "arquivo.pdf". Que maravilha!!!
Conclusão
Como se pode observar, a utilização da classe FPDF é bastante simples e com um pouco de treino é possível fazer muita coisa. Inclusive é possível gerar relatórios advindos de consultas a banco de dados ou do preenchimento de formulários, gerar boletos com código de barras etc. Mas isso é assunto para outros artigos.
Referências
NIEDERAUER, Juliano. PHP para quem conhece PHP [Recursos avançados para a criação de websites dinâmicos]. São Paulo: Novatec, 2005.
PIMENTA FORTE, Phillip Eduardo. Configurado um ambiente LAMP. Viva o Linux, 2010. Disponível em:
http://www.vivaolinux.com.br/dica/Configurando-um-ambiente-LAMP-%28acronimo-para-Linux-Apache-MySQL-e-PHP%29-no-Ubuntu-10.04. Acesso em: 08/07/2010 às 08:13h.
PLATHEY, Oliver. FPDF Library. FPDF, 2008. Disponível em:
http://www.fpdf.org/. Acesso em: 08/07/2010 às 08:47h.
Arquivos utilizados neste artigo:
PDF.tar