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.