Lançado Adianti Framework 7.6!
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. ?>