Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Cabeçalho de Relatório usando TTableWriterPDF Olá pessoal! Estou precisando criar um cabeçalho fixo, que apareça em todas as páginas do relatório e como são relatórios tabulares optei por utilizar a classe nativa do framework TTableWriterPDF para essas atividades, porém ela não contempla a geração de cabeçalho. Será que alguém tem alguma luz para esse problema sem utilizar o fpdf direto?...
ES
Cabeçalho de Relatório usando TTableWriterPDF  
Fechado
Olá pessoal!

Estou precisando criar um cabeçalho fixo, que apareça em todas as páginas do relatório e como são relatórios tabulares optei por utilizar a classe nativa do framework TTableWriterPDF para essas atividades, porém ela não contempla a geração de cabeçalho.

Será que alguém tem alguma luz para esse problema sem utilizar o fpdf direto?

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (6)


FC

Eliezer

Tive uma necessidade parecida fiz o seguinte, criei um relatório em excel e exportei tem uma classe muito boa PHPExcel, vc cria o modelo e depois escreve os dados foi uma opção. somente estou tentando ajudar... abraços..

PD

Oi Eliezer,

Vou lhe adiantar uma solução vinda do futuro (próxima versão):

1) Passo 1:
Acrescente um método chamado getNativeWriter() na TTableWriterPdf:
public function getNativeWriter()
{
return $this->pdf;
}

2) Passo 2:

Crie 2 métodos novos na FPDF:

function setHeaderCallback($cb)
{
$this->headerCallback = $cb;
}

function setFooterCallback($cb)
{
$this->footerCallback = $cb;
}

3) Passo 3:

Altere os métodos Header() e Footer() da FPDF:
function Header()
{
if (is_callable($this->headerCallback))
{
call_user_func( $this->headerCallback, $this );
}
//To be implemented in your own inherited class
}

function Footer()
{
if (is_callable($this->footerCallback))
{
call_user_func( $this->footerCallback, $this );
}
//To be implemented in your own inherited class
}

4) Passo 4:
Use o código criado para definir o cabeçalho. Basta definir o método de escrita de cabeçalho.

$writer->getNativeWriter()->setHeaderCallback( array($this, 'header') );

Dentro do método, você recebe o objeto $pdf, que é um objeto FPDF. Ali, basta usar qualquer método da própria FPDF.
function header($pdf)
{
$pdf->SetFont('Arial','B',15);
// Move to the right
$pdf->Cell(80);
// Title
$pdf->Cell(30,10,'Title',1,0,'C');
// Line break
$pdf->Ln(20);
}

5) Passo 5: Correr pro abraco.

Att,
Pablo
AS

Estava com o mesmo problema e segui as instruções. O footer está ok. Mas o Header aparece em todas as páginas menos na primeira. Alguém sabe o que pode ser?
PD

Arthur,

Na primeira vez, você terá de chamar o método header() na mão...

Att,
Pablo
JH

Isso ja funciona na versão 2.0, se sim não entendi direito como chamar o footer.
LC

Estou usando o relatório tabular, então meu código ficou assim:

  1. <?php
  2.                 switch ($format)
  3.                 {
  4.                     case 'html':
  5.                         $tr = new TTableWriterHTML($widths);
  6.                         break;
  7.                     case 'pdf':
  8.                         $tr = new TTableWriterPDF($widths);
  9.                         $fpdf $tr->getNativeWriter();
  10.                         $fpdf->setHeaderCallback(array($this,'Cabecalho'));
  11.                         $this->Cabecalho($fpdf);
  12.                         //$fpdf->setFooterCallback(array($this,'Rodape'));
  13.                         break;
  14.                     case 'rtf':
  15.                         if (!class_exists('PHPRtfLite_Autoloader'))
  16.                         {
  17.                             PHPRtfLite::registerAutoloader();
  18.                         }
  19.                         $tr = new TTableWriterRTF($widths);
  20.                         break;
  21.                 }
  22. ?>