Hoy os voy a presentar un tutorial un poco diferente de los que estáis acostumbrados a ver en esta web. Trata sobre .php y de cómo poder generar .pdf online de manera automática con datos dinámicos. Aun siendo algo diferente este tutorial es tan útil como cualquier otro de la web además a sido pedido por nuestra amiga Ana visitante de esta web.
Para realizar un trabajo así vamos a utilizar una librería 'free software' de un tal Renato Coelho. Y yo os voy a explicar cómo poder utilizarla.
Para empezar nos descargamos la librería que la he subido en .rar a otro servidor ya que no me acuerdo de donde la descargué, el link es el siguiente:
http://goo.gl/0C86q
Una vez descargado el archivo lo descomprimiremos lo descomprimiremos y pondremos la carpeta pdf en nuestra raíz /. Pues ya tenemos la librería preparada ahora vamos a hacer el motor que la ara funcionar y le enviara los datos, en este caso le llamaremos crear_pdf.php.
A continuación veréis el código totalmente comentado:
crear_pdf.php:
<?php /*La parte más importante es incluir la librería En este archivo PHP*/ include('pdf/html2fpdf.php'); /*Ahora escribiremos en HTML lo que queramos que se imprima Dentro del PDF como véis lo metemos todo dentro de la variable $html en este caso será una tabla*/ $html = '<body> PDF creado con el tutorial de www.tutorialeshtml5.com<br /> <br /> <br /> En este caso una tabla con el tiempo:<br /> <br /> <table width="200" border="1"> <tr> <td width="113">Viladecans</td> <td width="71">21C</td> </tr> <tr> <td>Sant Boi</td> <td>19C</td> </tr> <tr> <td>Hospitalet</td> <td>20C</td> </tr> <tr> <td>Barcelona</td> <td>18C</td> </tr> <tr> <td>El Prat</td> <td>20C</td> </tr> </table>'; /* Una vez escrito el HTML crearemos el objeto que está dentro de la librería que hemos importado */ $pdf = new HTML2FPDF(); //Añadimos una página al pdf $pdf -> AddPage(); //escribimos todo el html en esta pagina creada $pdf -> WriteHTML($html); /*Si necesitáramos más pagina abria que repetir la funcion de AddPage() y la de WriteHTML aquí*/ /*Finalmente escribimos el nombre de fichero y la ruta donde lo queremos guardar en este caso la raiz */ $pdf -> Output('tabla_tiempo.pdf'); //Escribimos una respuesta por pantalla echo "PDF creado con éxito"; ?>Una vez creado el crear_pdf.php tan solo tenemos que visitarlo con el navegador y verémos que se a creado el PDF en el servidor en el mismo lugar donde se encuentra éste.
*Si no se creara el archivo .pdf comprueba los permisos de la carpeta que tengan permiso de escritura.
Muchas grácias a todos!
No olvidéis de comentar!!!
Genial Victor, realmente muy interesante, lo pondré en uso a ver que tal funciona! saludos!
ResponderEliminarMuy bueno el tutorial :D pero no entendí bien lo de poner la carpeta pdf en la raíz :( ¿Podras explicarlo con más detalle? ¿Es html5 verdad?
ResponderEliminarNo es HTML ya que lo único que utiliza de HTML es la tabla.
EliminarPoner una cosa en la raíz significa que no va dentro de ninguna carpeta que está hay suelto donde el archivo al que nos referimos. Es lo mismo que decir pon el archivo junto al otro sin meterlo dentro de ninguna carpeta.
Hola Victor, muy bueno el tutorial, está bien para las personas que requieren publicar documentos sin ser unos genios del pdfphp. Observo tambien que al momento de generar el pdf, el navegador muestra dos funciones: ereg() y set_magic_quotes_runtime() que ya están fuera de juego. Aunque no influyen en la creación del pdf, habría que actualizar el código en esos dos detallitos.
ResponderEliminarDe todas formas, te felicito no solo por hacer el trabajo, sino por publicarlo para que muchos aprendamos de esos momentos en que profundizas conocimientos para compartirlos.
Muchas gracias por tu comentario. Y en efecto los tutoriales que aqui publico nunca van a estar 100% perfectos según los entandares, sin embargo los tutoriales que escribo son los que me hubiera encantado encontrar cuando yo empecé en esto :D. Simplemente son de ayuda y para ayudar a expandir la mente en estos mundos. Gracias a todos!
EliminarEstuve intentando crear el PDF siguiendo los pasos del ejemplo, pero genera el siguiente error
ResponderEliminarFatal error: Call to undefined method HTML2FPDF::DisplayPreferences() in C:\carpeta_root\pdf\html2fpdf.php on line 155
Cyal puede ser el inconveniente.?
mmmm.. el error puede estar en la linea 62-63 del archivo html2pdf.php
Eliminarson:
require_once(RELATIVE_PATH.'fpdf.php');
require_once(RELATIVE_PATH.'htmltoolkit.php');
intenta afinarlas mejor por ejemplo:
require_once(RELATIVE_PATH.'../fpdf.php');
require_once(RELATIVE_PATH.'../htmltoolkit.php');
o si lo tienes dentro de otra carpeta:
require_once(RELATIVE_PATH.'../carpeta/fpdf.php');
require_once(RELATIVE_PATH.'../carpeta/htmltoolkit.php');
Haz unas cuantas pruebas y me comentas.
Gracias!
Hola,
ResponderEliminarGracias por el tutorial. Respecto a los errores:
error magic_quotes del archivo fpdf.php. En la linea 1804 (aprox) y unas 20 más adelante se puede substituir :
## set_magic_quotes_runtime(0);
ini_set("magic_quotes_runtime", 0);
y
## set_magic_quotes_runtime($mqr);
ini_set("magic_quotes_runtime",$mqr);
Respecto al errror de html2fpdf.php en la linea 460 aprox. hay que substituir ereg por la funcion preg_match:
## if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3)) ===> NO FUNCIONA
if(preg_match( '/^([^=]*)=["\']?([^"\']*)["\']?$/',$v,$a3))
Muchísimas gracias!
EliminarSerá muy útil a mucha gente, quien lo pruebe que comente resultados.
Es posible añadir archivos de css y el pdf los respetara? lo que quiero es crear un pdf con estilos, no solo texto plano.
ResponderEliminargracias de antemano.
intente añadir el head antes de la etiqueta de body llamando mis estilos externos, tambien intente poner los estilos in-line para ver si de esa manera los respetaba, pero parece no funcionar.
EliminarHay manera de realizar el PDF con estilos?
No lo he probado, todo dependerá de la librería utilizada. Seguramente con esta no te lo permita..
Eliminarhermano necesito q me resp esta pregunta de urgencia me sale este error cuando le doy generar pdf '; $pdf = new HTML2FPDF(); $pdf -> AddPage(); $pdf -> WriteHTML($html); $pdf -> Output('tabla_tiempo.pdf'); echo "PDF creado con éxito"; ?>
ResponderEliminarHola podrias poner un link del demo, y actualizar la descarga de los archivos?..me parece muy interesante :D!
ResponderEliminarel link para descargar la libreria no funciona no lo encuentra
ResponderEliminarLa url de descarga se ha caido donde puedo encontrar el archivo con la funciones?
ResponderEliminarGracias
El link no funciona... así que les comento que la librería HTML2PDF se puede descargar desde http://html2pdf.fr/es/default. Los invito a visitar mi blog donde tratamos este mismo tema.
ResponderEliminarsaludos!
Muy bueno tu tutorial, mi duda es la siguiente:
ResponderEliminar¿Con que funcion puedo integrar la fecha actual en que se genero el pdf?, ¿con que funcion lo puedo hacer?, espero me ayudes
me hacen el favor y me dicen como descargo el archivo anexo
ResponderEliminarme hacen el favor y me dicen como descargo el archivo anexo
ResponderEliminarHola! cómo puedo mostrar una imagen en una celda en PDF que está en la base de datos?? muchas gracias
ResponderEliminar