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.




