Convertendo HTML para PDF em PHP
Hoje vamos entender como efetuar a conversão de um documento (X)HTML padrão para um documento PDF válido utilizando a biblioteca DOMPDF.
Instalando o DOMPDF
1. Faça o download do DOMPDF no site oficial da biblioteca. A versão que vou utilizar neste tutorial é a versão 0.5.1
2. Descompacte os arquivos do DOMPDF em um local acessível pelo seu servidor web.
3. Abra e edite o arquivo dompdf_config.inc.php.
* Se você deixar o DOMPDF_PDF_BACKEND com o valor `auto`, o dompdf vai utilizar a extensão PDFLib se ela estiver instalada no seu servidor, caso contrário o dompdf vai utilizar a R&OS CPDF class (é uma biblioteca para criação de documentos PDF sem a necessidade da instalação de uma extensão adicional).
* Dê permissão de escrita no caminho que aponta a variável DOMPDF_FONT_DIR (lib/fonts é o padrão).
4. Pronto!
Utilizando o DOMPDF
Vou dar um exemplo simples de utilização da biblioteca. Seguindo este exemplo, você consegue fazer tudo o que precisa para geração de arquivos PDF.
* O objeto set_paper é responsável pela configuração do papel (formato) do arquivo pdf. No primeiro argumento, você escolhe o tamanho de cada folha; no segundo argumento, você escolhe se quer cada folha em paisagem ou fotografia.
* No Parâmetro 1 você pode preencher com:4a0, 2a0, a0…a10, b0…b10, c0…c10, ra0…ra4, sra0…sra4, letter, legal, ledger, tabloid, executive, folio, commerical #10 envelope, catalog #10 1/2 envelope, 8.5×11, 8.5×14 e11x17.
* No Parâmetro 2 você pode preencher com: portrait ou landscape.
* O objeto render é responsável por imprimir, no documento, o código correspondente ao PDF e exibi-lo no browser.
* O objeto stream é opcional. Se ele for setado, vai forçar o download do documento com o nome que você passar, caso contrário o documento será exibido na tela.
Resultado Final
DOMPDF 01DOMPDF 01
Dicas
* Caso você precise gerar um documento PDF muito grande, é provável que o apache reclame do limite de memória. Para contornar este problema, basta aumentar a capacidade de memória alocada. Para isso é preciso alterar o memory_limit com a função ini_set do php. (ex: ini_set(“memory_limit”, “16M”); ).
* O DOMPDF não funciona com todas as fontes. As fontes que são suportadas por ele podem ser encontradas em lib/fonts. Caso necessite instalar novas fontes, no site do oficial da biblioteca você pode encontrar maiores informações.
* Caso você não consiga que as suas folhas de estilo sejam carregadas no corpo do pdf, coloque as regras diretamente no corpo do documento. Se mesmo assim não funcionar, coloque as regras utilizando a propriedade style em cada tag do html setando as mesmas, diretamente.
É isso, pessoal!
Hoje vamos entender como efetuar a conversão de um documento (X)HTML padrão para um documento PDF válido utilizando a biblioteca DOMPDF.
Instalando o DOMPDF
1. Faça o download do DOMPDF no site oficial da biblioteca. A versão que vou utilizar neste tutorial é a versão 0.5.1
2. Descompacte os arquivos do DOMPDF em um local acessível pelo seu servidor web.
3. Abra e edite o arquivo dompdf_config.inc.php.
* Se você deixar o DOMPDF_PDF_BACKEND com o valor `auto`, o dompdf vai utilizar a extensão PDFLib se ela estiver instalada no seu servidor, caso contrário o dompdf vai utilizar a R&OS CPDF class (é uma biblioteca para criação de documentos PDF sem a necessidade da instalação de uma extensão adicional).
* Dê permissão de escrita no caminho que aponta a variável DOMPDF_FONT_DIR (lib/fonts é o padrão).
4. Pronto!
Utilizando o DOMPDF
Vou dar um exemplo simples de utilização da biblioteca. Seguindo este exemplo, você consegue fazer tudo o que precisa para geração de arquivos PDF.
- Código:
1. <?php
2. $html = '
3. <html>
4. <head></head>
5. <style>
6. h1 {color:#333; size:20px; margin-bottom:5px;}
7. h3 {color:#222;}
8. </style>
9. <body>
10.
11. <h1>IgorEscobar.com</h1>
12. <h3>Desenvolvimento, Tecnologia e Informação, na ponta do lápis.</h3>
13.
14. </body>
15. </html>
16. ';
17. ?>
18. <?php
19. require_once("dompdf/dompdf_config.inc.php");
20.
21. $dompdf = new DOMPDF();
22. $dompdf->load_html($html);
23. $dompdf->set_paper('letter', 'landscape');
24. $dompdf->render();
25. $dompdf->stream("exemplo-01.pdf");
26. ?>
* O objeto set_paper é responsável pela configuração do papel (formato) do arquivo pdf. No primeiro argumento, você escolhe o tamanho de cada folha; no segundo argumento, você escolhe se quer cada folha em paisagem ou fotografia.
* No Parâmetro 1 você pode preencher com:4a0, 2a0, a0…a10, b0…b10, c0…c10, ra0…ra4, sra0…sra4, letter, legal, ledger, tabloid, executive, folio, commerical #10 envelope, catalog #10 1/2 envelope, 8.5×11, 8.5×14 e11x17.
* No Parâmetro 2 você pode preencher com: portrait ou landscape.
* O objeto render é responsável por imprimir, no documento, o código correspondente ao PDF e exibi-lo no browser.
* O objeto stream é opcional. Se ele for setado, vai forçar o download do documento com o nome que você passar, caso contrário o documento será exibido na tela.
Resultado Final
DOMPDF 01DOMPDF 01
Dicas
* Caso você precise gerar um documento PDF muito grande, é provável que o apache reclame do limite de memória. Para contornar este problema, basta aumentar a capacidade de memória alocada. Para isso é preciso alterar o memory_limit com a função ini_set do php. (ex: ini_set(“memory_limit”, “16M”); ).
* O DOMPDF não funciona com todas as fontes. As fontes que são suportadas por ele podem ser encontradas em lib/fonts. Caso necessite instalar novas fontes, no site do oficial da biblioteca você pode encontrar maiores informações.
* Caso você não consiga que as suas folhas de estilo sejam carregadas no corpo do pdf, coloque as regras diretamente no corpo do documento. Se mesmo assim não funcionar, coloque as regras utilizando a propriedade style em cada tag do html setando as mesmas, diretamente.
É isso, pessoal!
Sáb Out 18, 2014 12:29 am por orthon
» Iniciante Smudge
Qui Ago 21, 2014 2:56 am por Cdubb
» Um Novo Aprendiz!
Qui Ago 21, 2014 2:50 am por Cdubb
» Eaw galera
Qua Ago 13, 2014 5:09 am por Cdubb
» [PSD] Tutorial !
Sáb Ago 31, 2013 5:22 pm por Paulo_ComandBR
» Reasource Pack #1 Hawkdesign
Ter Jun 18, 2013 11:46 pm por edicelio
» [ Sing ]Capitão America
Dom Jun 02, 2013 1:50 am por edicelio
» Minha Primeira Borda Modelada
Dom Jun 02, 2013 1:47 am por edicelio
» V for Vendetta
Dom Jun 02, 2013 1:40 am por edicelio
» Gamer *--*
Qui maio 30, 2013 10:58 pm por ϟƘƦƖןןΣx
» [Scorpion]Sign
Qui maio 30, 2013 4:02 pm por ϟƘƦƖןןΣx
» Avaliem o kit ?
Qui maio 30, 2013 3:45 pm por ϟƘƦƖןןΣx
» Leilão sign Jimi Hendrix
Qui maio 30, 2013 2:31 pm por ϟƘƦƖןןΣx
» Doações para o forum!
Qui maio 30, 2013 2:06 pm por ϟƘƦƖןןΣx
» Apresentação
Qua maio 29, 2013 10:10 pm por ϟƘƦƖןןΣx