Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Criando Cabeçalhos e Rodapés nos Relatórios Este artigo é sobre a criação de cabeçalhos e rodapés utilizando o PDF Designer do Adianti Studio Professional. Desde que sugir, o PDF Designer é uma ótima ferramenta para a produção de relatórios utilizando o Adianti Framework. Ele faz uso da biblioteca FPDF, que permite produzir arquivos PDF sem depender imperativamente de extensões. No entanto, se houver necessidade de compactaçã...
GF
Criando Cabeçalhos e Rodapés nos Relatórios  
Fechado
Este artigo é sobre a criação de cabeçalhos e rodapés utilizando o PDF Designer do Adianti Studio Professional. Desde que sugir, o PDF Designer é uma ótima ferramenta para a produção de relatórios utilizando o Adianti Framework. Ele faz uso da biblioteca FPDF, que permite produzir arquivos PDF sem depender imperativamente de extensões. No entanto, se houver necessidade de compactação ou utilização de imagens no formato GIF será necessário utilizar as extensões php zlib e a gd respectivamente.

O PDF Designer permite que relatórios complexos sejam construídos de forma visual adotando o conceito WSIWYG (What You See Is What You Get). É realmente muito simples. Após a construção do relatório é necessário salvar o mesmo num arquivo de extensão pdf.xml. O padrão adianti recomenda salvar o arquivo gerado na pasta app/reports.

Para interpretar o relatório desenvolvido utiliza-se a classe TPDFDesigner. Ela é um adapter, que extende de FPDF. Isso significa que tudo aquilo que se faz com FPDF, é possível de ser feito no TPDFDesigner. Recomenda-se ler a documentação do FPDF e ganhar agilidade utilizando o PDF Designer do Adianti Studio Professional.

Até o momento em que este artigo foi escrito, a ferramenta PDF Designer não dispunha dos componentes Header e Footer. Motivo pelo qual surgiu a necessidade deste artigo. Afinal, todo relatório profissional apresenta cabeçalho e rodapé.

Para adicionar à geração de cabeçalhos e rodapés é recomendável criar outra classe, que herda de TPDFDesigner. Recomenda-se não fazer alterações diretamente na classe pai. Ao criar essa outra classe deve-se adicionar os métodos Header e Footer. Esses dois métodos são invocados automaticamente quando uma nova página é criada. Ao adicionar esses dois métodos você está sobrescrevendo os métodos da classe pai e definindo uma ação desejada. O código abaixo é uma sugestão:

  1. <?php 
  2. class TReportHeaderFooter extends TPDFDesigner
  3. {
  4.     public function Header()
  5.     {
  6.         $this->SetY(5);
  7.         $this->Cell(010utf8_decode('NOME DA SUA EMPRESA'),0,0,'C');
  8.     }
  9.     
  10.     
  11.     public function Footer()
  12.     {
  13.         $this->SetY(-12);
  14.         $this->Cell(010utf8_decode('PÁGINA ').$this->PageNo().' / {nb}',0,0,'C');
  15.     }    
  16. }
  17. ?>


Conforme pode ser visto, adicionar um cabeçalho e um rodapé foi muito fácil. Agora, ao invés de utilizar a classe TPDFDesigner, basta utilizar a classe TReportHeaderFooter (conforme código acima) na construção do relatório. Espero que este artigo seja útil e qualquer dúvida perguntem. Abraço!

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (11)


ES

Show de bola! excelente artigo!
PD

Mais um ótimo artigo do Guilherme!
FM

Bem legal, mas COMO CHAMA isso ? :)
PD

No lugar da TPDFDesigner:

$designer = new TPDFDesigner;
$designer->fromXml('app/reports/report.pdf.xml');
$designer->generate();

Uma vez que ela estende a TPDFDesigner, provê os mesmos recursos:

$designer = new TReportHeaderFooter;
$designer->fromXml('app/reports/report.pdf.xml');
$designer->generate();
RC

É possível adaptar pra eu utilizar com a classe TTableWriterPDF?
PD

Ricelli,

Já respondi em outro post seu.

Att,
AN

Pablo é possível buscar
arquivos do banco de abrir no Word, com adiant......
MS

Tenho uma dúvida. Preciso de dados que estão salvos em uma tabela para ser carregado no cabeçalho e não estou conseguindo fazer isso já que esta classe não está relacionado a nenhum parâmetros somente a extends TPDFDesigner.

Como posso chamar os dados de uma tabela neste cabeçalho?

JP

<?
Caro Engº Pablo Dall'Oglio, pode ser que é pouca atribuição que lhe atribuí.
Eu gostaria que criassem um novo canal na youtube que pudessem postar vários videos aulas, como acontece com outros Frameworks e plataformas de programação. Isto fará com que tenham mais clientes a comprarem o framework e será muito intuitivo. Eu ainda acho que, só no vosso site não é suficiente, voçês precisam mostrar o vosso produto ao mundo, o mundo precisa saber que o Adianti... existe.
Eu preciso tanto que voces criem uma biblioteca digital com vários vídeos semanais, uma colecção de vídeos.
Por favor pense no meu caso, pode ser que eu nao seja o unico a querer que este desejo se realize.
Abraços!!!!!!!!!!!!!!!!
?>
AR

Tenho uma dúvida e vou tentar explicar:

Tem um exemplo no Tutor de PDF desenhada com Nota Fiscal.

Como faço para limitar o número de linhas dos itens da nota fiscal, de modo que não sobreponha campos ao gerar o relatório?

Por exemplo, se o número de itens da Nota fiscal seja maior de 20, que seja acrescentada manis uma página.

Pode ocorrer que gere uma nota com 100 itens e necessite de várias páginas.
MG

Uma ajuda adicional dos colegas neste artigo.
Eu implementei a sugestão e funciona, porém se ao ler o "xml" gerado pelo studio eu não adicionar uma pagina "$pdf->addPage()" recebo a exception
PDF error: No page has been added yet
, mas adiciono a primeira página fica em branco.
Alguma dica de adicionar o conteudo do xml na primeira página para não ocorrer a exception?