Gerar PDF com PHP e HTML usando a biblioteca mPDF
Saiba como gerar PDF profissionais usando a biblioteca mPDF e aprenda a criar um modelo de recibo de pagamento em PDF, a partir desse exemplo crie qualquer tipo de arquivo PDF que você precisar.
Para servir como exemplo neste artigo, vamos criar um documento de Recibo de Pagamento em PDF usando a biblioteca mPDF como no exemplo dado abaixo.
CONFIRA O RESULTADO DESTE TUTORIAL
Pré-requisitos
- - Fazer download da biblioteca mPDF
- - PHP 5.5 ou superior
Assim que você fizer o download da biblioteca mPDF, descompacte-o dentro da pasta onde você poderá efetuar os testes, aqui eu uso o XAMPP para localhost, então crio uma pasta chamada gerando-pdf-com-mpdf, ficando localhost/gerando-pdf-com-mpdf e dentro dessa pasta eu descompactei a biblioteca.
Obs. Não exagere no uso de CSS para estilizar o seu documento PDF, pois a biblioteca mPDF infelizmente ainda é limitada neste quesito. Saiba quais são as propriedades suportadas por ela aqui.
Script para gerar PDF com PHP e HTML usando mPDF
Vamos lá, para iniciarmos, criamos o arquivo index.php dentro da pasta gerando-pdf-com-mpdf
index.php
<?php
include("mpdf60/mpdf.php");
$html = "
<fieldset>
<h1>Recibo de Pagamento</h1>
<p class='center sub-titulo'>
Nº <strong>0001</strong> -
VALOR <strong>R$ 700,00</strong>
</p>
<p>Recebi(emos) de <strong>Ebrahim Paula Leite</strong></p>
<p>a quantia de <strong>Setecentos Reais</strong></p>
<p>Correspondente a <strong>Serviços prestados ..<strong></p>
<p>e para clareza firmo(amos) o presente.</p>
<p class='direita'>Itapeva, 11 de Julho de 2017</p>
<p>Assinatura ......................................................................................................................................</p>
<p>Nome <strong>Alberto Nascimento Junior</strong> CPF/CNPJ: <strong>222.222.222-02</strong></p>
<p>Endereço <strong>Rua Doutor Pinheiro, 144 - Centro, Itapeva - São Paulo</strong></p>
</fieldset>
<div class='creditos'>
<p><a href='https://www.webcreative.com.br/artigo/gerar-pdf-com-php-e-html-usando-a-biblioteca-mpdf' target='_blank'>Aprenda como gerar PDF com PHP e HTML usando a biblioteca MPDF aqui</a></p>
</div>
";
$mpdf=new mPDF();
$mpdf->SetDisplayMode('fullpage');
$css = file_get_contents("css/estilo.css");
$mpdf->WriteHTML($css,1);
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
Como disse no começo, esse index vai gerar um documento de Recibo como exemplo. Você pode criar qualquer tipo de documento desde que saiba como usar o HTML e CSS.
Agora crie uma pasta chamada css e nela crie um arquivo estilo.css
estilo.css
fieldset{
width: 750px;
margin: 10px auto;
color: #444;
border: 5px solid #ccc;
font-family: Helvetica;
padding: 15px;
}
h1{
text-align: center;
}
p.sub-titulo{
font-size: 20px;
}
.direita{
text-align: right;
}
.center{
text-align: center;
}
Pronto, agora você gerou o seu primeiro arquivo PDF usando a biblioteca mPDF :)
Baixe os arquivos desse tutorial aqui
Use sua criatividade e crie novos PDF's para seu projeto ou sistema. Se tiver alguma dúvida deixe um comentário abaixo que terei o prazer em te ajudar.
Veja também
Como Resolver o Problema de Desempenho "Não Utiliza Listeners Passivos" no jQuery
Saiba como corrigir o erro acusado pelo Pagespeed e melhore a velocidade do seu site.
Crie seu próprio Botão Fixo com Mensagens para WhatsApp
Neste artigo você vai aprender a criar um Widget de WhatsApp com mensagens personalizadas para colocar em seu site e ainda como medir as conversões de clique pelo Google Adwords.
Widget WhatsApp Fixo na Lateral com Mensagens
Coloque agora mesmo um botão do seu WhatsApp no site e ainda exiba mensagens animadas para aumentar a interatividade com seus visitantes.
Comentários
Deixe um comentário
Marcus Guarani
22 de April de 2024 às 21:18
Fatal error: Array and string offset access syntax with curly braces is no longer supported in C:\xampp\htdocs\dashboard\sistemas\condeclin\pdf\mpdf.php on line 2855
Noé Samulunda
9 de April de 2021 às 09:05
Noé Samulunda
9 de April de 2021 às 08:58
Samir Belo
23 de May de 2020 às 16:34
robert kabil
12 de March de 2020 às 15:35
é possivel assinar cada PDF com certificado digital?
Carlos Correa
5 de September de 2019 às 08:53
Foto do meu problema.
https://drive.google.com/file/d/1GHHEmktbJ4jGeG7X13jIBs06MabkIbLI/view?usp=sharing
Carlos Correa
5 de September de 2019 às 08:46
Acontece que quando tenho uma nova página, em vez do MPDF se basear basear na DIV onde forma uma linha e que possui 5 conjuntos de 3DIVs, ele está quebrando em uma destas 3 DIVs e assim, por exemplo, passando apenas a DIV3 para a próxima página... dessa forma, metade de um dos itens fica numa página, e o resto na próxima página.
O que faço para identificar que não vai caber tudo na página e passar todo conteúdo para próxima?
Renato Genestra
2 de August de 2019 às 11:46
Júnior .
9 de April de 2019 às 13:34
Saberia dizer se tem como diminuir o tamanho do PDF? Os arquivos estão saindo com mais de 2MB, tem como diminuir isso?
Ebrahim P. Leite
9 de April de 2019 às 14:56
Então Júnior, este tamanho é de acordo com o conteúdo que você está gerando o PDF. Normalmente 2MB é um tamanho tranquilo para PDF.
Moisés Oliveira
3 de April de 2019 às 15:22
Ebrahim P. Leite
9 de April de 2019 às 14:52
Fico feliz em ter ajudado, Moisés!
Fabio Botelho
28 de September de 2018 às 22:22
Ebrahim P. Leite
29 de September de 2018 às 00:31
Obrigado pelo reportar Fabio. Atualizei o link =)
Cesar Silva
17 de September de 2018 às 12:29
1) O mpdf interpreta esses código no meio do texto?
2) É o possível gerar a página html (dinamicamente) e só depois imprimi-la?
Eduardo Grubel
21 de August de 2018 às 10:51
Alguma sugestão.
Já cheguei até o php mas não consigo transformá-lo em pdf de forma nenhuma.
Ebrahim P. Leite
22 de August de 2018 às 13:58
A ideia do post é mostrar de uma forma simplificada o uso do mPDF. Se você tem um banco de dados é só fazer a leitura dele e colocar dentro do html.
No final se você quiser que ele efetua o download do PDF ao invés de carregar na página, é só trocar o $mpdf->Output(); para $mpdf->Output('MeuPdf.pdf', 'D');
Eduardo S. Grübel
17 de September de 2018 às 09:51
joel garcia
30 de July de 2018 às 15:30
Ebrahim P. Leite
30 de July de 2018 às 16:33
Abs
joel garcia
30 de July de 2018 às 15:16
Xavier Ramos
29 de May de 2018 às 18:19
Paulo Galego
3 de April de 2018 às 09:47
Naimar Nunes
27 de February de 2018 às 08:53
Abraços...
Pedro Afonso
21 de February de 2018 às 22:55
Ciro Peixoto
15 de February de 2018 às 19:46
Lauro Skovronski
8 de January de 2018 às 16:39
INSPECIONANDO O DOCUMENTO APARECE ESTA MENSAGEM:
[Deprecation] Styling master document from stylesheets defined in HTML Imports is deprecated, and is planned to be removed in M65, around March 2018. Please refer to https://goo.gl/EGXzpw for possible migration paths.
TRADUZINDO:
O documento principal do estilo das folhas de estilo definidas nas Importações HTML é obsoleto e está planejado para ser removido em M65, em torno de março de 2018. Por favor, consulte https://goo.gl/EGXzpw para possíveis caminhos de migração.
==
CONSULTANDO a documentação o erro continua..
Dionisio Magalhães
24 de November de 2017 às 18:38
Alessandra Leachenski
15 de November de 2017 às 13:37
Lucas Vitoria
15 de January de 2019 às 19:33
Lucas Vitoria
15 de January de 2019 às 19:34
Luany Silva
6 de November de 2017 às 15:53
Ebrahim P. Leite
6 de November de 2017 às 22:46
Oi Luany, Se você setar por exemplo um título não resolve na hora de fazer o download?
Se não der certo, você pode dar uma olhada na documentação aqui: https://mpdf.github.io
Kelly Assunção
3 de November de 2017 às 13:42
Alexandro Ricci
29 de October de 2017 às 10:50
$html = "
CERTIFICADO
O que estou fazendo errado?
Ebrahim P. Leite
29 de October de 2017 às 23:06
O formulário aqui interpreta o html, pode me mandar seu problema por e-mail? Ou então vá até a sua conta e na aba 'Tickets' abre um lá que a gente resolve juntos!
Abs
Juliano Bom
26 de September de 2017 às 00:05
Sidnei de Cerqueira
1 de September de 2017 às 10:18
Ebrahim P. Leite
1 de September de 2017 às 14:29
Opa Sidnei, Você pode configurar o tamanho do PDF no momento que instanciar a classe do MPDF.
Exemplo:
Marcio Sales
14 de July de 2017 às 17:04
Ebrahim P. Leite
14 de July de 2017 às 17:59
Arlei Santos
13 de July de 2017 às 08:12
André Scherrer
11 de July de 2017 às 08:52
Ebrahim P. Leite
11 de July de 2017 às 10:19
Verdade mesmo André muito prática e de fácil utilização :)
Daniel Souza Souza
11 de July de 2017 às 08:10
Ebrahim P. Leite
11 de July de 2017 às 11:10
| Informe seu e-mail abaixo para continuar!
X