Artigo: Criando um relatório PDF com PHP - Gigasystems

PHP

Em por

criando-um-relatorio-pdf-com-php
Criando um relatório PDF com PHP

Fazer relatórios com PHP pode parecer uma tarefa muito difícil por ter que trabalhar com muitos arquivos de bibliotecas principalmente em projetos WEB, e uma das coisas mais legais que pude encontrar para a resolução deste problema, foi a classe mPDF. Com ela é possível gerar PDF com PHP.

Criando relatório pdf com php

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 para estilizar seu conteúdo.

mPDF

mPDF nada mais é que uma biblioteca pronta, e melhor, totalmente free. Ela é capaz de gerar arquivos do tipo PDF através do HTML de sua página WEB.

Com a classe mPDF tudo se torna mais fácil, pois você só precisará gerar um conteúdo em HTML que ela fara todo o trabalho sozinha.

Gerando o relatório

Primeiramente faça o download da biblioteca mPDF AQUI, ou no final do artigo com o exemplo completo, com todos os arquivos.

Feito o download, vamos montar o projeto da seguinte forma.

Crie um diretório chamado PDF, ela será nossa pasta principal onde conterá todos nossos arquivos.

Dentro do diretório PDF, coloque a pasta baixada do mPDF, e crie um arquivo index.php na raiz do projeto, ou seja, dentro do diretório que acabara de criar, o PDF.

Organizado nosso projeto, vamos configurar nosso index.

<?php
		//definimos uma constante com o nome da pasta
		define('MPDF_PATH', 'MPDF57/');
		//incluimos o arquivo
		include(MPDF_PATH.'mpdf.php');
		//definimos o timezone para pegar a hora local
		date_default_timezone_set('America/Sao_Paulo');
		//criamos uma variavel e colocamos nela tudo que desejamos que nosso pdf contenha
		$html = "Ol&aacute; mundo";
		//instanciamos nossa classe mPDF
		$mpdf=new mPDF();
		//definimos o tipo de exibicao
		$mpdf->SetDisplayMode('fullpage');
		//definimos estilos de fonts
		$mpdf->useOnlyCoreFonts = true;
		$mpdf->watermark_font = 'DejaVuSansCondensed';
		//definimos se vamos exibir a marca d'agua
		$mpdf->showWatermarkText = true;
		$mpdf->SetWatermarkText('Marca d\'agua');
		//colocamos um icone de logo tipo no pdf 
		$mpdf->SetWatermarkImage('icones/logoif.png', 1, '', array(140,10));
		//definimos se sera exibido ou nao o logo no pdf
		$mpdf->showWatermarkImage = true;
		//escrve o titulo de nosso pdf
		$mpdf->WriteHTML('<br/><h1>T&iacute;tulo do PDF</h1><hr/>');
		//definimos oque vai conter no rodape do pdf
		$mpdf->SetFooter('{DATE j/m/Y  H:i}||Pagina {PAGENO}/{nb}');
		//e finalmente escrevemos todo nosso conteudo no pdf para exibir
		$mpdf->WriteHTML($html);
		//fechamos nossa instancia ao pdf
		$mpdf->Output();
		//pausamos a tela para exibir o que foi feito
		exit();
?>

Pronto, a partir daí você já conseguirá criar relatórios em PDF, na qual todo conteúdo que você deseja adicionar ao arquivo, basta incluir a variável $html, ou você pode fazer de outra forma também, fica a seu critério.

Você pode incluir uma página inteira de html através do buffer da seguinte maneira.

Crie uma página qualquer html com um conteúdo.

<div id="descricaoprof">
	<span>Coordenador</span>
	<hr/>
	<h2>Professor x</h2>
	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed volutpat, mi in ullamcorper ultricies, augue tortor mattis turpis, in luctus tortor neque vitae odio... <a href="#">Leia mais</a><p>
</div>

E na hora que chamar o index para gera o PDF, inicie o buffer e de um include da página que contém o html.

//Inicia o buffer, qualquer HTML que for sair agora será capturado para o buffer
ob_start(); 
include(‘conteudo.html’);
//Limpa o buffer jogando todo o HTML em uma variável.
$html = ob_get_clean();
$mpdf=new mPDF();
//e escreve todo conteudo html vindo de nossa página html em nosso arquivo
$mpdf->WriteHTML($html);

Bom, foi apresentado nesse tutorial a biblioteca mPDF para a criação de relatórios em arquivos PDF para projetos, sistemas etc. Abordando como baixa-lo e usá-lo.

Para fazer download do arquivo completo CLIQUE AQUI...

Dúvidas, críticas ou sugestões comentem abaixo que teremos o prazer em ajuda-lo. =)

Olá, deixe seu comentário para Criando um relatório PDF com PHP

Já temos 16 comentário(s). DEIXE O SEU :)
Leonel leo

Leonel leo

Hola amigo, tengo un problema, al imprimir la factura me manda el siguiente error:
Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp\htdocs\facturacion\pdf\_class\locale.class.php on line 68

Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp\htdocs\facturacion\pdf\_class\locale.class.php on line 68
TCPDF ERROR: Some data has already been output, can't send PDF file

