Saltar al contenido
LINWIND de Windows a Linux

~/diseno-y-web

DomPDF, librería PHP para convertir HTML a PDF

Marcos · · 2 min

Dompdf es una librería para PHP que convierte un documento HTML en un PDF, y lo hace con bastante facilidad. Su punto fuerte es que lee las hojas de estilo, tanto las externas como las que van dentro de la página o en el atributo style de cada elemento, así que el PDF sale muy parecido al original.

Según su repositorio oficial en GitHub, entiende la mayor parte de CSS 2.1 y algunas propiedades de CSS3 (incluidas las reglas @import, @media y @page), tablas complejas con celdas combinadas, imágenes GIF, PNG, BMP y JPEG y SVG básico. Además no depende de ninguna librería externa de PDF.

Cómo se instala hoy

Cuando escribí esta entrada se descargaba de Google Code, que ya no está disponible. Ahora el proyecto vive en GitHub y lo más cómodo es instalarlo con Composer:

composer require dompdf/dompdf

Si no usas Composer, en la página de versiones publicadas tienes el paquete en zip listo para descomprimir, y entonces se carga con require_once 'dompdf/autoload.inc.php';. La versión actual pide PHP 7.1 o superior con las extensiones DOM y MBString, y GD para procesar las imágenes.

Un ejemplo de uso

El ejemplo que puse en 2011 usaba la clase DOMPDF y el fichero dompdf_config.inc.php, que ya no existen en las versiones actuales. Así queda hoy:

use Dompdf\Dompdf;
use Dompdf\Options;

require 'vendor/autoload.php';

// Obtenemos el código HTML de la página que nos interesa
$html = file_get_contents('https://www.dominio.com/url.html');

// Hace falta para que cargue hojas de estilo e imágenes por http
$options = new Options();
$options->set('isRemoteEnabled', true);

$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream('ejemplo.pdf');

Por seguridad, Dompdf no carga nada de internet si no activas isRemoteEnabled, y además PHP necesita la extensión curl o tener allow_url_fopen activado. Si tu HTML solo usa estilos e imágenes locales, deja esa opción desactivada.

Lo que no hace

Conviene saber sus límites antes de diseñar la página: no entiende flexbox ni CSS Grid, y una fila de una tabla no se puede partir entre dos páginas, así que tiene que caber entera en una. Con maquetaciones a base de tablas y bloques sencillos funciona bien. Las fuentes básicas del PDF solo cubren la codificación Windows ANSI, que incluye las tildes y la ñ; si necesitas otros alfabetos, usa en tu CSS una fuente con más caracteres, como la DejaVu Sans que Dompdf ya trae instalada.

Si trabajas con Laravel o Symfony, hay paquetes que lo integran, como laravel-dompdf. La documentación completa está en la wiki del proyecto.

Revisado y actualizado en octubre de 2026.

# sigue leyendo

1 comentario

  1. Tengo una duda con esto ya pude gerenar mi pdf todo bien el problema esq en q al generearlo necesiito refrescar la pagina y hasta ahora no me ha funcionado pongo un ejemplo

    $html=$generear->facturete($clenciud,$clendir,$valono,$folousad, $clenrfc,$clenombre,$subotal,$iva,$realtot,$retiva,$retisr,
    $usernameValue,$rcfvalor,$direccionValue,$emailValue,
    $usados,$caja_canti,$fecha,$caja,$caja2,$caja3,$caja4,
    $logo,$identif,$aprobacion,$fechexpi,$extmod1,$extmod2,
    $totalescrit,$observaciones,$telefono,$web,$nopredial,
    $expedicion,$regimen,$metodo_pago,$forma_pago,$cajaunid,
    $cuenta_pago);
    $dompdf=new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    $usado=$usados+1;
    $dompdf->stream(«ejemplo.pdf»);
    header(«Location: paginaadireccioar.php»);

Deja un comentario

Tu correo no se publica.

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