Gerando PDFs com PHP e a classe FPDF - Inserindo arquivos de texto no arquivo PDF

Nesse tutorial vamos ver várias funções para inserir o texto do documento a partir de um arquivo ".txt".

Por | @jonathanlamimkt Programação

Agora que já sabemos como criar um arquivo PDF, inserir e formatar cabeçalhos e rodapá, inserir imagens e links, vamos ver como inserir os textos a partir de arquivos externos, do tipo txt.

Para ficar mais fácil a compreensão vamos trabalhar com base em um exemplo, facilitando a visualização e entendimento.


Image("leao.jpg" , 10 ,8, 35 , 38 , "JPG" );
   
   //Arial bold 15
   $this->SetFont('Arial','B',15);
   
   //Movemos a célula para a direita
   $this->Cell(80);
   
   //Título
   $this->Cell(60,10,'Titulo do arquivo',1,0,'C');
   
   //Quebra de Linha
   $this->Ln(20); 
}

//Rodapé
function Footer() {
   //Posição: a 1,5 cm do final
   $this->SetY(-15);
   
   //Arial italic 8
   $this->SetFont('Arial','I',8);
   
   //Número da página
   $this->Cell(0,10,'Página '.$this->PageNo(),0,0,'C');
}

function TituloArquivo($num,$label) {
   $this->SetY(55);
   
   //Arial 12
   $this->SetFont('Arial','',12);
   
   //Cor de fundo
   $this->SetFillColor(200,220,255);
   
   //Título
   $this->Cell(0,6,"Arquivo $num : $label",0,1,'L',true);
   
   //Quebra de Linha
   $this->Ln(4);
}

function CorpoArquivo($file) {
   //Lemos o arquivo
   $f=fopen($file,'r');
   $txt=fread($f,filesize($file));
   fclose($f);

   //Times 12
   $this->SetFont('Times','',12);

   //Imprimimos o texto justificado
   $this->MultiCell(0,5,$txt);

   //Quebra de Linha
   $this->Ln();
}

function ImprimirArquivo($num,$title,$file) {
   $this->AddPage();
   $this->TituloArquivo($num,$title);
   $this->CorpoArquivo($file);
}

}

$pdf=new PDF();
$title='Mostramos um arquivo txt';
$pdf->SetTitle($title);
$pdf->SetY(65);
$pdf->ImprimirArquivo(1,'Arquivo de teste ',teste.txt');
$pdf->ImprimirArquivo(2,'Arquivo de teste 2','teste2.txt');
$pdf->Output();
?>


As primeiras linhas já foram vistas nos tutoriais anteriores, então não entraremos em detalhes, vamos diretamente para o método TituloArquivo(), que permite fazer a estilização dos títulos dos arquivos que serão exibidos. Vamos trabalhar com fonte Arial e tamanho 12 e cor de fundo azul, isso será feita pelo método SetFillColor e colocando o título com seu correspondete formato, através do método Cell().

Na sequência criamos o método CorpoArquivo(), que é o responsável por ler o arquivo txt e inserir o seu conteúdo dentro do arquivo PDF que será gerado. Passamos como parâmetro para o método o endereço do arquivo.

Através da função fopen abrimos o arquivo em modo leitura, depois fazemos a leitura com fread e guardamos o valor e uma variável. Fechamos então o arquivo a aplicamos a formatação ao texto.

Para finalizar criamos o método ImprimirArquivo(), que engloba os dois métodos anteriores e torna o código mais simples.

Foram utilizados dois novos métodos nesse tutorial, o mpetodo SetFillColor() e o método MultiCell(). Vamos ver cada uma deles agora, entendendo então o seu funcionamento.

SetFillColor()

Esse método define a cor interna das células e retângulos. As cores podem ser passadas em RGB ou tons de cinza.

Sua sintaxe é:
SetFillColor(int r[, int g, int b]);


r: se colocarmos g e b mostra vermelho, senão mostra cinza
g: o verde
b: o azul

MultiCell()

Esse método nos permite imprimir texto com quebras de linha, podendo estes serem automáticos ou explícitos (com o caracter n).

Sua sintaxe é:
MultiCell(float w, float h, string txt[, mixed border [, string align[, boolean fill]]]);


w: largura das células. Se 0, elas se estendem até a margem direita da página.
H: altura das células.
txt: Texto a ser impresso nas células.
Border: Indica se as bordas devem ser desenhadas ao redor das células. O valor pode ser um número:
0: sem borda
1: quadro
ou algum ou todos os seguintes caracteres:
L: esquerda
T: superior
R: direita
B: inferior
Seu valor por padrão é 0.
align: estabelece o alinhamento do texto.
L: à esquerda
C: centralizado
R: à direita
J: justificado (valor padrão)
fill: indica se o fundo da célula deve conter alguma cor (true) ou se será transparente (false). O valor padrão é false.

Com essas informações e métodos já possível criar documentos muito bem formatados no php e convertê-los para PDF.

Continuem acompanhado, novos tutoriais em breve.

Até lá!

Mais sobre: php, pdf, fpdf
Share Tweet
DESTAQUESRecomendadoMais compartilhados
Comentários
AINDA NÃO SE INSCREVEU?

Vem ver os vídeos legais que
estamos produzindo no Youtube.