Gerando documentos PDF com a classe FPDF
O FPDF é uma classe para PHP de grande utilidade no processo de criação de relatórios em formato PDF, utilizando funções simples e poderosas. O FPDF é um Software Livre (e gratuito), o que significa que você poderá utilizá-lo livremente para uso pessoal ou comercial, além de poder modificá-lo e estudar seu código-fonte, ao contrário da PDFlib, que exige o pagamento de licenças para uso comercial.
O FPDF possui suporte às principais funções para geração de relatórios, como por exemplo:
- Formatação de cabeçalho (Header) e rodapé (Footer);
- Quebra de página automática;
- Quebra de linha e justificação de texto automática;
- Suporte a imagens (JPEG e PNG);
- Suporte a fontes TrueType e Type1;
Instalando o FPDF
Antes de mais nada, acesse o endereço http://www.fpdf.org e faça o download da última versão do FPDF. Depois, descompacte o arquivo (.zip ou .tgz) no diretório em que ficará hospedado seu website.
Primeiros passos
Crie um arquivo com o nome de modelo.php, por exemplo, e adicione as seguintes linhas:
Agora vamos analisar cada linha:
Aqui você define onde está o diretório font/, criado na instalação do FPDF. Esta linha é obrigatória.
Nesta linha você informa onde está o arquivo fpdf.php. É neste arquivo que estão todas as funções utilizadas neste artigo. Esta linha também é obrigatória.
Cria o objeto FPDF. Os valores default para página são: tamanho A4 e no modo Retrato, com as medidas em milímetros (mm). A sintaxe da função FPDF() é:
FPDF([String Orientação [,String Unidade [,mixed formato]]]);
O parâmetro Orientação pode ser preenchido com:
- P: Portrait (Retrato) ou
- L: Landscape (Paisagem).
Em Unidade podemos informar os valores:
- pt: para pontos;
- mm: para milímetros;
- cm: para centímetros ou
- in: para polegadas.
E em Formato:
- A3;
- A4;
- A5;
- Letter;
- Legal.
Inicia um novo documento PDF.
Adiciona uma página ao documento, com o cursor a 1cm de distância da margem esquerda e 1cm de distância da margem superior;
Aqui a Fonte é definida como Arial, tamanho 12 e em negrito. A sintaxe da função SetFont() é:
Onde a família pode ser:
- Courier;
- Helvetica ou Arial;
- Times;
- Symbol ou;
- ZapfDingbats.
Estilo pode receber os valores:
- Vazio : Normal (sem formatação);
- B: Negrito;
- I: Itálico ou
- U: Sublinhado.
Imprime algum texto no documento. Neste caso, "Olá Mundo!!". A sintaxe da função Write() é:
O parâmetro link deve receber uma URL ou um identificador retornado pela função AddLink(). Não veremos essa função neste artigo, pois o seu propósito é criar relatórios dinâmicos para impressão ou armazenagem.
Cria o arquivo PDF. Se o navegador tiver o plugin Adobe Acrobat Reader instalado, o documento será aberto pelo próprio navegador. Caso contrário, ele pedirá para fazer o download do PDF gerado.
O FPDF possui suporte às principais funções para geração de relatórios, como por exemplo:
- Formatação de cabeçalho (Header) e rodapé (Footer);
- Quebra de página automática;
- Quebra de linha e justificação de texto automática;
- Suporte a imagens (JPEG e PNG);
- Suporte a fontes TrueType e Type1;
Instalando o FPDF
Antes de mais nada, acesse o endereço http://www.fpdf.org e faça o download da última versão do FPDF. Depois, descompacte o arquivo (.zip ou .tgz) no diretório em que ficará hospedado seu website.
Primeiros passos
Crie um arquivo com o nome de modelo.php, por exemplo, e adicione as seguintes linhas:
<?php
define('FPDF_FONTPATH', 'font/');
require('fpdfxxx/fpdf.php'); // onde xxx é a versão da FPDF
$pdf = new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 12);
$pdf->Write(4, 'Olá Mundo!!');
$pdf->Output();
?>
Agora vamos analisar cada linha:
define('FPDF_FONTPATH','font/');
Aqui você define onde está o diretório font/, criado na instalação do FPDF. Esta linha é obrigatória.
require('sub_diretorio/fpdf.php');
Nesta linha você informa onde está o arquivo fpdf.php. É neste arquivo que estão todas as funções utilizadas neste artigo. Esta linha também é obrigatória.
$pdf = new FPDF();
Cria o objeto FPDF. Os valores default para página são: tamanho A4 e no modo Retrato, com as medidas em milímetros (mm). A sintaxe da função FPDF() é:
FPDF([String Orientação [,String Unidade [,mixed formato]]]);
O parâmetro Orientação pode ser preenchido com:
- P: Portrait (Retrato) ou
- L: Landscape (Paisagem).
Em Unidade podemos informar os valores:
- pt: para pontos;
- mm: para milímetros;
- cm: para centímetros ou
- in: para polegadas.
E em Formato:
- A3;
- A4;
- A5;
- Letter;
- Legal.
$pdf->Open();
Inicia um novo documento PDF.
$pdf->AddPage();
Adiciona uma página ao documento, com o cursor a 1cm de distância da margem esquerda e 1cm de distância da margem superior;
$pdf->SetFont('Arial','B',12);
Aqui a Fonte é definida como Arial, tamanho 12 e em negrito. A sintaxe da função SetFont() é:
SetFont(string família [,string Estilo [,float tamanho]]);
Onde a família pode ser:
- Courier;
- Helvetica ou Arial;
- Times;
- Symbol ou;
- ZapfDingbats.
Estilo pode receber os valores:
- Vazio : Normal (sem formatação);
- B: Negrito;
- I: Itálico ou
- U: Sublinhado.
$pdf->Write(4,'Olá Mundo!!');
Imprime algum texto no documento. Neste caso, "Olá Mundo!!". A sintaxe da função Write() é:
Write(float altura_da_linha, string texto [, mixed link]);
O parâmetro link deve receber uma URL ou um identificador retornado pela função AddLink(). Não veremos essa função neste artigo, pois o seu propósito é criar relatórios dinâmicos para impressão ou armazenagem.
$pdf->Output();
Cria o arquivo PDF. Se o navegador tiver o plugin Adobe Acrobat Reader instalado, o documento será aberto pelo próprio navegador. Caso contrário, ele pedirá para fazer o download do PDF gerado.
Páginas:
1
2
muito bom .... fiquei muito tempo procurando algo assim...
ajudou muito..
=)
ajudou muito..
=)
25/10/2008 2:12pm
(~1 ano atrás)
Olá!!!Depois de muito tempo finalmente consegui gerar o pdf completo com textos, imagens e com os dados do bd.
Muito bom...Agora, que estou entendendo um pouco melhor, estou adorando.
Parabéns para você e para mim também(rsrsrs).
Muito bom...Agora, que estou entendendo um pouco melhor, estou adorando.
Parabéns para você e para mim também(rsrsrs).
23/05/2007 5:08am
(~3 anos atrás)
Parabéns pelo artigo! Está claro e objetivo!
Preciso adaptar este script a minha necessidade que é colocar cabeçalho, rodapé e nr em todas as páginas, além de que as linhas devem ser alternadas com a cor branca e cinza, por exemplo.
Ufa!...
Podem me dar mais alguma orientação.
Obrigado.
Preciso adaptar este script a minha necessidade que é colocar cabeçalho, rodapé e nr em todas as páginas, além de que as linhas devem ser alternadas com a cor branca e cinza, por exemplo.
Ufa!...
Podem me dar mais alguma orientação.
Obrigado.
10/05/2007 10:46am
(~3 anos atrás)
ola carol, me desculpe a demora para responder.
Seguinte, acredito qeu esse seu problema esteja na sua busca SQl, pois o PDF em si nao interfere em nada das variaveis vindas do banco, tenta colocar sua busca em algum programa que execute querys (phpmyadmin, sqlyog por exemplo) e veja se retorna alguma coisa.
qq coisa estou por aqui. Abraços
Seguinte, acredito qeu esse seu problema esteja na sua busca SQl, pois o PDF em si nao interfere em nada das variaveis vindas do banco, tenta colocar sua busca em algum programa que execute querys (phpmyadmin, sqlyog por exemplo) e veja se retorna alguma coisa.
qq coisa estou por aqui. Abraços
09/05/2007 6:09am
(~3 anos atrás)
Olá!!!
Estou com problemas.
Criei o banco de dados, inseri alguns registros e segui o exemplo que você deu.
Bem, gera o pdf somente com os títulos e não está aparecendo as informações do banco de dados, não ocorre nenhuma mensagem com erro, o que pode ser?
Agradeço sua atenção!!!
Estou com problemas.
Criei o banco de dados, inseri alguns registros e segui o exemplo que você deu.
Bem, gera o pdf somente com os títulos e não está aparecendo as informações do banco de dados, não ocorre nenhuma mensagem com erro, o que pode ser?
Agradeço sua atenção!!!
07/05/2007 10:50am
(~3 anos atrás)
Olá JN,
Acredito que isso tenha mais ah ver com o seu SQL ou com lógica de progamação em si do que com o PDF. Porque o PDF você só vai moldar as páginas, mas os dados você tem que pegar do banco de acordo com suas buscas/condições.
Acredito que isso tenha mais ah ver com o seu SQL ou com lógica de progamação em si do que com o PDF. Porque o PDF você só vai moldar as páginas, mas os dados você tem que pegar do banco de acordo com suas buscas/condições.
01/02/2007 5:42am
(~3 anos atrás)
Muito bom seu exemplo. Mas como fazer com quebras? Por ex: Em uma rêde de lojas, com dezenas de vendedores, pegar loja 01 e primeiro vendedor e imprimir as vendas deste do mes de janeiro e totalizar, em seguida fevereiro e totalizar ... assim até dezembro ... depois partir para o segundo vendedor e até o ultimo desta loja. Após listar de todos da loja 01, partir para loja 02 e sim por diante.
Agradeceria muitissimo se desse um exemplo, pois estou migrando de outra linguagem onde desenvolvo relatorios com qualquer nivel de complexidade e em PHP só tenho encontrado exemplos simples.
Agradeço pela ajuda.
Agradeceria muitissimo se desse um exemplo, pois estou migrando de outra linguagem onde desenvolvo relatorios com qualquer nivel de complexidade e em PHP só tenho encontrado exemplos simples.
Agradeço pela ajuda.
01/02/2007 5:08am
(~3 anos atrás)




Parabéns mesmo.