Todos los programadores PHP nos encontramos en alguna ocasión con el mismo problema ¿Cómo puedo pasar de HTML a PDF con PHP? Pues bien, en este artículo analizaremos una de las muchas opciones que tenemos.
Crear PDF desde HTML con PHP
Antes de continuar tenemos que darnos cuenta de algo, realmente hay mil proyectos PHP para pasar HTML a PDF, no obstante ¡Todos tienen algún problema!
Algunos no soportan CSS, otros no soportan los DIVs, otros no soportan los acentos (pensado para los americanos), etc.
Así que en esta ocasión analizaremos mPDF, una solución simples pero potente.
mPDF
Antes de continuar hay que indicar que hace dos años que los creadores abandonaron el desarrollo, no obstante, la comunidad sigue renovando el proyecto y actualizan el github mensualmente.
Así pues, lo primero que tendremos que hacer será descargar el código del proyecto PHP desde la web del creador, es código libre así que no tendréis problemas para descargarlo. No obstante, si queréis utilizar el repositorio con la última versión, podéis acceder desde este enlace (github mPDF).
¿Por qué me gusta el mPDF?
Principalmente porque he probado la mayoría que existen en el mercado y este tiene factores que hace que sea simple y potente:
- Funciona perfectamente DIV y CSS.
- Fácil de utilizar.
- Soporta CSS y atributos tipo border-radius, box-shadow, etc.
¿Cómo genero el PDF?
mPDF trae un fichero de configuración, para la mayoría de casos no será necesario modificarlo, no obstante, si realizáis algún proyecto especialmente grande o complejo, quizás si que necesitéis modificarlo.
Dicho esto, para que podáis ver lo sencillo que sería generar un PDF, os muestro el siguiente código PHP:
include(«../MPDF/mpdf.php»);
$mpdf=new mPDF();// La variable $html es vuestro código que queréis pasar a PDF
$html = utf8_encode($html);$mpdf->WriteHTML($html);
// Genera el fichero y fuerza la descarga
$mpdf->Output(‘nombre.pdf’,’D’); exit;
Resumen
Como podemos observar, generar un PDF desde un HTML puede resultar muy sencillo una vez conocemos que herramienta utilizar para generarlo. En el caso de mPDF, aunque no es una herramienta extremadamente conocida, si que es muy útil. Si tienes cualquier duda o necesitas un programador PHP, puedes ponerte en contacto conmigo.
Recién he estado revisando esta librería, y me parece excelente, muy facil y rápida para implementar. Sin embargo me genera muchas dudas acerca de cómo implementarla con el framework KumbiaPHP, pasando las respectivas variables del controlador a la vista. Si tienes algún enlace que me pueda ayudar te lo agradezco.
No me especializo en KumbiaPHP, pero supongo que tendrá una carpeta llamada «librerías» ¿No?
Hola Alejandro. Yo uso KumbiaPHP. Pudiste resolver tu problema? te invito al slack de KumbiPHP. http://slack.kumbiaphp.com/ Saludos.
Hola Alejandro,
el uso de mPdf en KumbiaPHP es prácticamente igual que en php puro, no es un framework sobreingenierado.
Pero al ser un framework MVC, ese código debe ir en el view.
Te paso un ejemplo de un usuario:
https://github.com/HenryMalas/Ejemplo-uso-mpdf/blob/master/default/app/views/_shared/templates/pdf.phtml
Se puede mejorar ese ejemplo, pero es correcto.
Solo tienes que seleccionar ese template, y crear los views, con las datos que le envias del controlador, como siempre haces.
PD: Luis Peris prueba KumbiaPHP, es más fácil y rápido que Codeigniter.
como soluciono el problema con las tildes y las ñ????
gracias
Hola Gabriel,
Lo tienes que configurar como UTF-8, voy a lanzar un video-tutorial sobre esto ¿Quieres que te mande un email cuando esté listo?
Hola Luis,
Yo si estoy muy interesado en el video-tutorial cuando lo tengas. Acabo de descubrir esta librería y me encanta!
Perfecto, te escribo en cuanto lo tenga!
Buenas, a mi me salta el siguiente error al subirlo al hosting
Error – mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dll enabled
¿Qué versión tienes?
En mi localhost funciona perfecto, pero ya subido en el servidor no funciona, genera archivos corruptos, obvio nada cambio en el codigo, es lo mismo que tu tienes…
a que se debera???
Lo normal cuando algo falla en «linux» es que sea por cómo se llaman a los ficheros o a las carpetas ¿Está igual? ¡Un abrazo!
Muy buenas luis, me gusta tu aporte, pero estoy intentando bajarme algun ejemplo y las librerias pero no me deja. Sabes de donde podria descargarlas o podrias pasarme algun ejemplo y las librerias.
Muchas gracias de antemano
Hola recién empece a usar mPdf, pude general el archivo el problema es que genero un reporte con una tabla de 1400 registros y en vez de generar un archivo con las paginas suficientes para que quepa toda la información, se reduce el tamaño de la tabla hasta encajar toda en una sola pagina.
Agradezco tu ayuda.
Hola, pude implementar y genera mis PDF en mi ambiente de desarrollo tengo php 5.3.28 y es windows, pero al pasarlo al ambiente de producción me genera un erro HTTP 500 y no funciona, ahí tengo php 5.1.6 y es linux, no sabes si tengo que configurar algo mas, gracias.
Buen dia. Uso esta libreria. Existe alguna forma de agregar marca de agua con una imagen al fondo del PDF?
Saludos.
Claro, pero deberías de programarlo, que yo sepa no viene de forma nativa.
hola amigo gracias por la ayuda, subiste el video??
Fatal error: Switch statements may only contain one default clause in ….por que me sale este error ayuda!!!
Hola! yo también estoy utilizando MPDF, solo que no soy tan buena aun, me gustaría preguntarte si puedes asesorarme, mis dudas son a la hora de manejar gráficas, no las puedo visualizar en el servidor =), en local todo me funciona de maravilla pero a la hora de querer visualizarlas ya estando alojadas en el servidor me manda muchos errores!!!
De verdad apreciaría mucho si alguien pudiera ayudarme!
=)
Luis , mpdf se puede alojar en algún hostigamiento gratuito?
¡Sí, claro!
Luis, mpdf se puede alojar en algún hosting gratuito?
Sí!
Hola estoy buscando la manera de generar en pdf un cuadro que esta en php y el contenido es llenado desde wordpress, puedo usar mpdf??.
Por favor ayudaaa!!
He realizado varios pdf con esta librería con de manera local todo funciona excelente, lo subí al servidor y me marca errores de strack tracer 0, si hay alguien que me pueda ayudar.
Hola, gracias por el artículo, pero a mí no me funciona border-radius. Alguna recomendación?