Ir para conteúdo


Foto

Exemplo Geração de Relatório com FPDF + PHP


  • Por favor, faça o login para responder
6 respostas neste tópico

#1 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3491 posts
  • LocationBelo Horizonte

Postado 15 June 2011 - 09:52

Senhores,

Sei que o fórum é sobre ExtJS, mas como a linguagem Server é pertinente no desenvolvimento irei postar um ZIP com um exemplo de criação de Relatórios com a Biblioteca FPDF.
Tecnologias  utilizadas:
PHP 5.3.5
Apache 2.2.17
MySQL 5.5.8

Mode de usar:
Extraia este no DOCUMENT_ROOT do seu servidor WEB, utilize o arquivo SQL para criar o Banco de Dados.
A Classe  PDF tem os metodos genérios para gerar o relatório como "criarTabelaBasica" que irá criar um relatório básico onde este recebe os parametros de cabeçalho, registros e largura de cada coluna.
O arquivo PASTA_DO_PROJETO/RelatorioContatos.php é o exemplo de como gerar o relatório com o FPDF. Abaixo o código deste:
<?php
// Incluinda a Classe para Gerar os PDFs
require_once ('class/PDF.php');

// Inserindo a Classe do Banco.
require_once("class/Relatorio.php");

// Criando os Objetos das Classes
$objPDF = new PDF(); // PDF
$objRelatorio = new Relatorio(); // Contato

// Array que receberá os dados
$registros 	= array(); // Array com os registros do Banco
$header 	= array(); // Cabeçalho do PDF
$colunas 	= array(27,28,10,60,22,25,25,29,8,35,50); // Dimensões das Colunas do PDF
$titulo 	= 'Listagem dos Contatos Cadastrados';

// Listando os Contatos
$rs = $objRelatorio->criarRelatorioDosContatos();

// LOOP para gerar o cabeçalho do PDF
for($i=0; $i<$objRelatorio->num_fields($rs); $i++){
	// Recebendo o nome do Cabeçalho
	$header[] = $objRelatorio->field_name($rs,$i); 
}

// Criando um Array com os dados da Consulta
$registros = $objRelatorio->criarArray($rs);

// Criando o PDF
$objPDF->setTitulo($titulo); // Setando o Título do Relatório
$objPDF->AddPage('L','A4'); // Adicionando uma nova página
$objPDF->criarTabelaBasica($header, $registros,$colunas); // Criando a Tabela com os dados
$objPDF->Output($titulo.'.pdf','I'); // Enviando para o Browser o relatório
?>
No código acima é demonstrado como utilizar a Classe PDF. primeiramente foi incluido os arquivos das Classes criado os objetos destas;
São criados os arrays e a string padrão que será enviada para o metodo da Classe PDF como os registros da consulta, título do Relatório, etc. É mto importante o array $colunas, pois este tem a largura de cada coluna do Relatório ou seja se tiver 4 indíces para o cabeçalho terão 4 indices de largura de cada coluna;
Depois através do metodo "criarRelatorioDosContatos" da Classe Relatorio eu faço uma consulta e retorno os dados desta para o meu código;
Crio o Cabeçalho do Relatório utilizando o metodo "field_name" da Classe Relatorio;
Após criar o relatório utilizo o metodo "criarArray" da Classe Relatorio para gerar um Array com os dados da consulta;
Depois de toda criação de dados eu informo os dados para o objeto da Classe PDF para a geração do Relatório e utilizo o metodo "criarTabelaBasica" da Classe PDF para gerar o relatório básico da consulta e exibo na Tela para o usuário.

Sei que o código não está todo em OO, pois qdo fiz este exemplo era só para ajudar um amigo a mexer com FPDF, mas o conceito está ai, sugestões são bem vindas.
Espero que este possa auxiliar mtos nas criações de relatório. Estou também colocando o PDF do resultado.

Obs.: Para que este funcione deve ser baixado a LIB do FPDF e colocar na pasta lib do projeto com o nome de fpdf.

Abraços.

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#2 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 15 June 2011 - 10:15

Muito bom. Obrigado!  ;)
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#3 Link

Link

    Member Avançado

  • Membros
  • PipPipPip
  • 753 posts

Postado 15 June 2011 - 11:11

Bom dia a todos,

  Caramba Legolas que legal, valeu mesmo.

  É uma pena mesmo que o IReport seja tão dificil de se integrar ao PHP, senão daria ganho de escala no desenvolvimento de relatórios.

  Uma das preocupações que sempre tive em geradores de relatórios, era com relação a quebra de grupos, imagens, graficos e etc. Esses são pré requisitos que os usuários do seu sistema exigem.

  Pelo que vi no FPDF, acho que dá para fazer quebras por grupos, só não vi questão de gráficos mas vou estudar isso também.

  A vantagem do FPDF, é que não precisa fazer nenhuma "gambiarra" para gerar relatórios, como eu estava tentando fazer com o IReport através do JavaBridge.

Essa classe sua Legolas, com certeza vai ajudar muito.

Caso eu tenha dúvidas legolas, posso postar as mesmas aqui em EXEMPLOS ?

Abraços

#4 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3491 posts
  • LocationBelo Horizonte

Postado 15 June 2011 - 11:25

  Caramba Legolas que legal, valeu mesmo.

:D Obrigado Link.

Caso eu tenha dúvidas legolas, posso postar as mesmas aqui em EXEMPLOS ?

Blz tendo qualquer dúvida sobre este exemplo pode postar sim.

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#5 sergiosantos

sergiosantos

    Iniciante

  • Membros
  • Pip
  • 9 posts

Postado 02 August 2012 - 00:12

Legolas estou precisando gerar relatorios em pdf e vi seu post. Vai me ajudar bastante mas eu tenho uma dúvida: como faço pra chamar esse php que monta o relatório? Como eu passo os parâmetros de filtro para o relatório?

#6 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3491 posts
  • LocationBelo Horizonte

Postado 02 August 2012 - 21:24

Legolas estou precisando gerar relatorios em pdf e vi seu post. Vai me ajudar bastante mas eu tenho uma dúvida: como faço pra chamar esse php que monta o relatório? Como eu passo os parâmetros de filtro para o relatório?

sergiosantos, depende da forma que vc está pensando em implementar, pois há algumas formas de se fazer isso, o q mais vejo o pessoal implementando é a utilização de IFRAME ou o Loader. Veja se os links abaixo lhe ajuda:
http://forum.extjs.c...g12541#msg12541
http://forum.extjs.c...hp?topic=5743.0

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#7 iso48

iso48

    Member Avançado

  • Membros
  • PipPipPip
  • 54 posts

Postado 22 September 2016 - 14:38

Eliminei o meu post porque adotei outra solução diferente do FPDF

Obrigado






0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos