Mostrando entradas con la etiqueta generar. Mostrar todas las entradas
Mostrando entradas con la etiqueta generar. Mostrar todas las entradas

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.