Repetir rodapé e cabeçalho no PDF do Adianti Studio Boa noite pessoal. Tenho uma Lista de Cargos e criei o pdf no Designer, até ai tudo bem, abre certinho com os dados. O problema está quando existem mais de uma página ele não repete o cabeçalho e tampouco o rodapé. Existe um método para fazer isso? acho que sim, claro, só que já procurei, utilizei inclusive o recurso que o Pablo postou, mas nada, ou repete somente o cabeçalho ou rep...
CM
Repetir rodapé e cabeçalho no PDF do Adianti Studio  
Boa noite pessoal.

Tenho uma Lista de Cargos e criei o pdf no Designer, até ai tudo bem, abre certinho com os dados.
O problema está quando existem mais de uma página ele não repete o cabeçalho e tampouco o rodapé.
Existe um método para fazer isso? acho que sim, claro, só que já procurei, utilizei inclusive o recurso que o Pablo postou, mas nada, ou repete somente o cabeçalho ou repete o rodapé.
Se puderem ajudar, agradeço imensamente.

 
  1. <?php
  2. /**
  3. * method onGenerate()
  4. * Executed whenever the user clicks at the generate button
  5. */
  6. function onGenerate()
  7. {
  8. try
  9. {
  10. // open a transaction with database 'samples'
  11. TTransaction::open('zeromeia');
  12. // load all customers
  13. $repository = new TRepository('Cargos');
  14. $criteria = new TCriteria;
  15. $Cargos = $repository->load($criteria);
  16. $data = $this->form->getData();
  17. $this->form->validate();
  18. $designer = new TPDFDesigner;
  19. $designer->fromXml('app/reports/ListaCargos.pdf.xml');
  20. $designer->generate();
  21. $fill = TRUE;
  22. $designer->gotoAnchorXY('');
  23. $designer->SetFont('Arial', '', 8);
  24. $designer->setFontColorRGB( '#000000' );
  25. // cabeçalho
  26. $designer->Image('http://zeromeia.com/apps/zeromeia/app/images/ZeroMeia_640x286.jpg',20,18,-300);
  27. $designer->SetY(75);
  28. $designer->SetFont('Arial', '', 18);
  29. $designer->setFontColorRGB( '#000000' );
  30. $designer->Cell(560, 10, utf8_decode('Lista de Cargos'),0,0,'R');
  31. $designer->SetxY(50,86);
  32. $designer->SetFont('Arial', '', 10);
  33. $designer->setFontColorRGB( '#000000' );
  34. $designer->Cell(0, 10, utf8_decode('www.zeromeia.com'),0,0,'L');
  35. // $designer->Line(20,826,564,826);
  36. // grid background
  37. $fill = !$fill;
  38. // Dados da Lista do Relatório
  39. foreach ($Cargos as $Cargos)
  40. {
  41. $designer->gotoAnchorX('');
  42. $designer->Ln(18);
  43. $designer->Cell(60, 60, $Cargos->Id, 0, 0, 'C', $fill);
  44. $designer->Cell(200, 60, utf8_decode($Cargos->descricao), 0, 0, 'L', $fill);
  45. }
  46. // rodapé
  47. $designer->SetY(-12);
  48. $designer->SetFont('Arial', '', 8);
  49. $designer->setFontColorRGB( '#000000' );
  50. $designer->Cell(590, 10, utf8_decode('Pág. ').$designer->PageNo().' de {nb}',0,0,'R');
  51. $designer->SetY(-12);
  52. $designer->Cell(122, 10, utf8_decode('Zero Meia Tecnologia © 2018 '),0,0,'R');
  53. $designer->SetY(-12);
  54. $designer->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  55. $designer->SetY(-12);
  56. $designer->Cell(410,10,utf8_decode(" - ".TSession::getValue('username')),0,1,'R'); //nome do usuário
  57. $file = 'app/output/Lista_Clientes.pdf';
  58. if (!file_exists($file) OR is_writable($file))
  59. {
  60. $designer->save($file);
  61. parent::openFile($file);
  62. }
  63. else
  64. {
  65. throw new Exception(_t('Permission denied') . ': ' . $file);
  66. }
  67. // new TMessage('info', 'Relatório gerado. Por favor, habilite os popups no seu navegador.');
  68. // close the transaction
  69. TTransaction::close();
  70. }
  71. catch (Exception $e) // in case of exception
  72. {
  73. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  74. TTransaction::rollback();
  75. }
  76. }
  77. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


NR

Se o cabeçalho e rodapé foram criados através do designer e você quer manter dessa maneira, imagino que tenha que desabilitar a quebra automática de página e controlar manualmente, chamando a função $designer->generate(); para cada página que quiser adicionar.

Outra opção é usar as funções header e footer diretamente, pois a TPDFDesigner herda a FPDF:
www.fpdf.org/en/tutorial/tuto2.htm
CM

Beleza Nataniel, mas como fazer isso?
Já tentei utilizando este método conforme o Pablo informou, mas não dá certo.
Obrigado Amigo.
CM

Obrigado pelas dicas Nataniel, resolvi utilizando as dicas deste post:
www.adianti.com.br/forum/pt/view_851?criando-cabecalhos-e-rodapes-no

Reparei que se usarmos qualquer objeto no Designer ele não exibe na primeira página, então exclui todos os objetos e criei o PDF na grid e com a classe de cabeçalho e rodapé.

Muito obrigado mesmo amigo.