Muita gente que programa PHP recebe demandas para criar relatórios, textos, documentos ou outras coisas em PDF. E sempre fazem as mesmas perguntas: como fazer? qual biblioteca usar?
No artigo de hoje apresento o dompdf que é uma biblioteca que transforma um HTML em PDF. Como programadores web temos bastante familiaridade com HTML, então, acaba que o domPDF é uma boa escolha para trabalharmos. Mas, caso você prefira “desenhar” o PDF na mão, recomendo o FPDF existem outras bibliotecas para gerar PDF como o mpdf…
Bem, agora vamos ver como funciona na prática o domPDF. Começamos gerando a pasta domPDF e realizando um composer require dentro da pasta.
composer require dompdf/dompdf
Então. Vamos usar alguns htmls de exemplo. Eles estão disponíveis nesse gist.
Vamos renderizar o html “exemplo.html”, para isso, copie-o para a pasta do seu projeto. Usando o arquivo makePDF.php abaixo:
<?php require_once 'vendor/autoload.php'; // referenciando o namespace do dompdf use Dompdf\Dompdf; // instanciando o dompdf $dompdf = new Dompdf(); //lendo o arquivo HTML correspondente $html = file_get_contents('exemplo.html'); //inserindo o HTML que queremos converter $dompdf->loadHtml($html); // Definindo o papel e a orientação $dompdf->setPaper('A4', 'landscape'); // Renderizando o HTML como PDF $dompdf->render(); // Enviando o PDF para o browser $dompdf->stream();
Para visualizar o PDF basta subir o servidor embutido do PHP e abrir no browser. No caso subiremos na porta 8888
php -S localhost:8888
Depois basta abrir o arquivo no browser.
localhost:8888/makePDF.php
(Em alguns casos, dependendo do browser, ele irá baixar o arquivo PDF ao invés de exibi-lo)
Verificamos no exemplo.html que a tag <hr/> é a responsável pela quebra de páginas no PDF.
Vamos agora ver como seria o resultado caso colocássemos a página como portrait. makePdfPortrait.php
<?php require_once 'vendor/autoload.php'; // referenciando o namespace do dompdf use Dompdf\Dompdf; // instanciando o dompdf $dompdf = new Dompdf(); //lendo o arquivo HTML correspondente $html = file_get_contents('exemplo.html'); //inserindo o HTML que queremos converter $dompdf->loadHtml($html); // Definindo o papel e a orientação $dompdf->setPaper('A4', portrait'); // Renderizando o HTML como PDF $dompdf->render(); // Enviando o PDF para o browser $dompdf->stream();
Você pode também alterar o tipo de fonte que será usada no arquivo. Para isso, podemos usar por exemplo a opção $dompdf->set_option(‘defaultFont’, ‘Times New Roman’’); no makePdfFont.php, utilizando o exemplo2.html
<?php require_once 'vendor/autoload.php'; // referenciando o namespace do dompdf use Dompdf\Dompdf; // instanciando o dompdf $dompdf = new Dompdf(); //lendo o arquivo HTML correspondente $html = file_get_contents('exemplo2.html'); //inserindo o HTML que queremos converter $dompdf->loadHtml($html); //Definindo o tipo de fonte padrão $dompdf->set_option('defaultFont', 'Times New Roman’'); // Definindo o papel e a orientação $dompdf->setPaper('A4', portrait'); // Renderizando o HTML como PDF $dompdf->render(); // Enviando o PDF para o browser $dompdf->stream();
Agora, basta você desenhar o HTML do jeito que desejar e transformar em PDF. No gist existem outros exemplos para você utilizar.
Um grande abraço e até o próximo artigo.