Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Criar cabeçalho em relatório tabular TTableWriterPDF Boa tarde Estou tentando seguir este exemplo http://www.adianti.com.br/forum/pt/view_833?cabecalho-de-relatorio-usando-ttablewriterpdf fornecido pelo Pablo para criar um cabeçalho e rodapé em um relatório tabular, mas não está dando certo. Alguém pode me ajudar? Como não tenho o adianti stúdio pro para simplificar essa tarefa, estou apanhando para fazer isso manualmente. Segue me...
RC
Criar cabeçalho em relatório tabular TTableWriterPDF  
Fechado
Boa tarde

Estou tentando seguir este exemplo www.adianti.com.br/forum/pt/view_833?cabecalho-de-relatorio-usando-t fornecido pelo Pablo para criar um cabeçalho e rodapé em um relatório tabular, mas não está dando certo.

Alguém pode me ajudar? Como não tenho o adianti stúdio pro para simplificar essa tarefa, estou apanhando para fazer isso manualmente.

Segue meu código fonte:
  1. <?php
  2. class SaldoFisicoFinanceiro extends TPage {
  3.     function __construct() {
  4.         parent::__construct();
  5.         try {
  6.             TTransaction::open('estoque');
  7.             $repository = new TRepository('Produto');
  8.             $criteria = new TCriteria;
  9.             $criteria->add(new TFilter('tipo''=''P'));
  10.             $criteria->add(new TFilter('saldofisico''>''0'));
  11.             $produtos $repository->load($criteria);
  12.             $format 'pdf';
  13.             if ($produtos) {
  14.                 $widths = array(40320606060);
  15.                 $tr = new TTableWriterPDF($widths);
  16.                 $tr->getNativeWriter()->setHeaderCallback(array($this'header'));
  17.                 if (!empty($tr)) {
  18.                     // create the document styles
  19.                     $tr->addStyle('title''Arial''10''BI''#222222''#DDDDDD');
  20.                     $tr->addStyle('datap''Arial''10''''#000000''#ffffff');
  21.                     $tr->addStyle('datai''Arial''10''''#000000''#ffffff');
  22.                     $tr->addStyle('total''Arial''14''BI''#222222''#ffffff');
  23.                     $tr->addStyle('header''Arial''14''BI''#222222''#DDDDDD');
  24.                     $tr->addStyle('footer''Times''12''BI''#2B2B2B''#DDDDDD');
  25.                     // add a header row
  26.                     $tr->addRow();
  27.                     $tr->addCell('RELATÓRIO DE SALDOS FÍSICO E FINANCEIRO DE PRODUTOS''center''header'5);
  28.                     // add titles row
  29.                     $tr->addRow();
  30.                     $tr->addCell('CÓD.''center''title');
  31.                     $tr->addCell('PRODUTO''left''title');
  32.                     $tr->addCell('UNIDADE''center''title');
  33.                     $tr->addCell('QTDE''center''title');
  34.                     $tr->addCell('SALDO (R$)''center''title');
  35.                     // controls the background filling
  36.                     $colour FALSE;
  37.                     // data rows
  38.                     $total 0;
  39.                     foreach ($produtos as $prod) {
  40.                         $style $colour 'datap' 'datai';
  41.                         $tr->addRow();
  42.                         $tr->addCell($prod->id'center'$style);
  43.                         $tr->addCell($prod->descricao'left'$style);
  44.                         $tr->addCell($prod->nome_unidade'center'$style);
  45.                         $tr->addCell(Uteis::numeroBrasil($prod->saldofisico), 'center'$style);
  46.                         $tr->addCell(Uteis::numeroBrasil($prod->valortotal), 'center'$style);
  47.                         $total+= $prod->valortotal;
  48.                         $colour = !$colour;
  49.                     }
  50.                     $valortotal Uteis::numeroBrasil($total);
  51.                     $tr->addRow();
  52.                     $tr->addCell('TOTAL: R$ ' $valortotal'rigth''total'5);
  53.                     // footer row
  54.                     $tr->addRow();
  55.                     $tr->addCell(date('d/m/Y H:i:s'), 'center''footer'5);
  56.                     // stores the file
  57.                     if (!file_exists("app/output/saldofisicofinanceiro.{$format}") OR is_writable("app/output/saldofisicofinanceiro.{$format}")) {
  58.                         $tr->save("app/output/saldofisicofinanceiro.{$format}");
  59.                     } else {
  60.                         throw new Exception(_t('Permission denied') . ': ' "app/output/saldofisicofinanceiro.{$format}");
  61.                     }
  62.                     parent::openFile("app/output/saldofisicofinanceiro.{$format}");
  63.                     // shows the success message
  64.                     new TMessage('info''Relatório gerado. Por favor, habilite popups no navegador.');
  65.                 }
  66.             } else {
  67.                 new TMessage('error''Nenhum registro foi encontrado.');
  68.             }
  69.             // fill the form with the active record data
  70.             //$this->form->setData($object);
  71.             // close the transaction
  72.             TTransaction::close();
  73.         } catch (Exception $e) { // in case of exception
  74.             // shows the exception error message
  75.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  76.             // undo all pending operations
  77.             TTransaction::rollback();
  78.         }
  79.     }
  80.     function header($pdf) {
  81.         $pdf->SetFont('Arial''B'15);
  82.         // Move to the right 
  83.         $pdf->Cell(80);
  84.         // Title 
  85.         $pdf->Cell(3010'Title'10'C');
  86.         // Line break 
  87.         $pdf->Ln(20);
  88.     }
  89. }
  90. ?>

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 (9)


FC

Segue este artigo
www.adianti.com.br/forum/pt/view_851?criando-cabecalhos-e-rodapes-no
RC

Eu tentei seguir esse exemplo ai mas não funcionou. Estou usando o template ERP3 e percebi que não há essa classe TPDFDesigner no Framework.

Achei uma tal de AdiantPDFDesigner mas a mesma não tem métodos Header e nem Footer.

Alguma sugestão? Será que essa TPDFDesigner foi descontinuada?
FC

Rapaz olhei tudo agora como assim a classe não existe mais se ainda utilizo. bem somente depois percebi em seu post que não usa o studio pro na versão 3 a equipe do adianti realmente mudou o nome da classe, mas manteve um alias para o nome então continua funcionando.

Porém vc está fazendo a mão, uma solução seria vc criar uma classe e estender a TTableWriterPDF criando uma seção header e footer igual como está no artigo.




RC

Isso mesmo, estou fazendo na mão pois não tenho o studio pro! Então se eu criar uma classe e estender de TTableWriterPDF e criar uma seção Header e Footer como no artigo é pta funcionar?

Mas vou ter que salvar como .xml ou não?
FC

Eu salvaria como essa classe TableWritePDF colocaria outro nome incluiria a seção header e footer e chamava essa nova classe igual no artigo vou dar uma olhada nessa classe no livro para ver como ela é feita sinceramente nunca usei pois uso o studio pró que facilita muito nessa parte de reports.
RC

Tem como disponibilizar o código da classe TPDFDesigner? Vou tentar criar uma outra classe me baseando nela.
FC

Ricelli
No seu caso aconselho a usar a FPDF direto. www.fpdf.org/
RC

Pois é Felipe, imagino que terei que fazer isso mesmo.

De qualquer forma, obrigado pelo help.
PD

Já tem solução:

www.adianti.com.br/forum/pt/view_833?cabecalho-de-relatorio-usando-t

Abraço,