Generación de PDF's con PHP y la librería DOMPDF

De Manuais Informática - IES San Clemente.
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Generación de PDF's con PHP

Vamos a ver cómo generar PDF's desde PHP empleando una librería llamada DomPDF.

Esta librería nos permite convertir un documento HTML a PDF, con lo cuál es muy sencillo el generar cualquier documento PDF, simplemente generando la página HTML e indicándole a la librería que genere el documento PDF.

Página oficial de la librería DomPDF

Descarga de la librería DOMPDF

Desde github podremos descargar la librería.

https://github.com/dompdf/dompdf/archive/master.zip

Una vez descargada y descomprimida, las únicas carpetas que necesitamos son include, lib y los ficheros dompdf_config.custom.inc.php y dompdf_config.inc.php.

Nos copiaremos esas carpetas y esos ficheros a una carpeta de nuestro proyecto, por ejemplo a la carpeta /lib/pdf/.

Requerimientos previos

  • PHP 5.0+ (5.3 recomendado)
  • Extensión MBString
  • Extensión DOM (incluída con PHP5)
  • Algunas fuentes. Internamente soporta Helvetica, Times-Roman, Courier y Zapf-Dingbats, pero si deseas usar otras tendrás que instalarlas.

Más información en: https://github.com/dompdf/dompdf

Configuración de la librería DOMPDF

En el fichero dompdf_config.inc.php está la configuración por defecto de la aplicación, pero si queremos configurar nuestros parámetros podremos hacerlo editando el ficheor dompdf_config.custom.inc.php y descomentando las líneas que nos interesen y activando o desactivando sus valores, por ejemplo:

//define("DOMPDF_TEMP_DIR", "/tmp");
//define("DOMPDF_CHROOT", DOMPDF_DIR);
define("DOMPDF_UNICODE_ENABLED", true);
define("DOMPDF_PDF_BACKEND", "PDFLib"); //CPDF
define("DOMPDF_DEFAULT_MEDIA_TYPE", "print");
define("DOMPDF_DEFAULT_PAPER_SIZE", "A4");
//define("DOMPDF_DEFAULT_FONT", "serif");
//define("DOMPDF_DPI", 72);
define("DOMPDF_ENABLE_PHP", true);
define("DOMPDF_ENABLE_REMOTE", true);
define("DOMPDF_ENABLE_CSS_FLOAT", true);
//define("DOMPDF_ENABLE_JAVASCRIPT", false);
//define("DEBUGPNG", true);
//define("DEBUGKEEPTEMP", true);
//define("DEBUGCSS", true);
//define("DEBUG_LAYOUT", true);
//define("DEBUG_LAYOUT_LINES", false);
//define("DEBUG_LAYOUT_BLOCKS", false);
//define("DEBUG_LAYOUT_INLINE", false);
//define("DOMPDF_FONT_HEIGHT_RATIO", 1.0);
//define("DEBUG_LAYOUT_PADDINGBOX", false);
//define("DOMPDF_LOG_OUTPUT_FILE", DOMPDF_FONT_DIR."log.htm");
//define("DOMPDF_ENABLE_HTML5PARSER", true);
//define("DOMPDF_ENABLE_FONTSUBSETTING", true);

// DOMPDF authentication
//define("DOMPDF_ADMIN_USERNAME", "user");
//define("DOMPDF_ADMIN_PASSWORD", "password");

Uso básico de la librería DOMPDF

Lo primero que tendremos que hacer es cargar la librería, y a partir de ahí podremos generar el documento HTML que luego imprimiremos.

ATENCIÓN: Si no vamos a usar fuentes adicionales tendremos que ir a la línea 335 del fichero dompdf_config.inc.php y comentarla.

Véase el siguiente ejemplo de utilización de dicha librería:

<?php 
# Cargamos la librería dompdf.
require_once 'lib/pdf/dompdf_config.inc.php';

# Contenido HTML del documento que queremos generar en PDF.
$html='
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ejemplo de Documento en PDF.</title>
</head>
<body>

<h2>Ingredientes para la realización de Postres.</h2>
<p>Ingredientes:</p>
<dl>
<dt>Chocolate</dt>
<dd>Cacao</dd>
<dd>Azucar</dd>
<dd>Leche</dd>
<dt>Caramelo</dt>
<dd>Azucar</dd>
<dd>Colorantes</dd>
</dl>

</body>
</html>';

# Instanciamos un objeto de la clase DOMPDF.
$mipdf = new DOMPDF();

# Definimos el tamaño y orientación del papel que queremos.
# O por defecto cogerá el que está en el fichero de configuración.
$mipdf ->set_paper("A4", "portrait");

# Cargamos el contenido HTML.
$mipdf ->load_html(utf8_decode($html));

# Renderizamos el documento PDF.
$mipdf ->render();

# Enviamos el fichero PDF al navegador.
$mipdf ->stream('FicheroEjemplo.pdf');
?>

Documentación y Wiki de la librería DOMPDF

--Veiga (discusión) 02:15 6 may 2013 (CEST)