Ayer recibí una petición interna para crear un reporte diario sobre la visualización de algunas Webs. Como en todos los casos vamos al terminal y a mirar el repo: yum search html | grep -i pdf Haciendo memoria recordé que ya necesité algo parecido en otra ocasión. Desde la web del proyecto podremos localizar más información sobre lo que hace wkhtmltopdf
Es un programa muy simple que no requiere hacer prácticamente nada, eso sí, trabajo con sistemas CentOS minimal y he tenido que meter algún que otro rpm del repo, pero han sido pocos.
Instalamos las dependecias (agrego -y para otra vez que lo necesite)
|
1 |
yum install -y qt-x11 libXrender xorg-x11-server-Xvfb bitmap-console-fonts.noarch fontconfig libXfont libXfont-devel libfontenc xorg-x11-font-utils freetype t1lib |
Arrancamos el gestor de ventanas virtual y lo dejamos en ejecución, puede que sea necesario meterlo en el init con un script, depende de lo crítico que sea:
|
1 |
Xvfb -a -s -screen 0 1280x1024x24 :2 & |
Pillamos el ejecutable:
|
1 |
wget -qO- http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2 | tar xjf - |
No, no descargo el tar… en el server no se mete basura, para eso está tu cacharro de pruebas o un repo propio de software donde almacenar las aplicaciones que tienes en producción.
He creado un sh que me permite automatizar el proceso y enviar el reporte por mail sobre un usuario que he llamado informes, este informe tiene horientación horizontal (landscape).
|
1 2 3 4 5 |
#!/bin/bash DISPLAY=:2 /home/informes/wkhtmltopdf-amd64 --orientation Landscape --javascript-delay 1200 --margin-bottom 0mm --margin-top 0mm --encoding utf-8 --no-stop-slow-scripts --use-xserver http://www.mfernandez.es /tmp/mfernandez.pdf uuencode /tmp/mfernandez.pdf /tmp/mfernandez.pdf | mail -r ReporteWeb@mfernandez.es -s "Reporte Web --Mfernandez.es-- $(date)" manuel@mfernandez.es chmod u+x <fichero.sh> |
Para que quede “bonita” la recepción de email, he puesto la opción -r sobre el comando mail, también he puesto algunas opciones como no tener márgenes en el PDF tratando de meterlo todo en una única hoja.
Entra con el usuario informes (el que yo tengo para estas acciones, tu lo haces como quieras) y generar una tarea programada con crontab -e y después verifícala con -l
|
1 |
00 07 * * * /home/informes/webs/reporteWeb.sh # Reporte Web, Cada dia a las 7 de la mañana |