Hoy vamos a ver cómo convertir un documento HTML (o página web) a un documento PDF utilizando la línea de comandos y un ejecutable llamado wkhtmltopdf
que convierte HTML a PDF.
Si te preguntas de qué nos sirve de esto yo te respondo: gracias a que se puede ejecutar desde la línea de comandos, CMD o como lo llames, podemos hacer que casi cualquier lenguaje de programación invoque al binario y así convertir documentos o páginas web HTML a PDF desde una página web o aplicación de escritorio.
Instalar wkhtmltox
Ya he creado un post sobre cómo instalar y agregar la herramienta a la PATH, míralo aquí. En el resto del tutorial asumiré que lo has instalado correctamente.
Convertir sitio web a PDF
Veamos nuestro primer ejemplo de uso de wkhtmltopdf. La sintaxis básica es:
wkhtmltopdf sitio.com destino.pdf
Así de simple podemos convertir una página web o sitio web a un PDF, indicando la URL del sitio web y el nombre del documento de salida.
Para probar voy a convertir mi CV en un PDF así que:
wkhtmltopdf https://parzibyte.github.io/cv/ parzibyte.pdf
El comando se ejecuta:
Después, en la ruta especificada estará el documento:
Así podemos descargar cualquier página y convertirla a un documento PDF.
Convertir documento HTML a PDF
Si tienes un documento HTML local (es decir, que no es una página web) también puedes usar wkhtmltopdf para generar un PDF del mismo. En mi caso tengo un archivo llamado index.html
cuyo contenido es el siguiente:
Para convertirlo a PDF utilizo lo siguiente:
wkhtmltopdf index.html index.pdf
En este caso no especifico ninguna ruta absoluta porque los archivos están en la carpeta en donde estoy ubicado dentro de la terminal o CMD. La salida es:
De este modo, si tienes un archivo HTML local puedes convertirlo a PDF sin necesidad de tener un servidor web o cosas así.
Agregar varios documentos
Puedes combinar varios documentos HTML para el PDF que se genera al final. Por ejemplo, puedes especificar varios archivos HTML o varias páginas web. Incluso puedes combinarlos.
Los documentos serán agregados en el orden en el que los especificas. Para este ejemplo combinaré el index.html
y mi página web. El comando es:
wkhtmltopdf https://parzibyte.github.io/cv/ index.html combinado.pdf
Mientras el documento generado sea el último argumento que pasamos, todo está bien. Al final queda así:
Fíjate en el índice o tabla de contenidos y en el documento. Cuando se termina el del CV comienza el del ticket HTML.
De esta manera es como podemos combinar varios objetos HTML para generar un PDF al final, utilizando la línea de comandos y wkhtmltopdf
.
Imágenes locales
Si te fijas, en el ejemplo del HTML la imagen que aparece es una imagen en base 64. Por otro lado, las del CV son imágenes de internet; para usar imágenes relativas recomiendo indicar rutas relativas al documento.
Por ejemplo:
De este modo, mientras la imagen esté relativa al documento, la misma será cargada generando así el documento PDF.
Más información
Si quieres, puedes ver la documentación oficial o el código fuente de esta grandiosa utilidad. Yo no tengo nada que ver con la misma, solo vengo a exponer cómo se usa.
Después de generar tus documentos PDF tal vez quieras imprimirlos.