Generar un archivo PDF con contenido HTML

En este artículo vamos a ver un tutorial y código de ejemplo que te permite generar fácilmente un archivo PDF con contenido HTML. Generar PDF con simple HTML es posible.

Existe una librería PHP para crear archivos PDF mediante código PHP pero es algo compleja de entender. Podéis darle un vistazo a Crear un PDF con PHP. Utilizar esta librería es muy complejo debido a que nos tenemos que amoldar a sus funciones y complementos.

En este caso, si ya tienes nociones de HTML te resultará mucho más fácil utilizar la librería DOMPDF que no es más que una librería PHP que te permite generar archivos PDFs a partir de contenido HTML, es decir, convertir código HTML en PDF.

En el ejemplo que vamos a ilustrar vamos a tener una tabla HTML con datos de usuarios y tendremos un enlace o botón que ejecuta el proceso de guardar y abrir la tabla en un PDF directamente. Tenemos una tabla estática pero podríamos hacerlo igual con una tabla dinámica obteniendo los datos de una base de datos por ejemplo.

Para implementar esto en tu sitio Web, lo primero que debes hacer es descargar la librería DOMPDF que está disponible gratis en GitHub e incluirla en nuestro proyecto o servidor.

Creamos  un archivo HTML o PHP con el contenido de la tabla y el enlace que genera y abre el PDF.

Código HTML

<table width="500px" cellpadding="5px" cellspacing="5px" border="1">
    <tr bgcolor="#CCCCCC">
        <td>Nombre</td>
        <td>Apellido</td>
        <td>Email</td>
        <td>Edad</td>
    </tr>
    <tr bgcolor="#FF9933">
        <td>Antonio</td>
        <td>Lopez</td>
        <td>alopez@gmail.com</td>
        <td>25</td>
    </tr>
    <tr bgcolor="#FF9933">
        <td>Sergio</td>
        <td>Martinez</td>
        <td>sgm@gmail.com</td>
        <td>47</td>
    </tr>
    <tr bgcolor="#FF9933">
        <td>Natalia</td>
        <td>Estrada</td>
        <td>natty@gmail.com</td>
        <td>22</td>
    </tr>
</table><br/>
<a class="btn btn-primary" href="pdf.php"><i class="fa fa-download"></i> Descargar archivo PDF</a>

Código PHP

Y ahora solo falta la clave del asunto, el contenido del archivo pdf.php que es el que se ejecuta tras pulsar en el botón «Descargar archivo PDF»:

<?php ob_start(); ?>
<h2>Lista de usuarios</h2>
<table width="500px" cellpadding="5px" cellspacing="5px" border="1">
    <tr bgcolor="#CCCCCC">
        <td>Nombre</td>
        <td>Apellido</td>
        <td>Email</td>
        <td>Edad</td>
    </tr>
    <tr bgcolor="#FF9933">
        <td>Antonio</td>
        <td>Lopez</td>
        <td>alopez@gmail.com</td>
        <td>25</td>
    </tr>
    <tr bgcolor="#FF9933">
        <td>Sergio</td>
        <td>Martinez</td>
        <td>sgm@gmail.com</td>
        <td>47</td>
    </tr>
    <tr bgcolor="#FF9933">
        <td>Natalia</td>
        <td>Estrada</td>
        <td>natty@gmail.com</td>
        <td>22</td>
    </tr>
</table>
<?php
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new DOMPDF();
$dompdf->load_html(ob_get_clean());
$dompdf->render();
$pdf = $dompdf->output();
$filename = "ejemplo.pdf";
file_put_contents($filename, $pdf);
$dompdf->stream($filename);
?>

Primero tenemos que llamar a la función ob_start() que sirve para indicar que se ha de iniciar el buffering de la salida, es decir, que debe empezar a guardar la salida en un bufer interno, en vez de enviarla al cliente. De modo que, aunque se escriba código HTML con echo o directamente fuera del código PHP, no se enviará al navegador hasta que se ordene explícitamente. O eventualmente, hasta que se acabe el procesamiento de todo el archivo PHP.

Seguidamente añadimos el código HTML o PHP que queremos añadir al archvio PDF.

En el ejemplo en funcionamiento estamos agregando HTML estático. No sería difícil acceder a una base de datos y recuperar los datos para mostrarlos en la tabla con echos.

Finalmente invocamos la clase DOMPDF y cargamos el contenido HTML que tenemos en el buffer de salida generando el archivo PDF.

Ver demo Descargar

