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 wkhtmltoimage. (HTML2PDF)
Em sistemas Debian-like, como o Ubuntu, para instalar este pacote basta:
aptitude install wkhtmltoimage
E pronto!
Para usar, basta:
wkhtmltoimage <página_html_alvo> <arquivo_de_saída.(png|jpg)> //Exemplo de uso wkhtmltoimage http://www.google.com google.png //Caso precise esperar por algum javascript ou carregamento / processamento da página, basta definir um tempo de espera. Abaixo exemplo aguardando 15 segundos wkhtmltoimage --javascript-delay 15000 http://www.drall.com.br drall.png //Caso precise retirar todo e qualquer javascript wkhtmltoimage --no-javascript http://www.drall.com.br drall.png //Caso não queira imagens no pdf wkhtmltoimage --no-images http://www.drall.com.br drall.png
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 um screenshot de um HTML num servidor em produção / via linha de comando.
Esperamos que a dica possa ajudá-lo em sua tarefa