Convertir HTML a PDF por línea de comandos

Coincide que en los proyectos que tengo para dos clientes diferentes necesito hacer la misma cosa: generar un PDF con datos personalizados. En un caso son facturas y en otro contratos.

Hasta ahora cuando necesitaba hacer un PDF usaba la librería de PHP FPDF, que está bastante bien, pero hay una alternativa mucho más sencilla: wkhtml2pdf.

Es importante que si vamos a usarlo en un servidor de producción, que no tiene servidor de ventanas, nos descarguemos la versión estática. Una vez instalado el proceso es tan sencillo como:

  1. Copiar el documento HTML base para tenerlo con el nombre que queramos.
  2. Modificarlo con PHP para incluir la información personalizada.
  3. Ejecutar wkhtml2pdf fichero.html fichero.pdf

Crear ventana de Chrome sin interfaz de usuario

Cuando estoy desarrollando para hive.ly me viene muy bien tener dos usuarios para comprobar interacciones, notificaciones, etc… Uno de ellos lo tengo en la ventana oficial de Chrome, a pantalla completa y con las herramientas de desarrollador en el otro monitor. El otro usuario lo tengo con una ventana de incógnito (para no interferir con las credenciales del usuario oficial) y no quiero que ocupe mucho, con un tamaño como el de un móvil pequeño me sirve.

En estos casos lo ideal es que la ventana de Chrome no tenga la barra de direcciones, ni las pestañas ni nada de nada, así ocupa lo mínimo imprescindible. Para conseguir esto abro la consola y escribo:

/opt/google/chrome/chrome --app=http://hivo --incognito

Con esto se consigue una ventana de Chrome sin interfaz de usuario, que puedo redimensionar y dejar en una esquina siempre visible.

Eliminar el cansino mensaje “Token mismatch” en phpMyAdmin

ATENCIÓN: esto solamente debe hacerse en instalaciones de phpMyAdmin de desarrollo local, nunca en un phpMyAdmin en un servidor de producción.

En el servidor local que uso para desarrollo tengo instalado phpMyAdmin y estaba ya hasta el gorro del mensaje “Error: token mismatch” que aparece cuando pasa un tiempo sin que hagas ninguna operación con él.

La solución más rápida que he encontrado para esto es abrir el fichero /libraries/common.inc.php (en mi equipo instalé phpMyAdmin con apt-get y está en /usr/share/phpmyadmin/libraries/common.inc.php), buscar este código

$token_mismatch = true;
if (PMA_isValid($_REQUEST['token'])) {
    $token_mismatch = ($_SESSION[' PMA_token '] != $_REQUEST['token']);
}

y cambiarlo por:

$token_mismatch = false;
/*if (PMA_isValid($_REQUEST['token'])) {
    $token_mismatch = ($_SESSION[' PMA_token '] != $_REQUEST['token']);
}*/

Así, a lo burro. Pero como es un servidor local al que no se puede acceder desde fuera el riesgo de seguridad que conlleva se puede asumir.