{"id":5008,"date":"2012-10-12T13:16:47","date_gmt":"2012-10-12T13:16:47","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=5008"},"modified":"2019-05-20T10:01:22","modified_gmt":"2019-05-20T10:01:22","slug":"generar-archivo-pdf-con-contenido-html","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/","title":{"rendered":"Generar un archivo PDF con contenido HTML"},"content":{"rendered":"<p>En este art\u00edculo vamos a ver un tutorial y c\u00f3digo de ejemplo que te permite <strong>generar f\u00e1cilmente un archivo PDF con contenido HTML<\/strong>. Generar <strong>PDF<\/strong> con simple <strong>HTML<\/strong> es posible.<\/p>\n<p>Existe una librer\u00eda <strong>PHP<\/strong> para <strong>crear archivos PDF<\/strong> mediante c\u00f3digo <strong>PHP<\/strong> pero es algo compleja de entender. Pod\u00e9is darle un vistazo a <a href=\"https:\/\/www.jose-aguilar.com\/blog\/crear-un-pdf-con-php\/\" target=\"_blank\" rel=\"noopener noreferrer\">Crear un PDF con PHP<\/a>. Utilizar esta librer\u00eda es muy complejo debido a que nos tenemos que amoldar a sus funciones y complementos.<\/p>\n<p>En este caso, si ya tienes nociones de <strong>HTML<\/strong> te resultar\u00e1 mucho m\u00e1s f\u00e1cil utilizar la librer\u00eda <strong>DOMPDF<\/strong> que no es m\u00e1s que una librer\u00eda <strong>PHP<\/strong> que te permite <strong>generar archivos PDFs<\/strong> a partir de contenido <strong>HTML<\/strong>, es decir, <strong>convertir c\u00f3digo HTML en PDF<\/strong>.<\/p>\n<p>En el ejemplo que vamos a ilustrar vamos a tener una tabla <strong>HTML<\/strong> con datos de usuarios y tendremos un enlace o bot\u00f3n que ejecuta el proceso de guardar y abrir la tabla en un <strong>PDF <\/strong>directamente. Tenemos una tabla est\u00e1tica pero podr\u00edamos hacerlo igual con una tabla din\u00e1mica obteniendo los datos de una base de datos por ejemplo.<\/p>\n<p>Para implementar esto en tu sitio Web, lo primero que debes hacer es descargar la librer\u00eda <a href=\"https:\/\/github.com\/dompdf\/dompdf\" target=\"_blank\" rel=\"noopener noreferrer\">DOMPDF<\/a> que est\u00e1 disponible gratis en <strong>GitHub<\/strong> e incluirla en nuestro proyecto o servidor.<\/p>\n<p>Creamos\u00a0 un archivo <strong>HTML<\/strong> o <strong>PHP<\/strong> con el contenido de la tabla y el enlace que genera y abre el <strong>PDF<\/strong>.<\/p>\n<h2>C\u00f3digo HTML<\/h2>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/table.html\"><span class=\"kw2\">table<\/span><\/a> <span class=\"kw3\">width<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;500px&quot;<\/span> <span class=\"kw3\">cellpadding<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;5px&quot;<\/span> <span class=\"kw3\">cellspacing<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;5px&quot;<\/span> <span class=\"kw3\">border<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;1&quot;<\/span>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a> <span class=\"kw3\">bgcolor<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;#CCCCCC&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Nombre<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Apellido<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Email<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Edad<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a> <span class=\"kw3\">bgcolor<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;#FF9933&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Antonio<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Lopez<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>alopez@gmail.com<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>25<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a> <span class=\"kw3\">bgcolor<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;#FF9933&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Sergio<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Martinez<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>sgm@gmail.com<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>47<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a> <span class=\"kw3\">bgcolor<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;#FF9933&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Natalia<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>Estrada<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>natty@gmail.com<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>22<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/td.html\"><span class=\"kw2\">td<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/tr.html\"><span class=\"kw2\">tr<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/table.html\"><span class=\"kw2\">table<\/span><\/a>&gt;&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/br.html\"><span class=\"kw2\">br<\/span><\/a><span class=\"sy0\">\/<\/span>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/a.html\"><span class=\"kw2\">a<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-primary&quot;<\/span> <span class=\"kw3\">href<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;pdf.php&quot;<\/span>&gt;&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;fa fa-download&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span> Descargar archivo PDF<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/a.html\"><span class=\"kw2\">a<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<h2>C\u00f3digo PHP<\/h2>\n<p>Y ahora solo falta la clave del asunto, el contenido del archivo <em>pdf.php<\/em> que es el que se ejecuta tras pulsar en el bot\u00f3n \u00abDescargar archivo PDF\u00bb:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span> <a href=\"http:\/\/www.php.net\/ob_start\"><span class=\"kw3\">ob_start<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>\n&lt;h2&gt;Lista de usuarios&lt;\/h2&gt;\n&lt;table width=&quot;500px&quot; cellpadding=&quot;5px&quot; cellspacing=&quot;5px&quot; border=&quot;1&quot;&gt;\n    &lt;tr bgcolor=&quot;#CCCCCC&quot;&gt;\n        &lt;td&gt;Nombre&lt;\/td&gt;\n        &lt;td&gt;Apellido&lt;\/td&gt;\n        &lt;td&gt;Email&lt;\/td&gt;\n        &lt;td&gt;Edad&lt;\/td&gt;\n    &lt;\/tr&gt;\n    &lt;tr bgcolor=&quot;#FF9933&quot;&gt;\n        &lt;td&gt;Antonio&lt;\/td&gt;\n        &lt;td&gt;Lopez&lt;\/td&gt;\n        &lt;td&gt;alopez@gmail.com&lt;\/td&gt;\n        &lt;td&gt;25&lt;\/td&gt;\n    &lt;\/tr&gt;\n    &lt;tr bgcolor=&quot;#FF9933&quot;&gt;\n        &lt;td&gt;Sergio&lt;\/td&gt;\n        &lt;td&gt;Martinez&lt;\/td&gt;\n        &lt;td&gt;sgm@gmail.com&lt;\/td&gt;\n        &lt;td&gt;47&lt;\/td&gt;\n    &lt;\/tr&gt;\n    &lt;tr bgcolor=&quot;#FF9933&quot;&gt;\n        &lt;td&gt;Natalia&lt;\/td&gt;\n        &lt;td&gt;Estrada&lt;\/td&gt;\n        &lt;td&gt;natty@gmail.com&lt;\/td&gt;\n        &lt;td&gt;22&lt;\/td&gt;\n    &lt;\/tr&gt;\n&lt;\/table&gt;\n<span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw1\">require_once<\/span> <span class=\"st_h\">'dompdf\/autoload.inc.php'<\/span><span class=\"sy0\">;<\/span>\nuse Dompdf\\Dompdf<span class=\"sy0\">;<\/span>\n<span class=\"re0\">$dompdf<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> DOMPDF<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$dompdf<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">load_html<\/span><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/ob_get_clean\"><span class=\"kw3\">ob_get_clean<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$dompdf<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">render<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$pdf<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$dompdf<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">output<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$filename<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;ejemplo.pdf&quot;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/file_put_contents\"><span class=\"kw3\">file_put_contents<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$filename<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$pdf<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$dompdf<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">stream<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$filename<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>Primero tenemos que llamar a la funci\u00f3n 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\u00f3digo <strong>HTML<\/strong> con echo o directamente fuera del c\u00f3digo <strong>PHP<\/strong>, no se enviar\u00e1 al navegador hasta que se ordene expl\u00edcitamente. O eventualmente, hasta que se acabe el procesamiento de todo el archivo <strong>PHP<\/strong>.<\/p>\n<p>Seguidamente a\u00f1adimos el c\u00f3digo <strong>HTML<\/strong> o <strong>PHP<\/strong> que queremos a\u00f1adir al archvio\u00a0<strong>PDF<\/strong>.<\/p>\n<p>En el ejemplo en funcionamiento estamos agregando <strong>HTML<\/strong> est\u00e1tico. No ser\u00eda dif\u00edcil acceder a una base de datos y recuperar los datos para mostrarlos en la tabla con echos.<\/p>\n<p>Finalmente invocamos la clase <strong>DOMPDF<\/strong> y cargamos el contenido <strong>HTML<\/strong> que tenemos en el buffer de salida generando el archivo <strong>PDF<\/strong>.<\/p>\n<p class=\"text-center\" style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/dompdf\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/dompdf\/dompdf-demo.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n<p style=\"text-align: center;\"><em>Esta entrada ha sido actualizada el 26\/11\/2018.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.<\/p>\n","protected":false},"author":1,"featured_media":7310,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[103],"class_list":["post-5008","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-archivos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Generar un archivo PDF con contenido HTML - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Generar un archivo PDF con contenido HTML - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2012-10-12T13:16:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-20T10:01:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/\",\"name\":\"Generar un archivo PDF con contenido HTML - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png\",\"datePublished\":\"2012-10-12T13:16:47+00:00\",\"dateModified\":\"2019-05-20T10:01:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generar un archivo PDF con contenido HTML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Generar un archivo PDF con contenido HTML - Jose Aguilar Blog","description":"Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Generar un archivo PDF con contenido HTML - Jose Aguilar Blog","og_description":"Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-10-12T13:16:47+00:00","article_modified_time":"2019-05-20T10:01:22+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/","url":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/","name":"Generar un archivo PDF con contenido HTML - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png","datePublished":"2012-10-12T13:16:47+00:00","dateModified":"2019-05-20T10:01:22+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Tutorial y c\u00f3digo de ejemplo que te permite generar f\u00e1cilmente un archivo PDF con contenido HTML utilizando la librer\u00eda DOMPDF.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/generar-archivo-pdf-con-contenido-html.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-archivo-pdf-con-contenido-html\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Generar un archivo PDF con contenido HTML"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/5008","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=5008"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/5008\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7310"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=5008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=5008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=5008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}