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.