Autor Tópico: Template Cabeçalho no PDF  (Lida 5126 vezes)

Erikson Flávio

  • Iniciante
  • **
  • Mensagens: 71
    • Email
Template Cabeçalho no PDF
« Online: Abril 15, 2013, 01:16:30 am »
Caros colegas,

Procurei de todas formas e não consegui encontrar uma forma de utilizar templates para os cabeçalhos das aplicações Report PDF.
Não existe mesmo uma forma de usar isso, como fazemos com as aplicações de formulários e consultas?
Tenho mesmo que em todo PDF criado criar e posicionar todos os objetos do cabeçalho, ainda que, geralmente, isso seja igual em todos os relatórios do sistema?

Só para constar, estou migrando um sistema para SC 7 e o Report PDF é fantástico e, para evitar problemas com configurações locais de impressoras, todos meus relatórios serão em PDF. Mas estou achando um tanto quanto absurdo se não tiver uma forma de usar templates nos cabeçalhos e rodapés desse tipo de aplicação.
Desenvolvedor PHP/Java/Oracle/MySQL - Veterano
ScriptCase - Intermediário

Wennys Carlos

  • Avançado
  • ****
  • Mensagens: 254
    • Email
Re:Template Cabeçalho no PDF
« Responder #1 Online: Abril 15, 2013, 10:02:12 am »
É por isso que prefiro gerar meus reports PDF fora do SC, utilizando a mesma FPDF, porém criando os scripts por fora.

Isso me dá mais flexibilidade e posso, por exemplo, definir o cabeçalho a ser utilizado em todas os reports.

Esse cabeçalho é definido implementando-se método Header().

Abraço.

Wennys Carlos
Skype: wennys.carlos
Wennys Carlos

Caroline

  • Iniciante
  • **
  • Mensagens: 77
Re:Template Cabeçalho no PDF
« Responder #2 Online: Abril 15, 2013, 10:57:39 am »
Para tal, eu criei uma biblioteca que escreve um cabeçalho padrão e utilizo em todos os report pdf.
Não vejo grandes problemas nisso.
Plugins Scriptcase:
Gerador de etiquetas: http://infinitusweb.net.br/pluginsc/6/etiquetaspdf/

Erikson Flávio

  • Iniciante
  • **
  • Mensagens: 71
    • Email
Re:Template Cabeçalho no PDF
« Responder #3 Online: Abril 15, 2013, 11:04:38 am »
Carol, poderia detalhar a forma como implementou e utiliza essa biblioteca nos PDFs?

Sou sou leigo nem preguiçoso, mas só quero evitar perder tempo (coisa que não ando tendo muito) descobrindo sozinho como implementar e usar isso.

Obrigado!
Desenvolvedor PHP/Java/Oracle/MySQL - Veterano
ScriptCase - Intermediário

Erikson Flávio

  • Iniciante
  • **
  • Mensagens: 71
    • Email
Re:Template Cabeçalho no PDF
« Responder #4 Online: Abril 15, 2013, 11:08:19 am »
Para terem uma idéia, segue o template que tinha criado para usar nos PDFs, achando que tinha como:

<style>
      #tab_cab_rel {width: 100%; border-bottom: 2px solid black;}
      .centro {width: 100%; }
   .direita {width: 240px; }
   #img_logo_rel { width: 170px; }
   #empresa_rel { width: 100%; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; color: #000000; }
   #titulo_rel  { width: 100%; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; color: #000000; }
   #filtro_rel  { width: 100%; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; color: #000000; }
   #data_rel    { width: 170px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: right; color: #000000; }
   #paginas_rel { width: 170px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: right; color: #000000; }
</style>

<table id="tab_cab_rel">
      <tr>
         <td rowspan="3" class="logo"><img id="img_logo_rel" src="{img_logo}"></td>
         <td class="centro"><span id="empresa_rel">{nome_empresa}</span></td>
      </tr>
      <tr>
         <td class="centro"><span id="titulo_rel">{titulo_relatorio}</span></td>
         <td class="direita"><span id="paginas_rel">{numero_pagina}</span></td>
      </tr>
      <tr>
         <td class="centro"><span id="filtro_rel">{filtro}</span></td>
         <td class="direita"><span id="data_rel">{data}</span></td>
    </tr>
</table>
Desenvolvedor PHP/Java/Oracle/MySQL - Veterano
ScriptCase - Intermediário

Caroline

  • Iniciante
  • **
  • Mensagens: 77
Re:Template Cabeçalho no PDF
« Responder #5 Online: Abril 15, 2013, 11:20:52 am »
Esse código não funciona com arquivos PDF. Isso é um código HTML.
Existem classes que convertem código HTML em pdf, que talvez possa incorporar na classe fpdf utilizada pelo SC.

Consulte: http://fpdf.org
Plugins Scriptcase:
Gerador de etiquetas: http://infinitusweb.net.br/pluginsc/6/etiquetaspdf/

Erikson Flávio

  • Iniciante
  • **
  • Mensagens: 71
    • Email
