Skip to content

Creando documentos pdf con php fácilmente

enero 11, 2011

Si te encuentras con la necesidad de crear documentos pdf, de forma dinámica al programar con php y estas investigando como hacerlo has llegado al lugar correcto, en este artículo aprenderás como crear documentos pdf con php fácilmente utilizando la clase fpdf.

Si necesitas por ejemplo, generar un reporte imprimible para entregar información resultado de una consulta dinámica a una base de datos realizada en php y mysql, una excelente opción es entregar ese resultado en un documento pdf por su portabilidad pero aún mas importante por su presentación.

Otra buena utilidad de crear documentos pdf de forma dinámica es que puedes programar rutinas o funciones en php que generen gráficas y estas las puedes incluir dentro del documento pdf, imagina el valor percibido que le da a tu software este agregado y lo puedes realizar gracias a la clase fpdf que es GNU del autor Olivier PLATHEY.

Te voy a explicar con un ejemplo muy simple para que veas la facilidad de usar esta clase al generar el documento. Vamos por pasos:

Primero: Vas a programar un formulario de solo tres campos y un botón que va enviar la información al archivo en php llamado generador. Este código va dentro del archivo “formulario.html”, este es el código:
<html>
<head>
<title>Formulario a generar en pdf</title>
<h1>VAMOS A GENERAR NUESTRO PRIMER PDF</h1>
</head>
<body>
<form name=’pdf’ method=’post’ action=’generador.php’>
Nombre:<input type=’text’ name=’nombre’ /><br />
Direcci&oacute;n;<input type=’text’ name=’direccion’ /><br />
Telefono:<input type=’text’ name=’tel’ /><br />
<input type=’submit’ value=’Generar’ />
</body>
</html>

Segundo: Este paso es el más interesante, es en el que vas a programar el código en php que te va a generar el pdf con la información reciba del formulario anterior. El nombre del archivo es “generador.php” y este es el código:

<?php

/* incluimos primeramente el archivo que contiene la clase fpdf */

include (‘fpdf/fpdf.php’);

/* tenemos que generar una instancia de la clase */

$pdf = new FPDF();

$pdf->AddPage();

/* seleccionamos el tipo, estilo y tamaño de la letra a utilizar */

$pdf->SetFont(‘Helvetica’, ‘B’, 14);

