Criando relatórios no formato PDF
Um grande recurso que esta classe possui é o método:
SetAutoPageBreak(boolean auto [, double margin])
Ele permite ajustar a classe (na verdade é a opção padrão) para fazer quebra de páginas automática. Sabe aquele problema de ter que contar quantas linhas cabem na folha de papel na hora de imprimir e imprimir o rodapé, dar o comando para nova página, imprimir o cabeçalho e incrementar o número de páginas? Pois é, não precisa se preocupar com isso...
Outro recurso que ajuda muito é que podermos sobrescrever os métodos Header() e Footer() para colocarmos o que quisermos nele.
Abaixo segue um exemplo de uma classe baseada na FPDF que eu fiz para geração de relatórios, nela eu adicionei o logo da empresa, o nome do relatório, imprimindo "Página X/Total", etc.
SetAutoPageBreak(boolean auto [, double margin])
Ele permite ajustar a classe (na verdade é a opção padrão) para fazer quebra de páginas automática. Sabe aquele problema de ter que contar quantas linhas cabem na folha de papel na hora de imprimir e imprimir o rodapé, dar o comando para nova página, imprimir o cabeçalho e incrementar o número de páginas? Pois é, não precisa se preocupar com isso...
Outro recurso que ajuda muito é que podermos sobrescrever os métodos Header() e Footer() para colocarmos o que quisermos nele.
Abaixo segue um exemplo de uma classe baseada na FPDF que eu fiz para geração de relatórios, nela eu adicionei o logo da empresa, o nome do relatório, imprimindo "Página X/Total", etc.
<?php # # Grave esse script com o nome de pdf.php # require_once ("fpdf.php"); class PDF extends FPDF { var $nome; // nome do relatorio var $cabecalho; // cabecalho para as colunas function PDF($or = 'P') { // Construtor: Chama a classe FPDF $this->FPDF($or); } function SetCabecalho($cab) { // define o cabecalho $this->cabecalho = $cab; } function SetName($nomerel) { // nomeia o relatorio $this->nome = $nomerel; } function Header() { $this->AliasNbPages(); // Define o numero total de paginas para a macro {nb} $this->Image('logo.jpg', 5, 5, 70); // importa uma imagem $this->SetFont('Arial', 'B', 12); $this->SetX(80); $this->Cell($this->GetStringWidth($this->nome), 10, $this->nome); $this->SetFont('Arial', '', 10); $this->SetX(-30); $this->Cell(30, 10, "Página: ".$this->PageNo()."/{nb}", 0, 1); // imprime página X/Total de Páginas $this->SetX(-10); $this->line(10, 18, $this->GetX(), 18); // Desenha uma linha if ($this->cabecalho) { // Se tem o cabecalho, imprime $this->SetFont('Arial', '', 10); $this->SetX(10); $this->Cell($this->GetStringWidth($this->cabecalho), 5, $this->cabecalho, 0, 1); } $this->SetXY(10, 25); } function Footer() { // Rodapé : imprime a hora de impressao e Copyright $this->SetXY(-10, -5); $this->line(10, $this->GetY()-2, $this->GetX(), $this->GetY()-2); $this->SetX(0); $this->SetFont('Courier', 'BI', 8); $data = strftime("%d/%m/%Y às %T"); $this->Cell(100, 6, "(c)CMA - Impresso : ".$data, 0, 0, 'R'); } } ?>
Como crio um relatório dinâmico... onde o arquivo que gera o FPDF receba uma variável de um form pelo método POST ou GET e faz a consulta no Banco de dados...? Atualmente eu consigo gerar um relatório com o FPDF, mas a condição da consulta é um valor fixo, predeterminado... EX.: a consulta é SELECT * FROM ALUNOS WHERE ALUNOS = "MARIA"... gostaria de usar WHERE ALUNOS = "$nome"... onde $nome é uma variável recebida pelo método POST de um formulário... Grato!
23/04/2009 12:36pm
(~15 anos atrás)
Estou com problemas de acentuação...
Faço uma pesquisa no BD e quando imprimo os dados em pdf, no lugar das letras acentuadas aparecem caracteres estranhos...
Estou usando SQL SERVER
Alguém tem alguma dica????
Faço uma pesquisa no BD e quando imprimo os dados em pdf, no lugar das letras acentuadas aparecem caracteres estranhos...
Estou usando SQL SERVER
Alguém tem alguma dica????
09/08/2006 5:59pm
(~18 anos atrás)
Minoria,
Eu tinha o mesmo problema e resolvi editando o arquivo .php
e retirei o caracter enter e espaços após o ultimo comando "?>"
Eu tinha o mesmo problema e resolvi editando o arquivo .php
e retirei o caracter enter e espaços após o ultimo comando "?>"
01/06/2006 7:42am
(~18 anos atrás)
Alguem poderia me ajudar? Não sei como resolver este erro.
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/plancap/consulta.php:3) in /srv/www/htdocs/plancap/fpdf/fpdf.php on line 1022
FPDF error: Some data has already been output to browser, can't send PDF file
19/05/2006 11:11am
(~18 anos atrás)
Olá pessoal,
Gostaria de saber como faço para inserir uma imagem gerada com a JpGraph num pdf gerado com a pdflib.
<?php
$graph = new Graph(...);
// Code to create the graph
// .........................
// .........................
// Put the image in a PDF page
$im = $graph->Stroke(_IMG_HANDLER);
$pdf = pdf_new();
pdf_open_file($pdf, "");
// Convert the GD image to somehing the
// PDFlibrary knows how to handle
$pimg = pdf_open_memory_image($pdf, $im);
pdf_begin_page($pdf, 595, 842);
pdf_add_outline($pdf, "Page 1");
pdf_place_image($pdf, $pimg, 0, 500, 1);
pdf_close_image($pdf, $pimg);
pdf_end_page($pdf);
pdf_close($pdf);
$buf = pdf_get_buffer($pdf);
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
echo $buf;
pdf_delete($pdf);
?>
Está acontecendo o seguinte erro:
Fatal error: Call to undefined function: pdf_open_memory_image()
Estou usando php 4.3.10
JpGraph v1.20.2
PDFlib GmbH 6.0.p1
O está acontecendo?
Gostaria de saber como faço para inserir uma imagem gerada com a JpGraph num pdf gerado com a pdflib.
<?php
$graph = new Graph(...);
// Code to create the graph
// .........................
// .........................
// Put the image in a PDF page
$im = $graph->Stroke(_IMG_HANDLER);
$pdf = pdf_new();
pdf_open_file($pdf, "");
// Convert the GD image to somehing the
// PDFlibrary knows how to handle
$pimg = pdf_open_memory_image($pdf, $im);
pdf_begin_page($pdf, 595, 842);
pdf_add_outline($pdf, "Page 1");
pdf_place_image($pdf, $pimg, 0, 500, 1);
pdf_close_image($pdf, $pimg);
pdf_end_page($pdf);
pdf_close($pdf);
$buf = pdf_get_buffer($pdf);
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
echo $buf;
pdf_delete($pdf);
?>
Está acontecendo o seguinte erro:
Fatal error: Call to undefined function: pdf_open_memory_image()
Estou usando php 4.3.10
JpGraph v1.20.2
PDFlib GmbH 6.0.p1
O está acontecendo?
10/05/2006 1:50pm
(~18 anos atrás)
Ola!
Tenho um sistema em php, adorei seu artigo auterei os meus relatorios para pdf.
fiz todos os seu passos,mas nao aparece nada no meu browser, nem com o adobe aberto simplimente a tela fica em branco. Tive a ideia de instalar o dabe mais recente em algumas máquinas e fazer aceso ao meu sistema. com o reader 5.0 nada aparece, com o 6.0 nada aparece só funcionou no 7.0, porem não posso trabalahr com ele pois meu cliente não tem maquina para isso preciso q funcione no 5.0 o que pode estar errado?
Tenho um sistema em php, adorei seu artigo auterei os meus relatorios para pdf.
fiz todos os seu passos,mas nao aparece nada no meu browser, nem com o adobe aberto simplimente a tela fica em branco. Tive a ideia de instalar o dabe mais recente em algumas máquinas e fazer aceso ao meu sistema. com o reader 5.0 nada aparece, com o 6.0 nada aparece só funcionou no 7.0, porem não posso trabalahr com ele pois meu cliente não tem maquina para isso preciso q funcione no 5.0 o que pode estar errado?
10/04/2006 11:36am
(~18 anos atrás)
mt bom artigo, parabens, consegui gerar alguns relatorios em pdf estudando seu artigo.
a minha dúvida é a seguinte: qual a sintaxe para colocar negrito, italico, sublinhado no meio de uma multicell, pegando apenas parte dela para formatar.
por exemlo: o negrito do html
valeu!
a minha dúvida é a seguinte: qual a sintaxe para colocar negrito, italico, sublinhado no meio de uma multicell, pegando apenas parte dela para formatar.
por exemlo: o negrito do html
valeu!
09/03/2006 4:52am
(~18 anos atrás)
Ola Clever, cara, estou com um probleminha, muitas vezes o conteudo das celulas "estoura" as margens e ele nao quebra a linha, existe alguma configuração para ser feita pra sanar esse problema ou alguma sijestao de como resolver isso??
obrigado!!!
obs: excelente tutorial!!!!
obrigado!!!
obs: excelente tutorial!!!!
18/01/2006 5:10am
(~19 anos atrás)
Ae Clever,
somente para comentar... Seu tutorial ajudou e está ajudando e muito a criação de relatórios em PDF. Tendo como ponto de partida seu tutorial, já brinquei e muito com a geração de PDF´s.
Excelente tutorial.
Valeu.
somente para comentar... Seu tutorial ajudou e está ajudando e muito a criação de relatórios em PDF. Tendo como ponto de partida seu tutorial, já brinquei e muito com a geração de PDF´s.
Excelente tutorial.
Valeu.
03/11/2005 7:15am
(~19 anos atrás)
FPDF error: Alpha channel not supported: C:/xampp/htdocs/imaster/110/linha.png
Help-me please.
Alexandre P. Menezes