Re:Template Cabeçalho no PDF
« Responder #6 Online: Abril 15, 2013, 11:30:25 am »
Carol,

Você não entendeu o que eu tinha feito. Não sou leigo a ponto de achar que esse código html seria reconhecido na área de codificação do PDF. Esse html é de um template que criei nos templates de cabeçalho do SC e esperava ter a opção de escolhê-lo no cabeçalho do Report PDF, mas não há essa opção.

Sobre estudar o fpdf e para criar uma biblioteca, posso fazer isso sem problemas, mas o propósito de se usar uma ferramenta como o SC é justamente não precisar implementar coisas básicas e rotineiras como um cabeçalho de relatório,não acham?
Desenvolvedor PHP/Java/Oracle/MySQL - Veterano
ScriptCase - Intermediário

Caroline

  • Iniciante
  • **
  • Mensagens: 77
Re:Template Cabeçalho no PDF
« Responder #7 Online: Abril 15, 2013, 12:54:11 pm »
A ferramenta não disponibiliza essa opção para aplicações do tipo REPORT PDF.
Um RAD não pode fazer tudo infelizmente.
Plugins Scriptcase:
Gerador de etiquetas: http://infinitusweb.net.br/pluginsc/6/etiquetaspdf/

mrcgomes

  • Intermediário
  • ***
  • Mensagens: 220
    • Email
Re:Template Cabeçalho no PDF
« Responder #8 Online: Abril 15, 2013, 01:15:27 pm »
Oi Carol, então eu poderia criar um formulário "blank" e adicionar o código "PHP" do FPDF?
Seria isso o contorno?
É possível colocar esta bilbioteca como uma macro dentro do SC?

Marcelo

Caroline

  • Iniciante
  • **
  • Mensagens: 77
Re:Template Cabeçalho no PDF
« Responder #9 Online: Abril 15, 2013, 01:25:04 pm »
Pode sim usar Blank com a classe fpdf, mas pode também utilizar a própria report pdf, que já vem com o select principal e opções de filtro, e no seu código, você atribui a chamada a função (biblioteca) que escreve o cabeçalho ou rodapé num padrão a ser utilizado em todas aplicações desse tipo.
A biblioteca por si só pode buscar a imagem de logo, nome da empresa, data hora, ou receber como parâmetros esses valores, e  função apenas escreve no pdf posicionando adequadamente os campos.
Plugins Scriptcase:
Gerador de etiquetas: http://infinitusweb.net.br/pluginsc/6/etiquetaspdf/

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Re:Template Cabeçalho no PDF
« Responder #10 Online: Abril 16, 2013, 03:08:16 pm »
Prezados, olha como tô me virando..

http://www.youtube.com/watch?v=_Mr0K8r5uB8
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Erikson Flávio

  • Iniciante
  • **
  • Mensagens: 71
    • Email
Re:Template Cabeçalho no PDF
« Responder #11 Online: Abril 16, 2013, 11:43:19 pm »
Jean,

Obrigado pela sua boa vontade de compartilhar sua solução. Mas acho que está tendo um trabalhão atoa nesse seu exemplo, porque está desenhando as linhas/quadros com comandos fpdf.
Para criar relatórios que não contêem apenas texto (NF, Holerit, NS, etc), é mais fácil você criar uma imagem com sua ferramenta de imagens de preferência (a melhor para mim é o Corel Draw, mas conegue fazer isso até no PaintBrush) e usar essa imagem com fundo do seu pdf (Configurações -> Configuração da Visualização do PDF -> Imagem). Só lembre-se de sempre criar a imagem com resolução adequada ao tamanho a ser impresso e na mesma proporção (aspecto).
Um exemplo de uso de imagem de fundo dessa forma (só que acho que em outro tipo de aplicação, mas a funcionamento é o mesmo) está na base de conhecimento do SC para geração de Boleto Bancário. Vale a pena dar uma olhada.

Abraço!

Ahhh! Estou criando uma biblioteca usando o fpdf para customizar meus cabeçalhos. Assim que terminar posto a solução nesse tópica para os colegas.
Desenvolvedor PHP/Java/Oracle/MySQL - Veterano
ScriptCase - Intermediário

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Re:Template Cabeçalho no PDF
« Responder #12 Online: Abril 17, 2013, 12:39:04 pm »
Jean,

Obrigado pela sua boa vontade de compartilhar sua solução. Mas acho que está tendo um trabalhão atoa nesse seu exemplo, porque está desenhando as linhas/quadros com comandos fpdf.
Para criar relatórios que não contêem apenas texto (NF, Holerit, NS, etc), é mais fácil você criar uma imagem com sua ferramenta de imagens de preferência (a melhor para mim é o Corel Draw, mas conegue fazer isso até no PaintBrush) e usar essa imagem com fundo do seu pdf (Configurações -> Configuração da Visualização do PDF -> Imagem). Só lembre-se de sempre criar a imagem com resolução adequada ao tamanho a ser impresso e na mesma proporção (aspecto).
Um exemplo de uso de imagem de fundo dessa forma (só que acho que em outro tipo de aplicação, mas a funcionamento é o mesmo) está na base de conhecimento do SC para geração de Boleto Bancário. Vale a pena dar uma olhada.

