Converter HTML para PDF em PHP
Postado por Ricardo Falasca em PHP | Data: 19/08/2010
Tags:CPDF, DOM, DOMPDF, HTML, pdf, PDFLIB, php, XHTML
2
Precisei há alguns dias converter páginas HTML para PDF em PHP, pesquisei um pouco (sim, só um pouco) e acabei optando pela solução que se mostrou mais relevantes nas pesquisas (google): DOMPDF.
Na verdade a necessidade inicial era gerar PDF’s com conteúdo simples, basicamente textos e algumas imagens. Comecei a ler o manual de PDF do PHP.net e percebi que as funções PDF do PHP (que usam PDFLib) apesar de possibilitar tratamento quase que completo de um PDF, é extremamente braçal, frustrando assim minha idéia de agilidade no desenvolvimento da solução que eu precisava. Enfim, sem mais delongas, baixei a versão atual do DOMPDF (0.6.0 beta1) e com alguns passos simples consegui gerar o PDF.
Ah, uma informação importante, acabei deixando sem imagens por enquanto, pois quando uso a engine CPDF para gerar o PDF, o Adobe Reader não consegue abrir os arquivos (ainda não descobri o motivo) então acabei optando por gerar com PDFLib, no qual tem alguns problemas para adicionar as imagens no PDF. Em breve eu vou solucionar este problema e atualizo este post.
Primeiro passo: Download
baixar os códigos-fonte do DOMPDF (Google Code)
Segundo passo: Instalação
1. Descompacte o pacote no local desejado (zip ou tar+gzip)
-
$ unzip dompdf_0-6-0_beta1.zip
-
ou
-
$ tar xvfpz dompdf_0-6-0_beta1.tar.gz
2. Dê as devidas permissões de acesso às fonts ao usuário do Apache (estou considerando que vc está em um Linux ou Unix)
-
$ chgrp www dompdf/lib/fonts
-
$ chmod g+w dompdf/lib/fonts
Terceiro passo: Configuração
1. Configure o arquivo dompdf/dompdf_config.inc.php (aqui vou descrever apenas as variáveis importantes para o funcionamento)
-
define("DOMPDF_PDF_BACKEND", "PDFLib"); // são aceitáveis "auto", que irá buscar pelas engines disponíveis; "PDFLib", "CPDF" ou "GD"
-
define("DOMPDF_DEFAULT_PAPER_SIZE", "a4"); // sim, configurando o padrão da página a ser gerada como A4, ou "letter" (carta) se preferir.
-
define("DOMPDF_ENABLE_PHP", true); // esta variável permite que código PHP seja permitido no modelo de documento através da tag: <script type="text/php"> … </script>
-
define("DOMPDF_ENABLE_REMOTE", true); // cuidado com esta variável, aqui você estará permitindo que o DOMPDF faça uso de imagens e arquivos css remotamente
2. Crie um modelo para gerar seus PDF’s, eis um exemplo abaixo:
-
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-BR" lang="pt-BR">
-
-
-
<title>Modelo do PDF</title>
-
-
-
body { width:90%; margin:0px auto; padding:120px 0 30px 0;}
-
-
p.titulo {font-size:24px; font-weight:bold;}
-
-
p.origem {color:#666666;}
-
-
p.texto {text-align:justify;}
-
-
</style>
-
-
</head>
-
-
-
<script type="text/php">
-
-
// pode colocar seu código PHP aqui para funcionamento em tempo de execução
-
-
…
-
-
</script>
-
-
-
-
<br />
-
-
-
</div>
-
-
-
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla egestas, libero a egestas venenatis, justo felis iaculis est, a tempus sem ligula a tellus. Proin ut justo lorem. Aliquam lacinia placerat erat a hendrerit. Nullam sagittis malesuada neque quis pulvinar. Fusce eros sem, pharetra in pretium posuere, pretium in felis. Vestibulum pharetra ultrices quam, vel blandit sem ultrices at. In hac habitasse platea dictumst. Sed vitae elementum diam. Nulla pellentesque blandit fermentum. Curabitur in euismod est. Nulla in nisl in felis iaculis pharetra sit amet vel quam.</p>
-
-
</div>
-
-
</body>
-
-
</html>
Último passo: Gerar PDF em PHP
1. Crie um arquivo de exemplo gerarpdf.php com o conteúdo abaixo
-
<?php
-
-
$dompdf = new DOMPDF();
-
$dompdf->load_html($html);
-
$dompdf->set_paper("A4", "portrait"); // aqui você pode configurar o layout da página! :)
-
$dompdf->render();
-
$dompdf->stream(‘meu_arquivo.pdf’);
-
-
?>
Pronto! Simples e rápido! Agora divirta-se gerando arquivos PDF, gostou ? Sim? Não? Whatever… deixe seu comentário aí! :D
Enjoy!





Só uma questão… qual o nome de ficheiro que arranca o PDF? http://www.site.com/gerarpdf.php ?? Se assim for… Fatal error: Class ‘DOMPDF’ not found in /homez.337/pedim/www/gerarpdf.php on line 4 :(
Como faço para que a impressão do pdf saia a 05 px do topo do arquvo?
Esta saindo mais ou menos dois dedos a altura do topo do papel até o inicio da impressão.
Eu queria diminuir isso.
Grato.