La herramienta
wkhtmltopdf nos permite generar el PDF de una pagina html, muy útil si queremos generar reportes PDF de nuestros sistemas, es gratuita asi que mas conveniente para su uso. La instalación es algo complicada ya que no existe mucha documentación al respecto pero al final resulto con éxito, he aquí describo los pasos que me funcionaron:
1. Instalar dependencias previas
Centos
# yum install -y xorg-x11-fonts-75dpi
# yum install -y xorg-x11-fonts-Type1
Ubuntu
# apt-get install xfonts-75dpi
2. Instalar la libreria wkhtmltopdf
Anteriormente se podía instalar directo de sourceforge (downloads.sourceforge.net) pero actualmente la version 0.12.5 wkhtmltopdf tiene su propio repositorio:
Centos 6
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos6.i686.rpm
Centos 7
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.i686.rpm
Ubuntu 14.04
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.trusty_i386.deb
Ubuntu 16.04
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.xenial_i386.deb
Solo hay que seleccionar el archivo .rpm o .deb adecuado a nuestra versión del linux y la arquitectura correcta, podemos checar el listado en:
https://wkhtmltopdf.org/downloads.html
Una vez descargado el archivo procederemos a instalarlo
Centos 6
rpm -Uvh wkhtmltox-0.12.5-1.centos6.i686.rpm
Ubuntu 16.04
dpkg -i wkhtmltox_0.12.5-1.xenial_i386.deb
3. Realizar una prueba
Una vez que lo tengamos instalado para probarlo, bastara con teclear el comando y como parametro poner la url de la pagina que queremos convertir
$ wkhtmltopdf http://www.google.com.mx miarchivo.pdf
Si todo funciona correctamente nos debe entregar un informe de lo realizado y el archivo PDF generado:
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
En la carpeta donde hayamos ejecutado el comando tendremos nuestro archivo PDF. Esta misma librería la podemos utilizar con PHP, pero eso lo dejamos para otro post.