Tecnologias web e linguagens de programação web: html, css, php, javascript, ajax, java, jsp, asp...

quarta-feira, 30 de janeiro de 2019

Gerar arquivo pdf em PHP usando a classe FPDF


Habilidades necessarias para acompanhar este artigo:

  •          Programação em php, nível intermediário (php orientado a objectos)
  •          Programação orientada a objectos
  •          Html


Neste artigo, iremos criar um script php, fazendo o uso da classe fpdf para produzir um ficheiro pdf quando o script for executado. O nosso arquivo pdf gerado, terá um titulo, um paragrafo, uma tabela e um rodapé com data e pagina. O artigo e muito útil para quem pretende gerar relatórios em pdf usando php. No próximo artigo iremos gerar um ficheiro pdf usando dados da base de dados.
Primeiro precisamos baixar a classe FPDF, recomendo que baixe-o no site oficial: www.fpdf.org. extrai o arquivo fpdfxxx.zip e copia o arquivo fpdf.php e a pasta font  extraídos, para uma pasta “fpdf”dentro da pasta do servidor apache:
ü  Para quem usar Windows e xampp, deve criar a pasta fpdf no directorio xampp/htdocs
ü  Para quem usa wamp, criar no directorio wampp/www
ü  Para quem usa ubuntu ou centos, directorio /var/www/html
Feito isso, vamos criar um ficheiro php, dentro da pasta fpdf que criamos, vamos dar o nome de phpToPdf.php. agora temos dois ficheiros na nossa pasta fpdf: fpdf.php e phpToPdf.php. No nosso ficheiro phpToPdf.php vamos criar uma classe php com o nome PDF, que extende a classe FPDF, mas antes disso temos que incluir o ficheiro fpdf.php (que contem a classe FPDF extendida):
Include “fpdf.php”;
Class PDF extends FPDF{

}
Dentro da classe pdf vamos criar duas funções, Header e Footer. Usaremos essas funções para criar o cabeçalho e o rodapé do nosso arquivo pdf a ser gerado, elas são carregadas automaticamente, não precisamos invoca-las.
                Class PDF extends FPDF{
                                function Header (){
                                                $this->setFont(‘Arial’, ‘B’, 14);
                                                $this->Ln(20);
                                                $this->Write(10,'Meu ficheiro PDF Gerado','');
                                                $this->Ln(20);}
                                                }

No codigo acima:
ü  A funcao setfont serve para definer a fonte a ser usada no texto abaixo dele, ou seja, para mudra a fonte default. Sempre que usamos esta função, ela terá efeito no texto abaixo dele e as fontes definidas acima dele não serão usadas. Esta função possui três parâmetros: a família da fonte (Arial), o estilo (bold-B, Italic-I) se deixar vazio ira usar estilo normal e por fim o tamanho (12)
ü  A função Ln serve para fazer o line break, ele leva apenas um parâmetro que e um numero inteiro que representa o tamanho da linha a ser pulada.
ü  A função Write serve para escrever um texto, ele faz break automaticamente quanto atinge a borda direita. Ele leva três paramentros: tamanho da linha (10), texto a imprimir e um link (url)

A seguir temos a função Footer e fechamos a nossa classe
function Footer()
{
                $this->SetY(-15);
                $this->SetFont('Arial','I',8);
                $this->Cell(0,10,'Pagina  '.$this->PageNo().' de {nb}',0,0,'C');
}
}
No código acima:
ü  A função setY define a posição Y ou seja, a posição horizontal do nosso texto a seguir. Temos apenas um  parâmetro (-15). Temos valor negativo porque medimos a posição a partir do fundo da pagina, como se tivéssemos a definir a margem inferior, ou seja, o texto do rodapé estará a 15 mm medido apartir da borda no fundo da pagina
ü  A função setfont define a fonte do rodapé para Arial, italico, tamanho 12
ü  A função cell imprime uma célula, que pode ter uma borda ou não. Cell tem 6 parametros, sendo o primeiro o tamanho (largura) da célula, se for zero ele ocupa toda a largura do documento, o segundo a altura da célula, o terceiro o texto a ser impresso dentro da célula, o quarto a borda (0 – sem borda, 1 – com borda), o quinto quebra de linha (0 – não quebrar, próximo elemento ficara a direita; 1 – quebrar, próximo elemento ficara no ( o texto {nb} e alias para o numero total de paginas) inicio da próxima linha, 2 – quebrar e próximo elemento ficara imediatamente abaixo da celula), o sexto e ultimo e alinhamento do texto (L- esquerda, C – centralizado, R - direita).

