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: 32.626 ]

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

Trabalhando com arquivos em PHP

Manipulação de arquivos com PHP

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

O perigo no gerenciador de uploads do PHP

PEAGLE: Serviço Web de busca indexada em seu servidor local

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts