23 abr 2012

Generando PDF en lugar de HTML con PHP

A mi el PDF siempre me ha parecido un formato bastante coñazo ¿quien no no ha hecho click en un resultado de búsqueda de Google y ha gritado "NOOooooo" cuando se ha dado cuenta que estaba descargando un PDF de 25 Mb?

Este post es para desarrolladores PHP, no para que pases de página web a pdf, para eso ya tienes en chrome la opción de "guardar como pdf" al darle a "imprimir".

Logo

En fin, pero al igual que en la guerra, la informática hace extraños amigos de cama y hace poco he tenido que generar PDFs para imprimir y he tenido que investigar un poco.
¿Por qué pdf y no html?
descargar_mi_pdf
  1. Se ve igual en todos los visores/naegadores e impresiones
  2. Incluye dentro las imágenes y soporta enlaces y otras cosas
No, no es porque no se pueda copiar y pegar o editar, todo es susceptible de esto.

A lo que voy, resulta que puedes convertir un html a PDF con PHP fácilmente (siempre que tengas unas nociones básicas de PHP) con DOMpdf.
Lo descargáis, y lo incluís en vuestro script php y hacéis algo parecido a esto:

require_once("includes/dompdf/dompdf_config.inc.php");
$html = file_get_contents("archivo_pdf.html");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('a4', 'portrait');
$dompdf->render();
$dompdf->stream("descargar_mi_pdf.pdf", array("Attachment" => false));

Lo que hacemos es, importamos la librería pdf, luego cargamos el contenido del html (que puede y debe incluir el css), luego creamos un nuevo objeto dompdf, le decimos al objeto que cargue el html, ponemos el tamaño del papel y la orientación, luego que lo dibuje y finalmente que lo mande a pantlla con el nomre de archivo  "descargar_mi_pdf.pdf".

Yo uso smarty (del que ya hablaré en un futuro) para separar la lógica del aspecto. Pero me ha sorprendido lo fácil que es DOMpdf. Espero que os sirva.




6 comentarios:

  1. PDF es el formato muy especial. Pero sin duda, muy útil y flexible en el trabajo. A pesar de los propios archivos tienen algunos problemas, mientras que la lectura de todos modos el formato se puede variar útil.

    __________________
    mp4 to avi, Pam

    ResponderEliminar
    Respuestas
    1. La frase final esta un poco rara ¿es traducida por ordenador?
      Si quieres puedes escribir en inglés

      Eliminar
    2. what? can you give more detailed info?
      converter dvd to mp4 mac

      Eliminar
    3. about what? about my comment or about my article with dompdf?

      Eliminar
  2. Para qué versiones de PHP funciona dompdf ???
    Lo que ocurre es que en la empresa tienen todo en PHP 4.3.2
    Y hasta ahora solo me devuelve errores... :-|

    ResponderEliminar
    Respuestas
    1. ó en todo caso, qué otra opción recomiendan para crear PDFs en php 4.3.2 ???

      Gracias de antemano. :-)

      Eliminar