A seguir vamos criar uma variável $pdf que instancia nossa classe PDF
$pdf = new PDF();
A seguir chamamos a funcao AliasNbPages que define um alias para o numero de paginas, se for deixado sem parametros ele usara o alias definido por default: {nb}
$pdf->AliasNbPages();
A seguir usamos a funcao AddPage para adicionar nova pagina ao nosso documento.
$pdf->AddPage();

A seguir coloca o coloca o seguinte código, que ira imprimir o texto no corpo do nosso documento e fechamos o nosso script php.
$pdf->SetFont('Times','',12);
$pdf->Write(10,"Este e um paragrafo do nosso ficheiro pdf gerado, note que este paragrafo usa a fonte TIMES NEW ROMAN e tamanho 12, tal como foi definido na linha do codigo antes dele. Quando usamos a funcao setFont ele modifica a fonte do proximo texto, nao do texto antes dele. Abaixo teremos uma tabela com 4 colunas.","");
$pdf->Ln(10);
$pdf->SetFont('Times','B',12);

                $pdf->Cell(70,10,'Nome ',1,0,'L');
                $pdf->Cell(40,10,'Sexo ',1,0,'L');
                $pdf->Cell(40,10,'Idade ',1,0,'L');
                $pdf->Cell(40,10,'Morada ',1,1,'L');

                $pdf->SetFont('Times','',12);

                $pdf->Cell(70,10,'Joao ',1,0,'L');
                $pdf->Cell(40,10,'M ',1,0,'L');
                $pdf->Cell(40,10,'16 ',1,0,'L');
                $pdf->Cell(40,10,'Morada 1 ',1,1,'L');

                $pdf->Cell(70,10,'Maria ',1,0,'L');
                $pdf->Cell(40,10,'F ',1,0,'L');
                $pdf->Cell(40,10,'18 ',1,0,'L');
                $pdf->Cell(40,10,'Morada 2 ',1,1,'L');

                $pdf->Cell(70,10,'Jose ',1,0,'L');
                $pdf->Cell(40,10,'M ',1,0,'L');
                $pdf->Cell(40,10,'21 ',1,0,'L');
                $pdf->Cell(40,10,'Morada 3 ',1,1,'L');

                $pdf->Cell(70,10,'Carla ',1,0,'L');
                $pdf->Cell(40,10,'M ',1,0,'L');
                $pdf->Cell(40,10,'15 ',1,0,'L');
                $pdf->Cell(40,10,'Morada 4 ',1,1,'L');

$pdf->Output();

A função output imprime o documento na tela

NOTA: antes do output não pode ter nenhum print ou echo, ou seja, não podemos ter nenhum output, pois isso ira originar um erro e o documento não sera gerado

                                                                                                                                             

Compartilhar:
← Mensagem mais recente Mensagem antiga → Página inicial

0 comentários:

Enviar um comentário

Publicação em destaque

Adicionar Fontes Externas ao Site Usando CSS

Hoje vamos aprender uma coisa bastante simples, mas importante. Certamente já deve ter se deparado com as limitações de fontes ao criar ...

Seguidores

Total de visualizações

Com tecnologia do Blogger.

Artigos Populares

Newsletter

Subscribe Our Newsletter

Enter your email address below to subscribe to our newsletter.