Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com geração de PDF com FPDF


Adampt

Pergunta

Olá amigos.

Estou tentando criar um ficheiro PDF a partir de uma tabela da BD. Para isto estou usando FPDF.
Já consegui criar a tabela, mas precisava que após 25 linhas, fosse gerada uma nova página que continuasse com a impressão dos dados que vêm da tabela.
Com o código que tenho neste momento a tabela é criada, mas após a linha 25 fica uma linha por página.
Segue o meu código:

 

<?php
// Require composer autoload
require '../pdf/fpdf.php';


$db = new PDO('XXXXXXXXXXXXXXXXXXXXXXXXX);



class myPDF extends FPDF
{
    public function header()
    {
        
        $db = new PDO(XXXXXXXXXXXXXXXXXXXXXX);
        $group = $db->query('select * from tbl_a WHERE ida=' . $_GET['idg']) ;
        $g2 = $group->fetch(PDO::FETCH_OBJ);
        $this->Image('../fimg/img.png', 10, 6, 50);
        $this->SetFont('arial', 'B', 16);
        $this->Cell(200, 25, 'TEXT', 0, 0, 'C');
        $this->Ln(10);
        $this->Cell(200, 25, mb_convert_case(base64_decode($g2->gnome), MB_CASE_TITLE, 'UTF-8'), 0, 0, 'C');
        $this->Ln(30);
    }
    public function footer()
    {
        $this->SetY(-10);
        $this->Image('../fimg/img2.png', 128, 265, 70);
        $this->SetFont('arial', '', 8);
        $this->Cell(0, 10, 'Page ' . $this->PageNo() . '/{nb}', 0, 0, 'C');
    }
    public function headerTable()
    {
        $this->SetFont('arial', 'B', 11);
        $this->Cell(10, 10, 'No.', 1, 0, 'C');
        $this->Cell(90, 10, 'Name', 1, 0, 'C');
        $this->Cell(40, 10, 'PID', 1, 0, 'C');
        $this->Cell(25, 10, 'Valid', 1, 0, 'C');
        $this->Cell(25, 10, 'Birthday', 1, 0, 'C');
        $this->Ln();
    }
    public function viewtable($db)
    {
        $this->SetFont('arial', '', 10);
        $stmt = $db->query('select * from tbl2 WHERE id2=' . $_GET['idg']);
        $i = 1;
        while ($data = $stmt->fetch(PDO::FETCH_OBJ)) {
            $this->Cell(10, 8, $i, 1, 0, 'C');
            $this->Cell(90, 8, mb_convert_case(base64_decode($data->nomegel), MB_CASE_TITLE, 'UTF-8'), 1, 0, 'L');
            $this->Cell(40, 8, base64_decode($data->idcardgel), 1, 0, 'C');
            $this->Cell(25, 8, $data->datavalidadegel, 1, 0, 'C');
            $this->Cell(25, 8, $data->dnascimentogel, 1, 0, 'C');
            $this->Ln();
if ($i>24){
$this->AddPage('P', 'A4', 0);
};
            $i++;
        }
    }
}

$pdf = new myPDF();
$pdf->AliasNbPages();
$pdf->AddPage('P', 'A4', 0);
$pdf->headerTable();
$pdf->viewtable($db);

$pdf->Output("List.pdf","I");

Desde já o meu obrigado.
NOTA:  Os dados do PDO foram ocultados e os nomes das tabelas e dos campos foram alterados, por razões de segurança.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
  Em 14/02/2023 em 08:38, Adampt disse:

Resolvido com o seguinte código.

        $i = 1;
        $a = 1;
        while ($data = $stmt->fetch(PDO::FETCH_OBJ)) {
            ....
			....
			....
            $this->Ln();
if ($a>24){
  $a = 1;
  $this->AddPage('P', 'A4', 0);
};
            
            $i++;
            $a++;
        }

 

Expand  

Acho que o maior problema aqui no fórum (pelo menos é o meu caso) é como usar o fpdf.php. Eu baixei aqui no meu micro, mas na hora de usar eu recebi várias mensagens de erro que não soube como resolver. Você conhece um tutorial para um leigo como eu fazer o pdf funcionar no PHP? De preferência em português.

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

  • 0
  Em 15/02/2023 em 16:37, Adampt disse:

Frank, Veja se isto ajuda 
https://www.youtube.com/watch?v=InT7WacebpY

Expand  

Valeu, bem que eu vi que o pdf do php era bem diferente. Pelo vídeo, deu para notar que ele é muito familiar ao Laravel, onde você precisa preparar várias pastas até atingir o objetivo.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...