$pdf->Write (7,”HOLA ESTOY GENERANDO MI PRIMER PDF  “,”https://programarenphp.wordpress.com&#8221;);

$pdf->Ln();

$pdf->Write (7,$_POST[‘nombre’]);

$pdf->Ln(); //salto de linea

$pdf->Cell(60,7,$_POST[‘direccion’],1,0,’C’);

$pdf->Ln(15);//ahora salta 15 lineas

$pdf->SetTextColor(‘255′,’0′,’0’);//para imprimir en rojo

$pdf->Multicell(190,7,$_POST[‘tel’].”\n esta es la prueba del multicell”,1,’R’);

$pdf->Line(0,160,300,160);//impresión de linea

$pdf->Output(“prueba.pdf”,’F’);

echo “<script language=’javascript’>window.open(‘prueba.pdf’,’_self’,”);</script>”;//para ver el archivo pdf generado

exit;

?>

Realiza el ejercicio para que veas cual es el resultado o bien descárgalo dándole click aquí.

Aquí te dejo algunas de las funciones que puedes utilizar con esta extraordinaria función.

SetTextColor: Para cambiar de color el texto recibe 3 parámetros enteros que corresponden al valor de cada color primario rojo, verde y azul.

Line: Para dibujar una línea dentro del documento recibe 4 parámetros las posiciones x, y donde inicia y las posiciones x, y donde termina.

SetFont: Para seleccionar el tipo, estilo y tamaño de la letra, recibe esos tres parámetros don de estilo se refiere a negrita (B), cursiva (I) o subrayada (U).

Cell: Para crear una celda con contenido puede recibir 8 parámetros: (ancho, alto, texto, bordo, línea, alineación, relleno,  link).

MultiCell: Parecido a cell la diferencia es que imprime varias líneas dentro de la misma celda, puede recibir 6 parámetros (ancho, alto, texto, bordo, alineación, relleno).

Write: Para escribir una línea de texto y recibe 3 parámetros (alto, texto, link)

Ln: Para saltos de línea y recibe un solo parámetro entero que indica el número de líneas a saltar($h=null).

Image: Sirve para insertar una imagen dentro del documento pdf, puede recibir 7 parámetros (nombre archivo, posición x, posición y, ancho, alto, extensión, lnk).

Output: Utilizada para la salida del documento, puede recibir 2 parámetros el nombre del archivo y el destino donde “F” es para guardar en la pc, “D” es para descargar y “I” es para salida en el navegador.

Espero esta información haya sido de utilidad para ti, no es la única forma que existe para crear documentos pdf, pero con software libre no he encontrado otra mejor. Espero tus comentarios es una buena forma de agradecer, dime que te gustaría aprender, que se te ha dificultado al aprender este fabuloso lenguaje.

Atte, tu amigo
Salvador López

From → inicial, Tips

33 comentarios
  1. juancho permalink

    Oyee me sigue marcando este error y ya descargue el archivo Fpdf y lo puse dentro de la carpeta pear y aun asii sigue marcando error ?? Warning: require(../fpdf.php) [function.require]: failed to open stream: No such file or directory in C:\AppServ\www\generador.php on line 5

    Fatal error: require() [function.require]: Failed opening required ‘../fpdf.php’ (include_path=’.;C:\php5\pear’) in C:\AppServ\www\generador.php on line 5

  2. wolf permalink

    como jalo las variables por que no melas muestra

  3. de donde baje el class de fpdf.php

  4. Andrey permalink

    Tengo el siguiente error:
    AddPage(); /* seleccionamos el tipo, estilo y tamaño de la letra a utilizar */ $pdf->SetFont(‘Helvetica’, ‘B’, 14); $pdf->Write (7, ?HOLA ESTOY GENERANDO MI PRIMER PDF”, “https://programarenphp.wordpress.com”); $pdf->Ln(); $pdf->Write (7, $_POST[‘nombre’]); $pdf->Ln(); //salto de linea $pdf->Cell(60, 7, $_POST [‘direccion’], 1, 0, ‘C’); $pdf->Ln(15); //ahora salta 15 lineas $pdf->SetTextColor(‘255’, ‘0’, ‘0’); //para imprimir en rojo $pdf->Multicell(190, 7, $_POST[‘tel’].”\n esta es la prueba del multicell”, 1, ‘R’); $pdf->Line(0, 160, 300, 160); //impresion de liena $pdf->Output(“prueba.pdf’, ‘F’); //para ver el archivo pdf generado echo” exit; ?>

    Tengo una duda, la carpeta fpdf esta en C:\Inetpub\wwwroot\pdf\fpdf\fpdf.php

    cual seria la ruta que debo colocar en include (”)

    Crea la carpeta pdf que es donde se encuentra el formulario.html

  5. carlos permalink

    Hola, buen aporte, no se si te sigas dando vueltas por aqui pero ahi te va problema, tengo bien la direccion de la libreria en el codigo, pero cuando quiero generar el archivo pdf me dice que no encuentra prueba.pdf y no no se porque sale esto, espero puedas ayudarme.

    Saludos

  6. jenny permalink

    Oye a mi me lo genera en php no en PDF q hago????

  7. jenny permalink

    Oye a mi me lo genera en php no en pdf que hago ???????

  8. Cesar permalink

    Realmente interesante la clase, voy a probarlo. Muchas Gracias

  9. luison permalink

    excelente aporte como hacer consultas con esta libreria

  10. Gabo permalink

    He hecho todo lo que dices.. y cambiando en el archivo generador.php el valor de $pdf->Output(“prueba.pdf”,’F’); a ’D’ y logro descargar el pdf, pero si lo dejo en “F”… me marca este error:

    FPDF error: Unable to create output file: prueba.pdf

    La librería fpdf esta en la ruta: php5/pear/fpdf/fpdf.php Esta misma ruta la puse en el:
    include (‘php5/pear/fpdf/fpdf.php’);

    todo esto lo he subido a la red en mi sitio web pero no entiendo como puedo hacer que el archivo prueba.pdf se guarde en alguna carpeta de mi sitio web para después descargarla

    AYUDA PLEASE!!! gracias

  11. Snake permalink

    Justo lo que buscaba, tenía otro generador de pdf pero consultaba una base de datos, lo que necesitaba era generar un pdf con los datos introducidos y generados en varios textbox, y tus conocimientos me fueron muy útiles, muchas gracias por compartir!!!

  12. hayder giraldo permalink

    Cordial Saludo

    Me aparece error y es el siguiente

    AddPage(); /* seleccionamos el tipo, estilo y tamaño de la letra a utilizar */ $pdf->SetFont(‘Helvetica’, ‘B’, 14); $pdf->Write (7,”HOLA ESTOY GENERANDO MI PRIMER PDF “,”https://programarenphp.wordpress.com”); $pdf->Ln(); $pdf->Write (7,$_POST[‘nombre’]); $pdf->Ln(); //salto de linea $pdf->Cell(60,7,$_POST[‘direccion’],1,0,’C’); $pdf->Ln(15);//ahora salta 15 lineas $pdf->SetTextColor(‘255′,’0′,’0′); // para imprimir en rojo $pdf->Multicell(190,7,$_POST[‘tel’].” \n esta es la prueba del multicell”,1,’R’); $pdf->Line(0,160,300,160);//impresión de linea $pdf->Output(“prueba.pdf”,’F’); echo “”;//para ver el archivo pdf generado exit; ?>

    tengo que tener algo especial activado en el dreamweaver o porque sera esto…

    Muchas gracias

  13. Hola que tal se me hace interesante tu aporte…tengo una duda si yo tengo una tabla con todo el contenido de mi base de datos y aplico filtros donde me va sintetizando la información…como le haría para que en ese estado que se quedo la tabla me genere el reporte..esto seria un reporte dinamico!!!

    • Hola Aldo, es correcto primero filtras tu información por medio de consultas y de script de php, luego maqueta el resultado con los lineas de código correspondiente para que te muestre tu reporte en pdf. Gracias por tu visita, pero este blog ya solo lo visito dos veces al mes, el que se encuentra activo es el de http://AprendeAprogramarEnPHPya.com/blog

  14. Jorge permalink

    Estimado, en qué ruta se debe dejar la carpeta FPDF con la librearia?, en la carpeta PHP5 no veo la carpeta “pear” que indicas??

    Saludos,

    • Hola Jorge, de preferencia ubicala dentro de tu proyecto, por ejemplo, yo utilizo comúnmente un carpeta llamada lib y en ella voy metiendo las funciones que necesito para el correcto funcionamiento del sistema, hay pondría yo la librería FPDF, cuidando pues que donde la mande llamar con el include este la ruta bien escrita. Gracias por tu visita, pero este blog ya solo lo visito dos veces al mes, el que se encuentra activo es el de http://AprendeAprogramarEnPHPya.com/blog

  15. leonardo permalink

    GRACIAS SI FUNCIONA !!!!!!!!!!!!

  16. Muchas gracias por la información !
    De seguro me servirá de ayuda !

    ¿No existe ya ningún plugin para wordpress que realice esta funcionalidad?
    Gracias

  17. sac permalink

    al enviar el reporte me sale en blanco la pagina, me gustaria saber porque, ya tengo las librerias, esta conectado a la base de datos y no me sale nada, nada mas que la pagina que generé pero vacía, no me tira error ni pdf. q estara pasando?

  18. hola muy buen ejemplo, pero yo tengo un problema, tengo que generar un pdf con el resultado de una gráfica con googchart, esta gráfica se genera con el resultado de una consulta a una base de datos con mysql, no se si me puedas ayudar con esto, me urge por favor, ya he intentado muchas formas pero ninguna me resuelve el problema.

  19. Ana María Dolores permalink

    Mil gracias deberas esta muy bueno este ejemplo me a ayudado muxo gracias!!!

  20. Ana María Dolores permalink

    mil gracias deberas esta muy bueno este ejemplo.

  21. heidi permalink

    hola disculpa la molestia pero quiero aprender a programar php y estoy analizando tu ejemplo solo que tengo una duda, en donde debo poner el código de tu ejemplo? en dreamweaver o existe un programa que se llama php?
    Tambien me gustaria saver en donde exactamente debo poner la libreria.

    espero tu respuestas y de ante mano muchisimas graciass!

  22. De verdad te doy las gracias por compartirnos este fabuloso material. Tengo una duda. Quiero que me Genere el PFD pero no al abrir la pagina generacion.php sino que me mande a una pagina agradeciendo el envio de formulario y a su vez un boton que diga Version PDF y que al pulsarlo me abra el pdf que se genera. Se podra lograr?

    Un saludo y muchas gracias!

    • Claro que se puede, necesitas crearlo y guardarlo en alguna carpeta en tu servidor para que en la pagina de agradecimiento lo puedas unir al botón con el que deseas abrir.

  23. ana permalink

    hola te nia el mismo problema que david y puse la carpeta donde me indicaba la direccion
    y ahora me aparece en blanco la pagina ………

    me podria ayudar para sabes que esta pasando con el codigo?

    • Hola Ana con mucho gusto te ayudo, ¿Cuál es la página que te sale en blanco? la del index o cuando llama al generador.php?. Si quieres mándame mas información al correo chava.l58@gmail.com, para ayudarte hasta que funcione.

  24. ana permalink

    hola disculpa por la molestia pero tome su ejemplo

    eh instale el fpdf en la direccion donde marca el error
    y aun me sigue saliendo sera que me podria ayudar.

    Warning: include(fpdf/fpdf.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\pdf\generador.php on line 4

    Warning: include() [function.include]: Failed opening ‘fpdf/fpdf.php’ for inclusion (include_path=’.;C:\AppServ\php5\pear’) in C:\AppServ\www\pdf\generador.php on line 4

    Fatal error: Class ‘FPDF’ not found in C:\AppServ\www\pdf\generador.php on line 6

  25. david permalink

    Me sale este error 😦

    Warning: include(fpdf/fpdf.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\pdf\generador.php on line 4

    Warning: include() [function.include]: Failed opening ‘fpdf/fpdf.php’ for inclusion (include_path=’.;C:\php5\pear’) in C:\AppServ\www\pdf\generador.php on line 4

    Fatal error: Class ‘FPDF’ not found in C:\AppServ\www\pdf\generador.php on line 6

    • A verifica que tengas instalado la librería, fpdf dentro de la ruta php5/pear/fpdf si no esta, tienes que descargarla de una fuente externa puede ser de fpdf.org, y la instalas manualmente para que funcione. Yo casi siempre uso el Xampp y este ya lo trae incluido.

  26. delHD permalink

    Muchísimas gracias! Ver el uso del método MultiCell me ha venido genial! Era exactamente lo que necesitaba para poder pasar un texto de longitud no conocida.
    Mil gracias!

  27. yenny permalink

    Muchas gracias por esta explicacion, me sirvió mucho para generar los reportes de mi tesis, gracias de todo corazón.

    • Gracias a ti por visitar esta web y me da mucho gusto saber que esta información es de utilidad para alguien mas y no solo para mi.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: