Como funciona la ‘Versión en PDF’


Desde que se anunció la incorporación de la versión en PDF a la web de Bulma, he recibido mensajes (ya sea en forma de comentario o en forma de email) pidiendo que, por favor, explique cómo lo hago. La verdad es que es muy sencillo y el código de Bulma es libre así que se puede mirar, copiar y mejorar.

Aprovechare este articulillo para decir que todo el código de Bulma está accesible via CVS (existen diversos artículos sobre el tema: 1 y 2), pero también podemos mirar el código por una interfaz web.

Entrando ya en el tema del artículo, en Bulma utilizamos la aplicación htmldoc para generar el PDF. Instalarla en Debian es tan simple como: ‘apt-get install htmldoc’.
Esta aplicación ofrece una interfaz gráfica para convertir páginas web a PDF (entre otras cosas), pero también puede utilizarse para realizar la conversión desde la línea de comandos.
Como se puede ejecutar desde la línea de comandos, desde PHP debemos utilizar una función del estilo de system() o exec(). Por suerte, en PHP contamos con la función passthru() que ejecuta el programa que le pasemos como parámetro y envía su salida estandar (stdout) hacia el navegador.

El código PHP que usamos para generar el PDF es:

header(“Content-Type: application/pdf”);
header(“Content-Disposition: attachment; filename=\”bulma-$nIdNoticia.pdf\””);
passthru(“htmldoc –format pdf –left 2.5cm –right 1.5cm –top 1.5cm –bottom 1.5cm ” .
    “–headfootsize 9 –header ‘t l’ –footer ‘/’ ” .
    “–logoimage $DOCUMENT_ROOT$my_dir/images/tux.png –linkcolor ‘#0000FF’ ” .
    “–size ‘a4’ –fontsize 10 –charset 8859-15 ” .
    “–webpage http://$server_dir/impresion.phtml?nIdNoticia=$s_nIdNoticia”);

Explicando un poco el código:

  • Le indicamos al navegador que lo que le enviamos es un PDF.
  • Que se lo enviamos en forma de attachment y que el nombre del fichero es “bulma-xxxx.pdf”. De esta forma conseguimos que si le damos a guardar, el navegador pondrá el nombre “bulma-xxxx.pdf” en lugar de “pdf.phtml”, que es el nombre del script php con el código que genera el PDF. (en IE funciona y en Konqueror a medias)
  • En la tercera línea es donde realmente llamamos a htmldoc: le indicamos que el formato de salida es PDF, cómo queremos que formatee la página, le decimos que la fuente es una web y cual es la URL que queremos que convierta.
    Como no le indicamos fichero de salida, htmldoc enviará el PDF a la salida estándar, y como los estamos ejecutando mediante passthru(), lo que vaya a la salida estandar se enviará al cliente. De esta manera la salida del htmldoc va a para al navegador del visitante. Es deir, enviamos el PDF hacia el cliente.
  • Como veis es muy simple, y más si obviamos los parametros del htmldoc que usamos para indicar el formato de la página. Todo esto viene estupendamente explicado en el ‘man htmldoc’.

    Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1617 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.