A biblioteca FPDF é amplamente utilizada no desenvolvimento web com PHP para gerar documentos PDF dinamicamente. Com a combinação do PHP, MySQL e FPDF, é possível criar relatórios, faturas, certificados e outros tipos de documentos com facilidade. No entanto, um problema comum que os desenvolvedores podem encontrar é a presença de uma página em branco no final do documento PDF gerado com o FPDF. Neste artigo, exploraremos esse problema e forneceremos uma solução para evitá-lo.
A biblioteca FPDF é uma ferramenta poderosa para a criação de documentos PDF no PHP. Ela permite a geração de conteúdo personalizado, como texto, imagens e tabelas, e fornece diversos recursos para formatar e estilizar o documento conforme necessário. Com a integração do MySQL, é possível buscar dados diretamente do banco de dados e inseri-los no PDF gerado.
No entanto, quando usamos o FPDF para criar um documento PDF que exibe múltiplas páginas, é comum ocorrer uma página em branco no final. Isso pode ser inconveniente, especialmente se o documento for impresso ou se você estiver anexando-o a um e-mail. Felizmente, existe uma solução simples para esse problema.
A causa raiz desse problema está relacionada ao fato de que o FPDF não consegue determinar automaticamente quando a última página foi totalmente preenchida. Para evitar a página em branco no final do documento, precisamos informar ao FPDF quando não há mais conteúdo para ser adicionado.
Uma abordagem comum é acompanhar o número de páginas criadas ao longo do processo de geração do documento. Podemos usar uma variável para contar o número de páginas e, ao adicionar cada conteúdo no documento, atualizar esse contador. Antes de fechar o documento, verificamos se o número de páginas é igual ao número total de páginas. Se não for, adicionamos uma página em branco no final.
Aqui está um exemplo de código que ilustra essa solução:
php
Copy code
<?php
require(‘fpdf.php’);
// Criar uma nova classe extendendo a FPDF
class CustomPDF extends FPDF {
private $totalPages; // Variável para contar o número de páginas
function Header() {
// Definir o cabeçalho do documento
}
function Footer() {
// Definir o rodapé do documento
}
function setTotalPages($totalPages) {
$this->totalPages = $totalPages;
}
function checkPageBreak($height) {
if($this->GetY() + $height > $this->PageBreakTrigger) {
$this->AddPage();
// Atualizar o número de páginas
$this->totalPages++;
return true;
}
return false;
}
function Output($name=”, $dest=”) {
if($this->totalPages < $this->PageNo()) {
$this->AddPage();
}
parent::Output($name, $dest);
}
}
// Exemplo de uso
$pdf = new CustomPDF();
$pdf->AliasNbPages();
$pdf->AddPage();
// Adicionar conteúdo ao documento
$pdf->Cell(0, 10, ‘Conteúdo da página 1’, 0, 1);
// Verificar a quebra de página
$pdf->checkPageBreak(10);
$pdf->Cell(0, 10, ‘Conteúdo da página 2’, 0, 1);
// Definir o número total de páginas
$pdf->setTotalPages($pdf->PageNo());
// Fechar o documento
$pdf->Output();
?>
Neste exemplo, criamos uma classe personalizada CustomPDF que estende a classe FPDF. Na função checkPageBreak, verificamos se o conteúdo que está sendo adicionado excede o limite da página atual. Se isso ocorrer, adicionamos uma nova página e atualizamos o contador de páginas.
Antes de fechar o documento, verificamos se o número total de páginas é igual ao número de páginas registradas. Se não for, adicionamos uma página em branco final usando a função AddPage().
É importante ressaltar que esse exemplo é apenas uma solução básica para evitar a página em branco no final do documento PDF. Dependendo do seu caso de uso específico, você pode precisar personalizar ainda mais a lógica para atender às suas necessidades.
Em resumo, a biblioteca FPDF oferece uma maneira poderosa de gerar documentos PDF dinamicamente usando PHP e MySQL. No entanto, a presença de uma página em branco no final do documento pode ser um problema frustrante. A solução proposta neste artigo ajuda a evitar esse problema, mantendo o controle adequado do número de páginas e adicionando uma página em branco, se necessário. Com essa abordagem, você pode garantir que seus documentos gerados com o FPDF tenham uma aparência profissional e sem páginas desnecessárias em branco.