Back-End

16 fev, 2018

Escrevendo arquivos PDF em PHP com domPDF

100 visualizações
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.