Back-End

16 fev, 2018

Escrevendo arquivos PDF em PHP com domPDF

Publicidade

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.