PHP é à Quinta-Feira – Gerar ficheiros PDF
Por Pedro Peixoto para o PPLWARE
A destruição ambiental, com que nos temos preocupado é fruto, de alguma forma, da evolução tecnológica. No entanto, também a tecnologia pode ajudar a tornar a Terra num melhor local para viver. Os documentos PDF têm assumido grande importância neste mundo actual, a tendência é para o papel cair gradualmente em desuso, assumindo o PDF o papel de sucessor. É por isso muito importante, e cada vez mais solicitado, este recurso nas nossas aplicações. Esta semana vamos aprender como gerar PDF’s em PHP, usando a classe FPDF.
Hello PPLWare
Em primeiro lugar, depois de fazer download da classe, é necessário incluí-la no nosso ficheiro.
require_once("fpdf/fpdf.php"); |
De seguida criamos um novo objecto. O primeiro parâmetro indica a orientação da folha (P-> Vertical, L->Horizontal), de seguida indicamos qual a unidade de medida (mm,cm,in,pt), e por fim o tamanho.
$pdf= <strong>new</strong> FPDF("P","mm","A4"); |
Agora que já “temos o documento PDF”, vamos adicionar a primeira página.
$pdf= AddPage(); |
Antes de escrever o texto é necessário seleccionar o estilo de letra a aplicar, até seleccionar-mos um novo estilo, todos os textos que fizermos output terão este estilo seleccionado. No primeiro parâmetro temos o nome da fonte, no segundo o estilo (B->Negrito, I->Itálico, U->Sublinhado, ou combinações entre eles) .
$pdf->SetFont('arial','I',10); |
Agora que já temos uma página para escrever, e o estilo de texto a usar, vamos ao que interessa: escrever. Neste ponto podemos usar duas funções distintas:
- Text – Permite escrever um texto livremente numa posição (x,y) especificada.
$pdf->Text(0,5,'Hello PPLWare!'); |
- Cell – Esta função deve ser a preferida para escrever texto, pois é mais controlada e permite a construção organizada de um PDF ao estilo do Excel, ou seja, através de células. É uma função com 7 parâmetros possíveis:
- Largura da célula
- Altura
- O texto a digitar
- O border (0->sem border,1->com border, e a combinação de L->esquerda, T->cima, R->direita e B->baixo)
- A posição seguinte do cursor (0->direita,1->início da nova linha,2->baixo)
- Alinhamento (L->esquerda, R->direita, C->Centro)
- Preenchimento do fundo (true, false)
- URL (No caso de querer ter uma hiperligação)
Não é obrigatório especificar todos estes parâmetros.
$pdf->Cell(0,5,'Hello PPLWare!',0,0,'L'); |
Por fim, e para gerar o PDF chamamos a função Output. Esta função tem apenas dois parâmetros. O primeiro é o nome do ficheiro e o segundo o destino:
- I->Browser
- D->Browser forçando o download com o nome dado
- F->Guarda localmente no caminho indicado no primeiro parâmetro
- S->Retorna o documento como um string
$pdf->Output("hellopplware.pdf","I");
Funções importantes
Para além das funções “básicas” vistas anteriormente, há mais algumas que considero importantes.
Para colocar uma imagem no pdf usamos a função image com 7 parâmetros possíveis:
- Localização da imagem
- Posição x
- Posição y
- Largura
- Altura
- Tipo (jpeg, png, …) , se não especificado o sistema determina o tipo através da extensão.
- URL, no cado de querer colocar um link nesta imagem.
$pdf->Image("pplware.jpg", 30,30,40,30); |
Por vezes necessitamos de posicionar o cursor num determinado local do documento, para isso usamos as funções SetX, SetY ou SetXY e os valores de destino.
$pdf->SetXY("60","60"); |
Outro parâmetro que usamos frequentemente é a cor do texto. Podemos, então, usar a função SetTextColor. Esta função recebe três inteiros compreendidos entre 0 e 255 para defenir o Vermelho, Verde e Azul respectivamente.
$pdf->SetTextColor(60,60,60); |
Scripts/Addons
O FPDF disponibiliza ainda na sua página alguns Scripts adicionais, dos quais destaco alguns que considero importantes:
- HTML2PDF – Converter código HTML em PDF.
- FPDF Tables – Tabelas em PDF’s.
- Javascript support – Inclusão de código javascript nos ficheiros PDF.
Conclusão
O FPDF permite-nos de forma rápida, fácil e dinâmica gerar PDF’s em tempo real usando PHP e todos os recursos que ele oferece. É incrível poder oferecer aos utilizadores documentos gerados na hora com base em informações particulares, tais como facturas, recibos, comprovativos, bilhetes,…, e de uma forma tão simples. Os Scripts disponíveis permitem fazer praticamente tudo o que é possível fazer em documentos PDF, e é por isso uma classe que merece, pelo menos, o seu conhecimento.
Este artigo tem mais de um ano
Bom tutorial, vai dar geito. Parabens!
Gostei do artigo e penso que dará bastante jeito, no futuro . .
Um bocado fora do tópico . . Eu li, num post sobre android, penso que eras tu, pedro, que teve que desenvolver aplicações para android . . Eu gostava de saber como posso começar e que IDE me aconselhas 🙂
Gostei do artigo e penso que dará bastante jeito, no futuro . .
Um bocado fora do tópico . . Eu li, num post sobre android, penso que eras tu, pedro, que teve que desenvolver aplicações para android . . Eu gostava de saber como posso começar e que IDE me aconselhas 🙂
(só porque mudei o mail -.-‘)
tambem gostava de saber como começar…
qq dica agradeço
http://www.fpdf.de/downloads/
Tem downloads e addons muito uteis… Ja tenho usado alguns… só é preciso cuidado e não fazer require() múltiplo, dá erro. normalmente é addon1 ( require(fpdf.php) class XXX extends class FPDF ) e quanto mais addons seria addon2 ( require (addon1.php) class YYY extends class XXX)…
Já uso esta class há muito tempo, para os trabalhos de média e pequena dimensão, altamente recomendado… P.e. gerar facturar online, gerar recibos online… só precisa de ter a inclusão de um .png com um código de barras p.e.
Boa boa…mesmo isto que andava à procura… Agora só falta mesmo um post sobre imprimir… sem ser o window.print…
cumps
HM
Boas, podes usar o addon Javascript support que te permite incluir javascript no PDF, depois é so incluires a seguinte linha de código:
$pdf->IncludeJS(“print(‘true’);”);
Mais um excelente artigo do Pedro Peixoto. Parabéns, estás em grande ! 🙂
Muito obrigado.
Parabéns pelo post..
Cumps,
HM
Eu prefiro usar o TCPDF: http://www.tcpdf.org/
Normalmente gero uma versão alternativa do HTML de uma página sem menus nem nada e mando o TCPDF gerar o PDF para isso. Por acaso num site que desenvolvi recentemente meti isso para a ficha dos items inseridos na base de dados, mas posso eventualmente expandir isso a mais casos facilmente 😉
Optimo tópico….
Em tempos andei de volta de PHP+PDF mas esbarrei com uma parede quando quis fazer um output the uma página PHP ( copia fiel do form do cliente, em papel).
o meu problema foi q o output n era bem feito e nos forums onde andei tds disseram para fazer o form em codigo (fpdf – desenho das table e celulas), até aqui td bem mas tornou-se pouco pratico quando o cliente decide alterar o form original, com mais uma celulas em locais dif…etc…)
posto isto… a parede foi td minha pois para alterar um for levava-me horas….
alguem sabe de uma solução pratica e rápida de gerar um pdf com o aspecto da pagina php q o cliente está a ver ??? (exluindo printers pdf claro).
Obrigado e bom trabalho.
Pires
mPDF, lê CSS’s e tudo.
Tenho usado sem muitos problemas…
Foi a única que me satisfez a nível de render de HTML.
lol com esse n trabalhei… tens algum tut sobre isso ? e onde o posso arranjar ?
Um abraço
Pires
Eu integrei com o codeigniter, é fácil. O tutorial estava no forum do codeigniter.
http://mpdf.bpm1.com/
Obrigadão pela dica…. vou dar uma olhadela….
Thnkx 2 u all
usei em tempos o dompdf. era relativamente bom pois tb lê CSS, no entanto não evoluiu o que é pena.
Esse mPDF parece ser porreiro vai levar uma vista de olhos num próximo projecto 😉
parece que o dompdf voltou ao activo, tinha parado no fim de 2008…
http://code.google.com/p/dompdf/
Bom tutorial! 🙂
Cumps
“… até seleccionar-mos um novo estilo…”
Correcção: seleccionarmos 😉
Eu costumo usar esta classe para gerar pdf’s.
É realmente muito simples!
Aconselho esta biblioteca:
http://bakery.cakephp.org/articles/Casmo/2010/06/26/creating-pdf-files-with-html2ps-html2pdf
Boas.
Eu fiz download do ficheiro, e não encontri nenhum ficheiro php. Tem que se mudar o nome do fpdf.htm para .php?
Poderiam explicar melhor o processo sff?
Obrigado
Boas,
O download disponibilizado por este bom tutorial, apenas fornece link para download da documentação em português do brasil. Ou seja, tens de ir ao website [url]http://www.fpdf.org/[/url] e lá no menu do lado esquerdo carregas em Downloads, nessa página logo após a lista da documentação nas várias linguagens, tem a classe para download, que vai na versão 1.6.
Ou então faz download neste link: [url]http://www.fpdf.org/en/dl.php?v=16&f=zip[/url]
Cumps.
Olá amigos.
Sou iniciante nestas andanças do PHP…
Eu estou a desenvolver uma página web que uma das opções é gerar documentos pdf…
Essa parte está ok…
O meu problema consiste que ao usar a função Output do http://www.fpdf.org/, ele cria o pdf na tab actual…
O que depois me faz perder a ligação com a página…
O que eu queria era criar um nova tab e redirecionar para essa tab o pdf criado…
O que poderei fazer?
Cumprimentos