Gerando documentos PDF com a classe FPDF no PHP

A linguagem PHP tem uma grande quantidade de recursos e funcionalidades, dentre as quais está a geração de documentos PDF. Fato que facilita 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. Este artigo mostra o uso da classe FPDF para a geração de documentos PDF através de aplicações PHP.

[ Hits: 30.743 ]

Por: José Vanol Jr. em 19/07/2010


Introdução



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

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Apache + módulo deflate = economia de banda

Leitura recomendada

O perigo no gerenciador de uploads do PHP

Manipulação de arquivos com PHP

Organizando fotos de camêra digital

Trabalhando com arquivos em PHP

Upload de imagens com criação de thumbnails em PHP

  
Comentários
[1] Comentário enviado por hugobcar em 23/07/2010 - 10:33h

Procurei muito sobre geração de PDFs no PHP, e uma ótima classe que encontrei foi a MPDF, que converte HMTL para PDF e converte muito bem, quem quiser dar uma olha, segue link (http://diogobesson.wordpress.com/2009/12/28/mpdf-php-e-pdf/).

[2] Comentário enviado por arcCoelho em 05/04/2011 - 12:10h

cara eu to com uma duvida, para colocar uma imagem eu preciso passar o parametro de posicionamento X e Y correto, bom mas e se eu quizer colocar uma imagem em posicionamento dinamico????

exemplo:

quando eu quero colocar uam imagem no cabeçario é um posicinamento estatico estará sempre ali

porem

se eu quizer colocar dados estatisticos ou dados de um pedido, ou produdo, cliente, carro, em fim qualquer coisa e quizer colocar uma foto apos isso tudo(tendo em vista q mudara para cada combinação de tuplas q forem usadas) como eu faço?????????


Contribuir com comentário