Biblioteca MPDF
Introdução
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.
Baixando e instalando
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:
www | |--testeMPDF | |--mpdf | |--index.php
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
/tmp
/graph_cache
Testando
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.
Hello world
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:
<?php include('mpdf/mpdf.php'); $mpdf=new mPDF(); $mpdf->WriteHTML('Hello World
'); $mpdf->Output(); exit; ?>
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.
Um exemplo mais complexo
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:
Título do seu relatório
Seção 1
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.
Seção 2
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:
<?php //Carregando a biblioteca mPDF include('mpdf/mpdf.php'); //Inicia o buffer, qualquer HTML que for sair agora sera capturado para o buffer ob_start(); ?> A seguir você verá o seu relatório <?php //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. $html = ob_get_clean(); $mpdf=new mPDF(); $mpdf->WriteHTML($html); //Colocando o rodape $mpdf->SetFooter('{DATE j/m/Y H:i}|Página {PAGENO} de {nb}|www.gqferreira.com.br'); $mpdf->Output(); exit; ?>
CodeIgniter Framework
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:
www | |--suaAplicacao | |--application | |--libraries | |--mpdf
Depois disso basta criar uma controller e fazer como faziamos antes mas substitua essas linhas:
include('mpdf/mpdf.php'); include('conteudo.html');
Por essas:
$this->load->library('mpdf/mpdf'); $this->load->view('conteudo.html');
Conclusão
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
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
Ótimo post Gustavo, porem eu não consegui integrar o framework CodeIgniter
da esse erro:
Forbidden
You don't have permission to access /programas/CrudLoja/application/controllers on this server.
Se alguém puder me ajudar eu agradeço..
Abraço
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/
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.
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.
Muito bom, porém sou iniciante em codeigniter, você pode me passar um exemplo completo?
estou com esse erro nos relatorios, pode me dizer oq seria??
A PHP Error was encountered
Severity: 8192
Message: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
Filename: includes/functions.php
Line Number: 74
A PHP Error was encountered
Severity: 8192
Message: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
Filename: includes/functions.php
Line Number: 75
estou com esse erro nos relatorios, pode me dizer oq seria??
A PHP Error was encountered
Severity: 8192
Message: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
Filename: includes/functions.php
Line Number: 74
A PHP Error was encountered
Severity: 8192
Message: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
Filename: includes/functions.php
Line Number: 75
Fantástico meu amigo, usei no CI e funcionou perfeitamente.
Muito Obrigado
Gostou do artigo? Acha que poderia ser melhor em algum ponto? Dê o seu feedback!