{"id":95,"date":"2013-12-10T11:58:00","date_gmt":"2013-12-10T13:58:00","guid":{"rendered":"https:\/\/blog.wieczorek.com.br\/novo\/?p=95"},"modified":"2022-02-24T12:02:47","modified_gmt":"2022-02-24T15:02:47","slug":"gerar-pdf-com-php-atraves-da-biblioteca-dompdf","status":"publish","type":"post","link":"https:\/\/blog.wieczorek.com.br\/index.php\/2013\/12\/10\/gerar-pdf-com-php-atraves-da-biblioteca-dompdf\/","title":{"rendered":"Gerar PDF com PHP atrav\u00e9s da biblioteca DOMPDF"},"content":{"rendered":"\n<p>Quando falamos em desenvolvimento web, \u00e9 muito comum a necessidade de gerar arquivos PDF&#8217;s de algum relat\u00f3rio. Muitos j\u00e1 devem ter tido alguma dificuldade com a configura\u00e7\u00e3o de algumas bibliotecas para fazer esta gera\u00e7\u00e3o.<\/p>\n\n\n\n<p>Com a&nbsp; a biblioteca DOMPDF conseguimos fazer a convers\u00e3o de uma p\u00e1gina HTML para PHP de forma f\u00e1cil, r\u00e1pida e com possibilidades de incluir imagens, cabe\u00e7alho, rodap\u00e9, CSS, n\u00famero de p\u00e1ginas, tamanho e orienta\u00e7\u00e3o do papel, etc.<\/p>\n\n\n\n<p>Para baixar a biblioteca DOMPDF \u00e9 s\u00f3 acessar&nbsp;<a href=\"https:\/\/github.com\/dompdf\/dompdf\/downloads\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/dompdf\/dompdf\/downloads<\/a>&nbsp;e voil\u00e0. A biblioteca \u00e9 gratuita e vem com diversos exemplos, dos mais simples aos mais complexos, o que facilita ainda mais o seu entendimento.<\/p>\n\n\n\n<p>Vamos a alguns exemplos de utiliza\u00e7\u00e3o:<\/p>\n\n\n\n<p>Aqui um pequeno trecho HTML que depois ser\u00e1 convertido em PDF. Notem que \u00e9 poss\u00edvel utilizarmos CSS de forma bem simples.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$html = \"\r\n&lt;html>\r\n &lt;head>\r\n   &lt;style ='text\/css'>\r\n     body {\r\n       font-family: Calibri, DejaVu Sans, Arial;\r\n       margin: 0;\r\n       padding: 0;\r\n       border: none;\r\n       font-size: 13px;\r\n     }\r\n \r\n     #exemplo {\r\n       width: 100%;\r\n       height: auto;\r\n       overflow: hidden;\r\n       padding: 5px 0;\r\n       text-align: center;\r\n       background-color: #CCC;\r\n       color: #FFF;\r\n     }\r\n   &lt;\/style>\r\n &lt;\/head>\r\n &lt;body>\r\n   &lt;div id='exemplo'>\r\n&lt;p>     Gerar PDF com a classe DOMPDF para PHP.&lt;br \/>\r\n   &lt;\/p>&lt;\/div>\r\n &lt;\/body>\r\n &lt;\/html>\";<\/code><\/pre>\n\n\n\n<p>No trecho acima criamos um HTML simples, com uma mensagem dentro de uma div. A div e a mensagem foram estilizadas com CSS Embed. Esse c\u00f3digo HTML foi atribu\u00eddo \u00e0 vari\u00e1vel $html que utilizaremos abaixo.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><em>Um dos recursos da DOMPDF \u00e9 a possibilidade de utilizar CSS&#8217;s e n\u00e3o precisar ficar definindo posi\u00e7\u00f5es X e Y de cada elemento, como algumas bibliotecas o fazem.<\/em><\/p><\/blockquote>\n\n\n\n<p>Agora vamos ao c\u00f3digo que ir\u00e1 fazer a convers\u00e3o do conte\u00fado HTML da vari\u00e1vel $html para PDF.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\r\n\/\/ Inclu\u00edmos a biblioteca DOMPDF\r\nrequire_once(\"dompdf\/dompdf_config.inc.php\");\r\n \r\n\/\/ Instanciamos a classe\r\n$dompdf = new DOMPDF();\r\n \r\n\/\/ Passamos o conte\u00fado que ser\u00e1 convertido para PDF\r\n$dompdf->load_html($html);\r\n \r\n\/\/ Definimos o tamanho do papel e\r\n\/\/ sua orienta\u00e7\u00e3o (retrato ou paisagem)\r\n$dompdf->set_paper('A4','portrait');\r\n \r\n\/\/ O arquivo \u00e9 convertido\r\n$dompdf->render();\r\n \r\n\/\/ Salvo no diret\u00f3rio tempor\u00e1rio do sistema\r\n\/\/ e exibido para o usu\u00e1rio\r\n$dompdf->stream(\"nome-do-arquivo.pdf\");\r\n?><\/code><\/pre>\n\n\n\n<p>Bem simples, n\u00e3o?<\/p>\n\n\n\n<p>Alguns Cuidados:<\/p>\n\n\n\n<p><strong>Fontes<\/strong><\/p>\n\n\n\n<p>Ter fontes true type (.ttf) instaladas no servidor \u00e9 o bastante para exib\u00ed-las corretamente na tela mas para que a biblioteca DOMPDF reconhe\u00e7a essas fontes \u00e9 preciso carreg\u00e1-las para o diret\u00f3rio da biblioteca.<\/p>\n\n\n\n<p>Para carregar novas fontes para a biblioteca DOMXML, basta seguir o tutorial dispon\u00edvel em http:\/\/www.dirtyhandsphp.com\/2013\/03\/dompdf-new-font-installation.html.<\/p>\n\n\n\n<p><strong>Imagens<\/strong><\/p>\n\n\n\n<p>Se no seu c\u00f3digo HTML forem utilizadas imagens locais (dentro do mesmo servidor onde a biblioteca DOMPDF est\u00e1 instalada) n\u00e3o precisa se preocupar. Mas se voc\u00ea utiliza imagens externas \u00e9 necess\u00e1rio habilitar a fun\u00e7\u00e3o DOMPDF_ENABLE_REMOTE. No arquivo compdf_config.inc.php, na linha 289, defina DOMPDF_ENABLE_REMOTE como true.<\/p>\n\n\n\n<p>Como vimos, a cria\u00e7\u00e3o do de um documento PDF atrav\u00e9s da DOMPDF \u00e9 muito simples. Em casos de d\u00favidas, d\u00eaem uma olhada nos exemplos que est\u00e3o dispon\u00edveis junto com a documenta\u00e7\u00e3o da biblioteca.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando falamos em desenvolvimento web, \u00e9 muito comum a necessidade de gerar arquivos PDF&#8217;s de algum relat\u00f3rio. Muitos j\u00e1 devem ter tido alguma dificuldade com a configura\u00e7\u00e3o de algumas bibliotecas para fazer esta gera\u00e7\u00e3o. Com a&nbsp; a biblioteca DOMPDF conseguimos fazer a convers\u00e3o de uma p\u00e1gina HTML para PHP de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,28,68,4],"tags":[107,63,106,73],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-desenvolvimento","category-internet","category-php","category-tecnologia","tag-dompdf","tag-html","tag-pdf","tag-php"],"_links":{"self":[{"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":1,"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/posts\/95\/revisions\/96"}],"wp:attachment":[{"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wieczorek.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}