PHP é à Quinta-Feira – Gerar ficheiros PDF

24 Comentários

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.

php

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= new 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:

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.

Partilhar:
Tags:

Comentários

24

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Mestre
    Mestre

    Bom tutorial, vai dar geito. Parabens!

  2. Avatar de JAPIM

    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 🙂

  3. Avatar de JAPIM

    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 -.-‘)

    1. Avatar de Anon
      Anon

      tambem gostava de saber como começar…

      qq dica agradeço

  4. Avatar de H. Crespo
    H. Crespo

    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.

  5. Avatar de HM
    HM

    Boa boa…mesmo isto que andava à procura… Agora só falta mesmo um post sobre imprimir… sem ser o window.print…

    cumps

    HM

    1. Avatar de Pedro Peixoto

      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’);”);

      1. Avatar de Pedro Pinto

        Mais um excelente artigo do Pedro Peixoto. Parabéns, estás em grande ! 🙂

      2. Avatar de HM
        HM

        Muito obrigado.

        Parabéns pelo post..

        Cumps,
        HM

  6. Avatar de petersaints

    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 😉

  7. Avatar de Pires
    Pires

    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

    1. Avatar de Fábio Rocha

      mPDF, lê CSS’s e tudo.
      Tenho usado sem muitos problemas…

      Foi a única que me satisfez a nível de render de HTML.

      1. Avatar de Pires
        Pires

        lol com esse n trabalhei… tens algum tut sobre isso ? e onde o posso arranjar ?

        Um abraço
        Pires

        1. Avatar de Fábio Rocha

          Eu integrei com o codeigniter, é fácil. O tutorial estava no forum do codeigniter.
          http://mpdf.bpm1.com/

          1. Avatar de Pires
            Pires

            Obrigadão pela dica…. vou dar uma olhadela….

            Thnkx 2 u all

      2. Avatar de dwrcdII
        dwrcdII

        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 😉

        1. Avatar de dwrcdII
          dwrcdII

          parece que o dompdf voltou ao activo, tinha parado no fim de 2008…

          http://code.google.com/p/dompdf/

  8. Avatar de Pedro S
    Pedro S

    Bom tutorial! 🙂
    Cumps

  9. Avatar de Pedro Davide
    Pedro Davide

    “… até seleccionar-mos um novo estilo…”

    Correcção: seleccionarmos 😉

  10. Avatar de Ganha dinheiro na net

    Eu costumo usar esta classe para gerar pdf’s.
    É realmente muito simples!

  11. Avatar de SepulRise
    SepulRise

    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

    1. Avatar de danifss

      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.

  12. Avatar de renato
    renato

    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