Abraço!

Ahhh! Estou criando uma biblioteca usando o fpdf para customizar meus cabeçalhos. Assim que terminar posto a solução nesse tópica para os colegas.
Erikson, eu começei justamente por esse método, no entanto o mesmo se limita a 1(uma) pagina... quando o relatório passa de 1(uma) pagina a segunda fica sem a imagem de fundo, logo há a necessidade de usar esse recurso que mostrei... e te garanto que é menos massante que criar o layout completo no fpdf...
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Erikson Flávio

  • Iniciante
  • **
  • Mensagens: 71
    • Email
Re:Template Cabeçalho no PDF
« Responder #13 Online: Abril 17, 2013, 12:55:39 pm »
Caros colegas,

Acabei desenvolvendo uma solução de criar scripts FPDF para o cabeçalho e o rodapé que posteriormente colocarei em uma lib para aproveitar em todos os meus Reports PDF.
Estou compartilhando aqui o que fiz para que os interessados vejam como fiz para usar e, se for o caso, sugerir melhorias.

PDFs de registro por página (NFe, Boleto, Recibo, etc): apenas uso a imagem com o layout (jpg ou png) como fundo (como mencionado na minha msg anterior deste tópico) e organizo os campos usando os recursos nativos/normais do Report PDF do SC.

PDFs de registros por linha, uso comando FPDF para compor o cabeçalho e rodapé e os registros eu organizo usando recursos nativos do SC. Abaixo estão os scripts usados em Cab/Rod:

Observação: Configurações: Registros por linha; A4; Milímetros; margens(CBDE) 8,15,5,5; Altura Inicial 30

LayoutPDF -> Codigo -> Cabeçalho:

/***
* variaveis usadas ( prefixos: g global (sistema todo) - i instancia (aplicacao) - s string
* gs_razao_social - global criada no login
* is_titulo - atributo criado na aplicacao e setado no evento onApplicationInit
*/

// coloca o logo no cabecalho (se não tiver imagem única, use variavel aqui no caminho)
$this->Image('../_lib/img/grp__NM__logo.png', 5, 10, 40, 12);

// escreve o nome da empresa na 1a linha do cabecalho - centralizado
$this->SetFont('Arial', '', 12);
$this->Cell(0, 5, utf8_decode([gs_razao_social]), 0, 0, 'C');

// escreve a data e hora atual na 1a linha do cabecalho - a direita
$this->SetFont('Arial', '', 8 );
$this->Cell(0, 5, date('d/m/Y - h:m'), 0, 0, 'R');

// escreve o titulo 2a linha do cabecalho - centralizado
$this->SetY(14);
$this->SetFont('Arial', '', 10);
$this->Cell(0, 5, utf8_decode([is_titulo]), 0, 0, 'C');

// escreve o filtro 3a linha do cabecalho - centralizado
$this->SetY(20);
$this->SetFont('Arial', 'I', 9 );
$this->Cell(0, 5, utf8_decode(is_filtro), 0, 0, 'C');

// linha que separa o cabecalho dos registros
$pdf->Line(6, 25, 203, 25);

LayoutPDF -> Codigo -> Rodapé:

// linha que separa o rodape
$pdf->Line(6, 284, 203, 284);

// posiciona o cursor logo abaixo da linha
$this->SetY(286);

// seta a fonte do rodape
$this->SetFont('Arial', 'I', 8 );

// escreve o texto da esquerda
$this->Cell(0, 0, utf8_decode('SisXX - Sistema de Xxxxxxxx Xxxxxx'), 0, 0, 'L');

// escreve o texto da direita. no caso, o nome do sistema
$this->Cell(0, 0, utf8_decode('Pagina ') . $this->PageNo() . ' de {nb}', 0, 0, 'R');



Melhorias:
- Colocar isso numa biblioteca e apenas chamar passando as variáveis locais ou de instância necessárias.
- No rodapé, o texto 'Pagina' está sem acento porque um bug do SC7 faz acentos nessas seções zicarem em símbolos. Quem quiser pode usar um atributo de aplicação com o texto e instanciá-lo com acento no evento onApplicationInit que resolve (estou sem saco para fazer isso... rs).

Quem tiver solução melhor ou mesmo melhorias nessa, sinta-se à vontade. Afinal, a união faz açúcar!!

Abraço a todos.
« Última modificação: Abril 17, 2013, 12:57:41 pm por Erikson Flávio »
Desenvolvedor PHP/Java/Oracle/MySQL - Veterano
ScriptCase - Intermediário

Bernhard

  • Administrator
  • Expert
  • *****
  • Mensagens: 1619
Re:Template Cabeçalho no PDF
« Responder #14 Online: Abril 20, 2013, 02:15:44 pm »
Erikson,

Encaminhei sua sugestão para nossa equipe.

att,
Bernhard Bernsmann