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
0 comentários:
Enviar um comentário