Converter HTML em PDF utilizando wkhtmltopdf via linha de comando

image_pdfimage_print

Uma tarefa rotineira é transformar HTML em PDF via linha de comando ou via php ou via python ou via qualquer linguagem de programação executando no lado servidor.

Esta dica é exatamente sobre como transformar um HTML em PDF usando sua linguagem de programação favorita, desde que ela seja capaz de executar comandos no shell.

Com ela, poderá usar PHP para transformar HTML em PDF. Poderá usar Python para transformar HTML em PDF. Poderá até mesmo usar shell script se desejar.

Para isto, iremos utilizar o programa wkhtmltopdf. (HTML2PDF)

Em sistemas Debian-like, como o Ubuntu, para instalar este pacote basta:

aptitude install wkhtmltopdf

E pronto!

Para usar, basta:

wkhtmltopdf <página_html_alvo> <arquivo_de_saída.pdf>


//Exemplo de uso
wkhtmltopdf http://www.google.com google.pdf


//Caso precise esperar por algum javascript ou carregamento / processamento da página, basta definir um tempo de espera. Abaixo exemplo aguardando 15 segundos
wkhtmltopdf --javascript-delay 15000 http://www.drall.com.br drall.pdf

//Caso precise retirar todo e qualquer javascript
wkhtmltopdf --no-javascript http://www.drall.com.br drall.pdf

//Caso não queira imagens no pdf
wkhtmltopdf --no-images http://www.drall.com.br drall.pdf

Outras opções interessante são:

  • Personalizar altura e largura da tela utilizada para criar a saída. Podem ser utilizados em conjunto com outras opções:
    • –height <valor_numerico_do_total_px_desejado – integer>
    • –width <valor_numerico_do_total_px_desejado – integer>
  • Fazer um crop da tela, obtendo só parte desejada: (utilizar todos os argumentos no comando)
    • –crop-x <ponto de início no eixo X – integer>
    • –crop-y <ponto de início no eixo Y – integer>
    • –crop-h <altura do ponto Y até o limite em pixel – integer>
    • –crop-w <largura do ponto Y até o limite em pixel – integer>

A ferramenta utiliza o Qt WebKit rendering engine e não necessita de interface gráfica para ser executada. Esta é uma caracteristica importantíssima para quem quer gerar PDF de um HTML num servidor em produção / via linha de comando.

Um ponto importante da ferramenta, é que ela é capaz de criar certos pdf de certas páginas HTML. Não é capaz de gerar de todas. Em geral, detalhes gráficos de sites muito rico em gráficos, algumas páginas grandes ou com links de imagens ou css falhando, costuma dar problema também.

Mas esperamos que a dica possa ajudá-lo em sua tarefa

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!