Crear PDF con PHP y FPDF

En este artículo vamos a ver como crear pdf con PHP, usando la librería FPDF, la misma está escrita totalmente en PHP lo que nos libera de usar una librería externa como PDFlib. Para saber más sobre FPDF haz click aquí.

Crear un PDF en PHP es simple, lo primero que debemos hacer es bajarnos la clase desde aqui, luego debemos copiarla a nuestro directorio de trabajo y estamos listos para empezar.

Veamos un ejemplo:

El código anterior es simple y claro, incluimos la clase mediante “require”, creamos una instancia de la misma, agregamos una página con “AddPage”, seteamos la fuente a usar, definimos un rectángulo donde aparecerá el texto y finalmente creamos el pdf con “output”.

Ahora que conocemos las funciones básicas, vamos a hacer algo mas avanzado, supongamos que queremos imprimir 100 recibos donde queremos cambiar el número de recibo automáticamente.

Aquí es donde entra en juego la colección de clases de FPDI, que permite leer documentos PDF y tratarlos como templates desde FPDF, para bajarte FPDI puedes hacerlo desde aqui.

Siguiendo con la situación planteada:

El código anterior genera un documento llamado recibos.pdf de 100 páginas, una por recibo (por favor, leer los comentarios en el código).

Es fácil darse cuenta que estas librerías son súmamente útiles a la hora de trabajar con documentos PDF, basta con leer la documentación oficial para comprender las posibilidades que nos ofrecen.

GD Star Rating
loading...
Crear PDF con PHP y FPDF, 7.8 out of 10 based on 16 ratings

Related Posts

12 Comments

  1. ale
    Julio 17, 2010 at 5:34 pm

    de gran ayuda muchas gracias!

  2. Juan
    Julio 29, 2010 at 1:31 am

    Por nada, a las ordenes.

  3. jorge
    Octubre 29, 2010 at 11:51 pm

    Mil gracias

  4. Maria
    Junio 9, 2012 at 6:11 pm

    Definitivamente un buen articulo: facil y directo al grano
    🙂
    GRACIASSSSS!!!!!!

  5. RichardM
    Mayo 7, 2013 at 12:01 pm

    Estimado Amigo,
    El primer ejemplo sale correctamente.
    En el ejercicio de los recibos me sale el siguiente mensaje:
    FPDF error: Cannot open recibo_template.pdf !
    Muy amable por su ayuda.
    Saludos cordiales
    Richard

  6. Juan
    Mayo 7, 2013 at 10:46 pm

    Richard, en el segundo ejemplo asumimos que el archivo recibo_template.pdf ya existe, dado que partimos de un recibo pre armado al cual queremos cambiar el número nada más.
    Asi que te recomiendo que armes un archivo PDF (puede estar vacío) y lo renombres a recibo_template.pdf para que te funcione el ejemplo.

    saludos, Juan.

  7. Rafa
    Enero 24, 2014 at 7:18 pm

    Hola que tal use tu ejemplo, y pareciera que todo funciona correctamente, pero no me descarga el archivo, aun que si lo crea. me sale el siguiente error:
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Podrias orientarme a que se debe.

  8. Samuel Beltran Cruz
    Mayo 4, 2014 at 8:40 pm

    quiero hacer una constancia de estudio y que lo imprima en php de fpdf
    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“,”http://AprendeAProgramarEnPHPya.com/blog”);

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

    $pdf->Ln(); //salto de linea
    $pdf->Write (7,$_POST[‘nombre’]);

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

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

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

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

    $pdf->Ln(); //salto de linea
    $pdf->Write(60,7,$_POST[‘atentamente’],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 “window.open(‘prueba.pdf’,’_self’,”);”;//para ver el archivo pdf generado

    exit;

    ?>
    me marca error Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\Pruebas\fpdf\generador.php on line 21

  9. Angel
    Marzo 10, 2016 at 4:51 pm

    Quisiera saber como pasar la cantidad de paginas a una variable

  10. Juan
    Marzo 17, 2016 at 12:20 pm

    Hola Angel, en el ejemplo usamos un bucle for con una variable $i que nos dice la cantidad de paginas, ya que en cada iteración agregamos una nueva.
    Pero si salimos del ejemplo tenemos disponible el método $pdf->PageNo() que nos retorna la página actual del documento creado.
    Espero que te sirva, saludos.

  11. angel170586
    Abril 5, 2016 at 7:14 pm

    Buen Día Lic. Benitez,

    el caso que tengo es el siguiente:
    cree un documento en php usando la librería fpdf y la incluí en mi pagina, después modifique mi pagina para que sea adaptativa(responsive) con bootstrap. Para ahorrarme la tarea de crear una aplicación, con android studio genere un apk que llame a mi pagina, pero al intentar descargar desde el apk no funciona el link al archivo php que genera el pdf.

    espero que me pueda ayudar, gracias de antemano.

    Angel Laura.

  12. Karla Paola
    Septiembre 27, 2016 at 8:25 pm

    Hola Buenas tardes muy interesante y sobretodo muy util este post, solo tengo una consulta estoy tratando de varias paginas con datos jalados de mysql, pero tengo algunas clases de la libreria fpdf que no funcionan, todo lo demas funciona muy bien cuando comento dichas clases, espero me pueda ayudar. Muchas gracias de antemano.

    Ejem de clases

        function ImprimirTexto2($texto){
            $txt = $texto;
            //Se imprime
            $this->MultiCell(0,5,$txt);
        }

  13. oscar
    Octubre 30, 2016 at 8:12 pm

    hola me gustaria saber si se puede hacer una cell resposive por que yo estoy haciendo un pdf que el texto es de 20 pero lo tengo que poner en una cel de 10  no se si se puede hacer responcive o algo asi?

Leave A Comment

Security Code:

Leer más
Instalar Servidor de Nombres de Dominio DNS en Linux

Este tutorial pretende mostrar la forma de instalar y configurar un sencillo servidor de nombres de dominio o DNS por...

Cerrar