Espero me puedas apoyar... leo187619@gmail.com

de antenamo te agradezco
★★★☆☆DIA 26.02.19 12h47RESPONDER
Marcos Martins
Enviando Comentário Fechar :/
Marcos Martins

Marcos Martins

Buenas tardes,


por supuesto que está utilizando la versión de PHP por encima de 7.1, ya que en esta versión, la matriz no puede ser más nulo para utilizar el count ().


Para corregir este problema es simple, basta con seguir este otro artículo en mi sitio.


https://www.gigasystems.com.br/artigo/106/error-php-7-2-count-parameter-must-be-an-array-or-an-object-that-implements-countable


 


Att Marcos

★★★★★DIA 07.03.19 15h09RESPONDER
N/A
Enviando Comentário Fechar :/
fabricio ferreira

fabricio ferreira

instalei via composer e me retornou esse erro :

Fatal error: Trait 'Mpdf\Strict' not found in C:\www\outros\relatorio_mPDF\vendor\mpdf\mpdf\src\Mpdf.php on line 44
★★★☆☆DIA 23.10.18 00h05RESPONDER
Marcos Martins
Enviando Comentário Fechar :/
Paulo Schneider

Paulo Schneider

Resolveu? estou com o mesmo problema.
★★★★★DIA 14.11.18 18h20RESPONDER
N/A
Enviando Comentário Fechar :/
João Rezende

João Rezende

Estava usando o mPdf tranquilamente, hoje me apareceu este erro. Sigo sem solução. :(
★★★★★DIA 28.11.18 16h30RESPONDER
N/A
Enviando Comentário Fechar :/
Marcelo Bohn

Marcelo Bohn

Olá Fabrício. Eu tive o mesmo erro e resolvi fazendo o seguinte:
require_once __DIR__ . '/vendor/autoload.php';
Após isto, funcionou ok.
★★★★★DIA 03.12.18 14h50RESPONDER
N/A
Enviando Comentário Fechar :/
Silvio Santos

Silvio Santos

Ainda está com problema?
Qual a versão do seu PHP?
★★★★★DIA 03.02.19 18h51RESPONDER
Marcos Martins
Enviando Comentário Fechar :/
Rafael Silva

Rafael Silva

Muito obrigado.
Sincronizei com meu banco e ficou perfeito. Parabéns.
★★★★★DIA 05.07.18 16h03RESPONDER
Marcos Martins
Enviando Comentário Fechar :/
Marcos Martins

Marcos Martins

Olá Rafael, que bom que ajudou, ficamos felizes! =)

★★★★★DIA 05.07.18 16h11RESPONDER
N/A
Enviando Comentário Fechar :/
Wiliam Franklin Jacinty dos Santos

Wiliam Franklin Jacinty dos Santos

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
★☆☆☆☆DIA 03.12.15 12h12RESPONDER
N/A
Enviando Comentário Fechar :/
Leonardo Martins

Leonardo Martins

Boa tarde, este seu erro está acontecendo porque a função preg_replace() foi deprecated, ou seja, ela não funciona mais, substitua a função por srt_replace() e deverá corrigir os erros.
★☆☆☆☆DIA 09.12.15 16h12RESPONDER
N/A
Enviando Comentário Fechar :/
Marcos Cutrim

Marcos Cutrim

boa tarde,
aconteceu o seguinte erro: Fatal error: Class 'mPDF' not found in C:\Program Files\EasyPHP-5.3.5.0\www\pdf\index.php on line 12
obrigado,
★☆☆☆☆DIA 18.11.15 12h11RESPONDER
Marcos Martins
Enviando Comentário Fechar :/
Leonardo Martins

Leonardo Martins

Boa tarde Marcos, obrigado pelo comentário. Então esse erro está acusando que não foi encontrado a classe mPDF, verifique se ela foi inserida corretamente, se o caminho está correto e se a classe foi instanciada, isso deve resolver!
★☆☆☆☆DIA 24.11.15 13h11RESPONDER
N/A
Enviando Comentário Fechar :/
Osvino Bittencourt

Osvino Bittencourt

Isso ai, outra dica tmb é usar Cookies, segue a mesma ideia, porem armazena no própia maquina do visitante :).
★★★★★DIA 05.04.18 17h14RESPONDER
N/A
Enviando Comentário Fechar :/
Denis

Denis

Muito bom..
★☆☆☆☆DIA 02.11.15 01h11RESPONDER
N/A
Enviando Comentário Fechar :/
Leonardo Martins

Leonardo Martins

Obrigado Denis, volte sempre e bons estudos!
★☆☆☆☆DIA 04.11.15 13h11RESPONDER
N/A
Enviando Comentário Fechar :/
Enviando Comentário Fechar :/

Veja Também:

Artigos Relacionados a categoria: PHP

Soluções

...CURTIU? AINDA NÃO VIU NOSSO PORTFÓLIO?


Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite, veja agora mesmo nossos Cases de Sucesso e tenha seu site nos padrões atuais preparado para maioria dos dispositivos e navegadores.