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.
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.
- <?php
- /**
- * method onGenerate()
- * Executed whenever the user clicks at the generate button
- */
- function onGenerate()
- {
- try
- {
- // open a transaction with database 'samples'
- TTransaction::open('zeromeia');
- // load all customers
- $repository = new TRepository('Cargos');
- $criteria = new TCriteria;
- $Cargos = $repository->load($criteria);
- $data = $this->form->getData();
- $this->form->validate();
- $designer = new TPDFDesigner;
- $designer->fromXml('app/reports/ListaCargos.pdf.xml');
- $designer->generate();
- $fill = TRUE;
- $designer->gotoAnchorXY('');
- $designer->SetFont('Arial', '', 8);
- $designer->setFontColorRGB( '#000000' );
- // cabeçalho
- $designer->Image('http://zeromeia.com/apps/zeromeia/app/images/ZeroMeia_640x286.jpg',20,18,-300);
- $designer->SetY(75);
- $designer->SetFont('Arial', '', 18);
- $designer->setFontColorRGB( '#000000' );
- $designer->Cell(560, 10, utf8_decode('Lista de Cargos'),0,0,'R');
- $designer->SetxY(50,86);
- $designer->SetFont('Arial', '', 10);
- $designer->setFontColorRGB( '#000000' );
- $designer->Cell(0, 10, utf8_decode('www.zeromeia.com'),0,0,'L');
- // $designer->Line(20,826,564,826);
- // grid background
- $fill = !$fill;
- // Dados da Lista do Relatório
- foreach ($Cargos as $Cargos)
- {
- $designer->gotoAnchorX('');
- $designer->Ln(18);
- $designer->Cell(60, 60, $Cargos->Id, 0, 0, 'C', $fill);
- $designer->Cell(200, 60, utf8_decode($Cargos->descricao), 0, 0, 'L', $fill);
- }
- // rodapé
- $designer->SetY(-12);
- $designer->SetFont('Arial', '', 8);
- $designer->setFontColorRGB( '#000000' );
- $designer->Cell(590, 10, utf8_decode('Pág. ').$designer->PageNo().' de {nb}',0,0,'R');
- $designer->SetY(-12);
- $designer->Cell(122, 10, utf8_decode('Zero Meia Tecnologia © 2018 '),0,0,'R');
- $designer->SetY(-12);
- $designer->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
- $designer->SetY(-12);
- $designer->Cell(410,10,utf8_decode(" - ".TSession::getValue('username')),0,1,'R'); //nome do usuário
- $file = 'app/output/Lista_Clientes.pdf';
- if (!file_exists($file) OR is_writable($file))
- {
- $designer->save($file);
- parent::openFile($file);
- }
- else
- {
- throw new Exception(_t('Permission denied') . ': ' . $file);
- }
- // new TMessage('info', 'Relatório gerado. Por favor, habilite os popups no seu navegador.');
- // close the transaction
- TTransaction::close();
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
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
Beleza Nataniel, mas como fazer isso?
Já tentei utilizando este método conforme o Pablo informou, mas não dá certo.
Obrigado Amigo.
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.