Gerando relatório com PHP - Gustavo Ferreira
Gerando relatório com PHP
Biblioteca MPDF
Fazer relatórios com PHP pode parecer uma tarefa árdua por ter que garimpar entre tantas bibliotecas mas nesse artigo ficará muito claro a sua simplicidade.
Nesse artigo vamos abordar a utilização de uma biblioteca chamada mPDF. Essa biblioteca é capaz de criar arquivos PDF a partir da linguagem HTML sendo possível inclusive a utilização de CSS.
Faça o download em http://www.mpdf1.com/mpdf/download e descompacte na raiz do seu site. Se preferir, faça os teste em um projeto limpo para facilitar a configuração. Na minha estrutura, os diretórios ficaram assim:
|--testeMPDF
|--mpdf
Sendo que o diretório 'testeMPDF' é a raiz do projeto e 'mpdf' é a biblioteca já descompactada. O arquivo index.php ainda vamos criar adiante. Para que a biblioteca funcione é preciso que as seguintes pastas possuam permissão de escrita:
/ttffontdata
/graph_cache
Para ver se tudo está em ordem basta abrir no seu navegador a seguinte url:
http://localhost/testeMPDF/mpdf/examples/example01_basic.php
Deverá abrir um relatório exemplo do mPDF. Com esse simples exemplo já é possível perceber a flexibilidade da biblioteca, principalmente se olharmos as duas últimas páginas.
Vamos agora criar um clássico "hello world". Para isso crie um arquivo chamado index.php na raiz do projeto com o seguinte conteúdo:
include('mpdf/mpdf.php');
Para testar basta acessar dessa forma no seu navegador:
http://localhost/testeMPDF
Você pode agora criar qualquer relatório com HTML e persisti-lo em um PDF com essa biblioteca.
Vamos agora criar um exemplo com um HTML um pouco mais extenso e usando CSS, para isso crie um arquivo chamado conteudo.html na raiz do seu projeto com o seguinte conteúdo:
Ainda assim, existem dúvidas a respeito de como a
adoção de políticas descentralizadoras causa impacto
indireto na reavaliação dos paradigmas corporativos.
Nunca é demais lembrar o peso e o significado
destes problemas, uma vez que a adoção de políticas
descentralizadoras afeta positivamente a correta
previsão do remanejamento dos quadros funcionais.
Agora jogue fora altere o seu arquivo index.php para:
//Carregando a biblioteca mPDF
//Inicia o buffer, qualquer HTML que for sair agora sera capturado para o buffer
A seguir você verá o seu relatório
//Fazendo o include de um HTML em outro arquivo, ficara retido no buffer
include('conteudo.html');
//Limpa o buffer jogando todo o HTML em uma variavel.
//Colocando o rodape
$mpdf->SetFooter('{DATE j/m/Y H:i}|Página {PAGENO} de {nb}|www.gqferreira.com.br');
Integrando com o framework CodeIgniter
Para integrar a biblioteca ao seu projeto usando CodeIgniter é muito simples. Primeiramente descompacte dentro da pasta libraries da sua aplicação:
|--suaAplicacao
Depois disso basta criar uma controller e fazer como faziamos antes mas substitua essas linhas:
$this->load->library('mpdf/mpdf');
$this->load->view('conteudo.html');
Concluímos que é possível criar bons relatórios com php, em especial com essa biblioteca open-source. Há muitas bibliotecas parecidas pela internet mas de todas as que conheci, essa foi a que mais me impressionou por ser capaz de transformar HTML em arquivo PDF, o que facilita bastante para quem já está acostumado com o ambiente web.
Para mais detalhes você pode acessar a documentação do projeto em: http://mpdf1.com/manual/
Gerando relatório com PHP de Gustavo Ferreira é licenciado sob uma Licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada.
Comentarios (9) para Gerando relatório com PHP
Karlos Eduardo, 01/06/2013
Boa Gustavo...já tinha usado O MDPF a uns tempos atrás...e justamente a dica de carregar a pagina externa usando o buffer...muito bom.... vlw pela dica
Alex, 06/10/2013
Ótimo post Gustavo, porem eu não consegui integrar o framework CodeIgniter
You don't have permission to access /programas/CrudLoja/application/controllers on this server.
Se alguém puder me ajudar eu agradeço..
Gustavo, 06/10/2013
Você está tendo problema de permissões no diretório. Tente atribuir permissões com "# chmod 755 -R /programas/CrudLoja"
Para entender melhor as permissões, veja essa artigo:
http://rberaldo.com.br/chmod-permissoes-em-sistemas-linux-e-unix-like/
Eduardo, 22/11/2013
Essa biblioteca é muito boa.
Como fazer para que em todas as páginas apareçam o número de páginas? Pois, só esta aparecendo na última.