Esta entrada ha sido actualizada el 26/11/2018.

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(24 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

69 respuestas a “Generar un archivo PDF con contenido HTML”

  1. Nati dice:

    Hola, soy principiante, el dompdf en donde se guarda?

  2. Cristian Valencia Vinagre dice:

    Hola buenas tardes quisiera saber que corregir ya me da el pdf pero en el archivo me manda este error… podrias ayudarme porfa amigo

    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\src\Dompdf.php on line 610
    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\src\Dompdf.php on line 631
    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\lib\Cpdf.php on line 467
    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\lib\Cpdf.php on line 474
    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\lib\Cpdf.php on line 481
    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\lib\Cpdf.php on line 488
    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»? in
    C:\xampp\htdocs\isset\dompdf\src\Css\Stylesheet.php on line 1360

    • Jose Aguilar dice:

      Hola,

      Me gustaría poder ayudarte pero estos errores o más bien advertencias son producidas por la misma librería que ha desarrollado un tercero. Deberás ponerte en contacto con el desarrollador de DOMPDF para que pueda ayudarte mejor.

      Otra solución es desactivar los errores en el servidor. Quizá desaparece.

      Saludos

  3. Jose dice:

    Cuando le doy descragar pdf , automaticamente me aparece la pagina pdf.php en el chorme

  4. Sisco dice:

    Hola, me da el siguiente error:
    Fatal error: Call to a member function get_cellmap() on a non-object in /home/jcesacat/public_html/gestio/dompdf/src/FrameReflower/TableCell.php on line 37

    Puedes ayudarme?

    Gracias

  5. Ivanis Mirabal dice:

    Lo que me sucede a mi es q cuando llego a un número x de caracteres no me renderiza a pdf me lo deja como una web html. Ya he aumentado el tamaño con ini_limite hasta 1034M y nada.

    Saludos espero me puedan ayudar.

  6. ccessaro dice:

    Buenas tardes!!!
    Tengo DOMPDF y creo un pdf con php y datos desde la base de datos MySQL y me genera el pdf y lo puedo ver o descargar … pero solo una hoja A4 y quiero crear un PDF de 3 o mas paginas … no he encontrado ningun ejemplo.
    Si me puedes ayudar te lo agradezco.

  7. Carlos dice:

    Alguien tiene un ejemplo con una tabla dinamica? es decir, primero se hace la consulta a la base de datos y y se genera una tabla en html. A partir de esa tabla ya creada generar el pdf

  8. Carlos Esquiu dice:

    Buenas

    Estoy probando DOMPDF pero tengo un problema con el tema de la paginación. No se como forzar nuevas paginas

    Esta por terminar de implementar y diseñar el pdf, solo tengo lo básico, ya que como digo, estoy probandolo.

    Quiero que me salga un registro por página

    Tal y como esta ahora, me salen todos los registros en un PDF en una misma linea en una misma posición:

    ——————————————
    query($sql);
    while ($row = $tarjetas->fetch_array(MYSQLI_ASSOC))
    {
    $html=»

    $row[NUM_TARJET]

    «;
    }

    $dompdf = new Dompdf();

    // instantiate and use the dompdf class
    $dompdf->loadHtml($html);

    // (Optional) Setup the paper size and orientation
    $dompdf->setPaper(‘A4’, ‘landscape’);

    // Render the HTML as PDF
    $dompdf->render();

    // Output the generated PDF to Browser
    $dompdf->stream();

    ?>
    ——————————————

    a ver si me puedes echar una mano. Muchas gracias por todo

  9. Felipe dice:

    Hola Jose favor tu ayuda. Mira todo bien con la tabla solo que SIEMPRE me muestra la ultima fila en la hoja siguiente. Me gustaría que quedaran todas en la misma hoja (de manera compacta).

    Saludos y gracias! Muy útil tu publicación!

  10. Carlos b@3 dice:

    Hola

    Es posible que los datos de la tabla se ingresen al momento antes de crear el archivo pdf ?

    en este código como se podría agregar la fecha actual y un numero de folio que sea diferente en cada ocasión ?

  11. Elias dice:

    como puedo hacer para que funciones en localhost

  12. Fabián dice:

    Hola José, al descargar la librería no aparecen los archivos el archivo (“dompdf/dompdf_config.inc.php”) y falta la carpeta include.
    Se agradece ayuda.

  13. nelson rodriguez dice:

    hola buenas noche la libreria dompdf no contiene el archivo («dompdf/dompdf_config.inc.php»), y al probarla no tengo idea como hacerlo, soy nuevo en programacion. gracias de antemano

  14. Abraxas dice:

    mta pero ahí el chiste es que se muestre en el html y mandarlo al php, MAS NO escribir el código en los 2 archivos en el php y en el html

  15. Guillermo dice:

    Hola José, quería pedirte por favor si puedes poner o subir el código fuente del ejemplo.
    Soy nuevo en esto y algunas cosas aun no me quedan claras.

    Gracias.

    • Jose Aguilar dice:

      Hola,

      Siento decir que no es posible habilitar un enlace de descargar debido a que los archivos de la librería Dompdf son demasiado grandes. Debes descargarlos de su página oficial y luego generar tu documento con lo explicado en este post.

      Saludos

  16. Herman dice:

    Que tal amigos??
    Han intentado generar un pdf a partir de una URL real??
    Por ejemplo http://www.google.com?

    Saludos
    Hermann

  17. Carlos dice:

    Buena aportación! Existe alguna manera de descargar el pdf de manera mas rápida? Esto seria excelente….tengo una aplicación en la cual debo generar arriba de 500 pdfs y esto puede demorar algunos minutos debido a que se tarda por lo menos 15 segundos en descargar cada pdf. Si alguien pudiese ayudarme se los agradeceria

  18. Carlos dice:

    Muy bueno y fácil, me toma css desde un archivo externo, pero me surgió un problema.
    Me arma el pdf pero no me da la posibilidad de grabarlo en alguna carpeta.

    Gracias

  19. idaira dice:

    hola buenas tardes, al generar el pdf me da el siguiente error;
    Fatal error: Call to undefined method DOMText::getAttribute() in /home/tonotour/public_html/dompdf/src/Cellmap.php on line 555

    Es por el colspan de las tablas.

    tengo unas cuantas lineas de codigo parecidas a estas;
    {HINVOICENO}: {ID}
    {_JOMRES_BOOKING_NUMBER}: {BOOKING_NUMBER}
    espero respuesta pronto.gracias

  20. Dohan dice:

    Hola,, tienes una buena web con informacion muy util, buscando por muchos lados no he podido encontrar lo que busco, quiero exportar una tabla juntocon su grafica en php ,, he visto ejemplos con librerias y crear una imagen temporal puesto que no lo he logrado aun, y he leido que no es de buena calidad,ojala me pudiaras apoyar con algun consejo o un ejemplo basico que me pudiera ayudar, ya que en la web no hay ejemplo parecido, al menos no he encontrado uno, gracias

  21. Elizabeth dice:

    Hola, gracias por la ayuda, pero tengo un problema. Tengo una especie de «Factura» con html/php que necesito pasar a pdf, pero cuando le digo al botón que me genere el archivo, la carga demora mucho y cuando al final me lo genera, me envía un archivo corrupto. Lo he tratado de abrir con el navegador y con foxit y me envía error en el archivo pdf. ¿Qué crees que podría estar ocurriendo?
    Agradezco tu respuesta!.

  22. Marcelo dice:

    Hola Jose! muy bueno el post,
    Te hago una pregunta:
    Como habría que hacer si lo que quiero convertir a PDF es lo que me devuelve un formulario de contacto?

    Gracias.

    • Jose Aguilar dice:

      Hola buenas tardes,

      No sabría responderte, asi que lo dejo abierto a ver si alguien se anima a responder.

      saludos

  23. dany dice:

    hola jose para empezar muy bueno tu post excelente te doy 1000 puntos pero tengo un problemilla como hago para cambiar la hoja es decir en tamaño y orientación…….

  24. Jose Gomez dice:

    Hola José:
    Me he bajado el dompdf y he copiado tu mismo ejemplo en mi servidor, dentro y fuera del directorio www, pero al ejecutarlo me sale este error siempre:
    *****************
    array ( ‘sans-serif’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Helvetica’, ‘bold’ => DOMPDF_FONT_DIR . ‘Helvetica-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Helvetica-Oblique’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Helvetica-BoldOblique’, ), ‘times’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Times-Roman’, ‘bold’ => DOMPDF_FONT_DIR . ‘Times-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Times-Italic’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Times-BoldItalic’, ), ‘times-roman’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Times-Roman’, ‘bold’ => DOMPDF_FONT_DIR . ‘Times-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Times-Italic’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Times-BoldItalic’, ), ‘courier’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Courier’, ‘bold’ => DOMPDF_FONT_DIR . ‘Courier-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Courier-Oblique’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Courier-BoldOblique’, ), ‘helvetica’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Helvetica’, ‘bold’ => DOMPDF_FONT_DIR . ‘Helvetica-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Helvetica-Oblique’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Helvetica-BoldOblique’, ), ‘zapfdingbats’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘ZapfDingbats’, ‘bold’ => DOMPDF_FONT_DIR . ‘ZapfDingbats’, ‘italic’ => DOMPDF_FONT_DIR . ‘ZapfDingbats’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘ZapfDingbats’, ), ‘serif’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Times-Roman’, ‘bold’ => DOMPDF_FONT_DIR . ‘Times-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Times-Italic’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Times-BoldItalic’, ), ‘monospace’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Courier’, ‘bold’ => DOMPDF_FONT_DIR . ‘Courier-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Courier-Oblique’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Courier-BoldOblique’, ), ‘fixed’ => array ( ‘normal’ => DOMPDF_FONT_DIR . ‘Courier’, ‘bold’ => DOMPDF_FONT_DIR . ‘Courier-Bold’, ‘italic’ => DOMPDF_FONT_DIR . ‘Courier-Oblique’, ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Courier-BoldOblique’, ), // ‘arial’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Arial’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Arial_Bold’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Arial_Italic’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Arial_Bold_Italic’, // ), // ‘comic sans’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Comic_Sans_MS.ttf’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Comic_Sans_MS_Bold.ttf’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Comic_Sans_MS.ttf’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Comic_Sans_MS.ttf’, // ), // ‘georgia’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Georgia’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Georgia_Bold’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Georgia_Italic’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Georgia_Bold_Italic’, // ), // ‘lucida console’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘lucon’, // ‘bold’ => DOMPDF_FONT_DIR . ‘lucon’, // ‘italic’ => DOMPDF_FONT_DIR . ‘lucon’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘lucon’, // ), // ‘times new roman’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Times_New_Roman’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Times_New_Roman_Bold’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Times_New_Roman_Italic’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Times_New_Roman_Bold_Italic’, // ), // ‘trebuchet’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS_Bold’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS_Italic’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS_Bold_Italic’, // ), // ‘trebuchet ms’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS_Bold’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS_Italic’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Trebuchet_MS_Bold_Italic’, // ), // ‘silkscreen’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘slkscr’, // ‘bold’ => DOMPDF_FONT_DIR . ‘slkscrb’, // ‘italic’ => DOMPDF_FONT_DIR . ‘slkscr’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘slkscr’, // ), // ‘silkscreen expanded’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘slkscre’, // ‘bold’ => DOMPDF_FONT_DIR . ‘slkscreb’, // ‘italic’ => DOMPDF_FONT_DIR . ‘slkscre’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘slkscre’, // ), // ‘verdana’ => // array ( // ‘normal’ => DOMPDF_FONT_DIR . ‘Verdana’, // ‘bold’ => DOMPDF_FONT_DIR . ‘Verdana_Bold’, // ‘italic’ => DOMPDF_FONT_DIR . ‘Verdana_Italic’, // ‘bold_italic’ => DOMPDF_FONT_DIR . ‘Verdana_Bold_Italic’, // ), )
    Warning: file_put_contents(/home/s03196b2/public_html/Entradas/dompdf/lib/fonts/dompdf_font_family_cache) [function.file-put-contents]: failed to open stream: Permission denied in /home/s03196b2/public_html/Entradas/dompdf/include/font_metrics.cls.php on line 231

    Warning: Invalid argument supplied for foreach() in /home/s03196b2/public_html/Entradas/dompdf/include/font_metrics.cls.php on line 168

    Warning: Invalid argument supplied for foreach() in /home/s03196b2/public_html/Entradas/dompdf/include/font_metrics.cls.php on line 175

    Fatal error: Uncaught exception ‘DOMPDF_Exception’ with message ‘Unable to find a suitable font replacement for: ‘serif» in /home/s03196b2/public_html/Entradas/dompdf/include/style.cls.php:805 Stack trace: #0 /home/s03196b2/public_html/Entradas/dompdf/include/style.cls.php(718): Style->get_font_family() #1 /home/s03196b2/public_html/Entradas/dompdf/include/text_frame_reflower.cls.php(165): Style->__get(‘font_family’) #2 /home/s03196b2/public_html/Entradas/dompdf/include/text_frame_reflower.cls.php(333): Text_Frame_Reflower->_layout_line() #3 /home/s03196b2/public_html/Entradas/dompdf/include/frame_decorator.cls.php(556): Text_Frame_Reflower->reflow(Object(Block_Frame_Decorator)) #4 /home/s03196b2/public_html/Entradas/dompdf/include/block_frame_reflower.cls.php(722): Frame_Decorator->reflow(Object(Block_Frame_Decorator)) #5 /home/s03196b2/public_html/Entradas/dompdf/include/frame_decorator.cls.php(556): Block_Frame_Reflower->reflow(Object(Block_Frame_Decorator)) #6 /home/s03196b2/public_html/Entradas/dompdf/include/block_ in /home/s03196b2/public_html/Entradas/dompdf/include/style.cls.php on line 805
    ****************
    ¿ Me podrias ayudar ?
    Gracias

  25. marisanjr dice:

    Muchísimas gracias. Era lo que necesitaba.

  26. Juan dice:

    Lo mismo que Carlos se puede hacer en Java, quiero exportar una tabla de mi JSP. Gracias …

  27. carlos dice:

    ya lo hice pero no me manda el pdf solo me manda el codigo de mi html

  28. Rodrigo dice:

    Que gran aporte el que das, esto es posible hacerlo con Java?.

    En un JSP tengo una tabla, quisiera que con un botón esa tabla la exportara a un PDF.

    Mil gracias si me puedes ayudar

  29. Luis dice:

    que onda brother no me respondiste dime como corregir ese error de los pdf que se sale de los margenes cuando tiene textos largos dentro de una tabla la tabla se extiende podrias echarme la mano como corregir eso

    saludos

  30. Luis dice:

    te queria comentar un problema que he visto en varios como dompdf html2pdf que si tengo una tabla y el texto es largo se sale del margen del pdf como puedo hacer para q no se salga del pdf y el texto lo muestre en su respectiva columna
    Espero tu ayuda

    • Jose Aguilar dice:

      HOla buenas tardes,

      No me había percatado del problema. Se me ocurre que podrías probar de añadirle anchos fijos a los td o divs y verificar si el texto se autoajusta a este tamaño fijado.

      Espero que te ayude,
      Saludos

      • Fabio dice:

        Hola Jose Aguilar, muy bueno tu ejemplo!, he notado que tambien me guarda una copia del PDF en la carpeta del servidor… hay alguna manera de evitar que eso pase? y muchas gracias por tu aporte!

        • Jose Aguilar dice:

          Hola,

          NO lo he probado pero pudiera ser que quitando esta linea no se guarde:

          file_put_contents($filename, $pdf);

          Saludos

  31. Jose dice:

    Estoy probando elejemplo y todo parece salir perfecto, pero cuando abro el archivo pdf me sale el siguiente error:

    » Error al abrir el documento. El archivo está dañado y no puede abrirse »

    ¿ Cual es la posible causa ?

  32. mario basurto dice:

    Entiendo que hiciste una tabla sencilla de html pero si yo hago una carga de una base de datos, cuanod genera el archivo me dice que es corrupto o se encuentra dañado, te enviaría todo mi código pero te dejo solo el $html

    $html=


    .$lport.’

    ‘.$section2.’

    ‘.strtoupper($row[‘prod_name’]).».strtoupper($row[‘description’]).’
    Ficha técnica

    ‘.$sigue.’

    ‘;

    Ahora, si hago un echo $html se muestra bien, pero en el pdf no me deja abrirlo. Qué es lo que pasa en esos casos?

  33. vanessa dice:

    mira tengo este codigo pero cuando lo ejecuto em aaprece erorr

    ob_start();

    if($_REQUEST[‘Action’] == ‘Filepdf’){
    $sort = isset($_POST[‘sort’]) ? strval($_POST[‘sort’]) : ‘ip’;

    $Rset = $ObjAuditoria->get_auditoria($sort, $order);

    ?>
    REPORTE AUDITORIA POR ADMINISTRADOR

    IP
    TIEMPO
    USUARIO
    PROCESO

    load_html(ob_get_clean());
    $dompdf->render();
    $pdf = $dompdf->output();
    $filename = «Auditoria_Administrativos».time().’.pdf’;
    file_put_contents($filename, $pdf);
    $dompdf->stream($filename);

    }

    ?>

    CUAL CREES Q SEA EL ERROR aqui estoy llamando los archivos de la bd

  34. vanessa dice:

    hola ya entendi bien pero me podrias decir como importar las librerias. gracias

    • Jose Aguilar dice:

      no entiendo la pregunta. Yo no importo nada. Solo utilizo la librería que no es más que una clase que incluyo de la siguiente forma:

      require_once(«dompdf/dompdf_config.inc.php»);

      La librería te la puedes descargar de su web oficial

  35. pepe dice:

    Hola,

    Gracias por la info y el ejemplo… es muy util..

    un saludo

  36. Jesus VC dice:

    Hola.
    He buscado varios ejemplos con dompdf pero el que pusiste realmante es muy bueno. Concreto y va al grano sin nada de vueltas.
    Gracias!!!!!!!

  37. Camilo dice:

    Hola tengo un gran problema, no me funciona nada
    Warning: require_once(/home/web/public_html/pagina/pluggins/dompdf-master/lib/php-font-lib/classes/Font.php): failed to open stream: No such file or directory in /home/pollatonad/public_html/pollaton-p/pluggins/dompdf-master/dompdf_config.inc.php on line 332

    Fatal error: require_once(): Failed opening required ‘/home/web/public_html/pagina/pluggins/dompdf-master/lib/php-font-lib/classes/Font.php’ (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/pollatonad/public_html/pollaton-p/pluggins/dompdf-master/dompdf_config.inc.php on line 332

    tengo esto: load_html($html);
    $dompdf->set_paper(‘a4’, ‘portrait’);
    $dompdf->render();
    $dompdf->stream(«descargar_mi_pdf.pdf», array(«Attachment» => true));
    ?>
    la ruta del require está bien. no se que pasa!!

    • Ivan Andrade dice:

      Hola, creo que debes descargar php-font-lib, anteriormente venia cargado, descargalo de https://github.com/PhenX/php-font-lib, dentro hay una carpeta llamada src/PDFLib copiala a la ruta que te manda el error

    • Oscar dice:

      me funciono muy bien!
      a los que marca error es por que no descargaron la libreria » DOMPDF»

      descarguenla y metanla en la carpeta de un proyecto! y listo.

      ahora solo una duda tengo una tabla muy ancha en html y en el pdf me sale la mitad, como se ajusta a la pedida o voltear la hoja??
      PD: descarguen la libreria

  38. Hugo dice:

    Hola cómo estás, es posible crear pdf con datos y elementos creador por medio de javascript, lo que pasa es que estoy creando un sistema de calificaciones y el módulo de reportes y estadísticas genera elementos del DOM con jQuery y los gráficos con google charts.

    Al momento de generar el archivo no lo hace bien, sino todo el texto lo junta y las gráficas no aparecen.

    me peuden ayudar por avor, muchas gracias!!!

  39. Nury dice:

    Gracias por este excelente post, pero tengo un inconveniente necesito generar un pdf con una informacion especifica, osea si selecciono por ejemplo un usuario mostrar informacion solo de este usuario, para esto tengo un enlace que envio por GET su id, pero coloco en pdf.php la variable tomando el valor del GET y no funciona, como se podria hacer esto??? Gracias!!

    • Jose Aguilar dice:

      Si que se puede, puedes ver en el ejemplo que he creado para comprobarlo.

      Demo con base de datos

      Los usuarios que se muestran en la demo son capturados de una tabla de la base de datos y al pulsar en más información creamos el pdf con más información del usuario.

      Si te fijas en el link le estoy pasando un parámetro por get que en el archivo que crea el pdf lo obtengo asi : $_GET[‘id’]

      espero te sirva,
      Saludos,

  40. EDDI dice:

    OYE DISCULPA ESTOY HACIENDO UNA TABLA PERO NO ME ACEPTA LA COMBINACION DE CELDAS ROWSPAN, NO RESPETA LA SINTAXIS. QUE PUEDO HACER???

  41. EDER RAFAEL BARRIOS CAMARGO dice:

    Me parece excelente tu herramienta, ahora bien yo manejo una hoja de estilos externa(css), que en la web si toma el estilo, pero en el archivo pdf no toma los estilos, como puedo hacer para que tambien tome los mis estilos personalizados en el archivo pdf?
    *agregué la función ob_start(); en la linea 1 de mi archivo .php.
    Espero pronta respuesta, de antemano muchas Gracias.

  42. gabriela dice:

    tengo el mismo problema de carlos ayuda ayuda

  43. Lenin dice:

    Muchas gracias, me sirvió de mucho tu ejemplo. Pero como hago para compaginarlo? Cuando el reporte es grande lo corta.

  44. carlos edy dice:

    tengo una pagina con consultas a bd y unos calculos en php, pero cuando exporto a pdf el pdf me sale en blanco? donde esta mi error?

  45. Cristina dice:

    Gracias amigo, me salvaste la vida!

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.

Ver más sobre