Secciones

Como generar un PDF a partir de un HTML con PHP

Inicio » Artículos » Como generar un PDF a partir de un HTML con PHP
La categoría del artículo es
Escrito el 23 February 2008, 01:56


¿Cómo se puede generar a partir de un HTML utilizando PHP? Pues es relativamente sencillo gracias a la clase html2fpdf. Dicha clase utiliza es una extensión a otra llamada fpdf. FPDF sirve para generar archivos en formato pdf al vuelo. Permite incrustar texto, imágenes, cabeceras, tablas, etc. Pero si el texto que tenemos está en formato HTML todo lleno de etiquetas por aquí y por allá, html2fpdf nos facilita la labor, sustituyendo esas etiquetas HTML por los comandos correspondientes de fpdf.

Si descargáis la clase html2fpdf, vereis que contiene una serie de archivos entre los que se encuentra un directorio llamado font. En la cabecera de nuestro PHP, necesitamos crear una constante llamada FPDF_FONTPATH que almacenará la ruta donde se encuentra esta carpeta con respecto a nuestro script. También definimos la constante RELATIVE_PATH, aunque esta podríamos haberla obviado.

PHP:
define('FPDF_FONTPATH','./font/');
define('RELATIVE_PATH','./');
require('./html2fpdf.php');

Y esta sería la sintaxis para generar nuestro archivo PDF con el contenido de un texto en formato HTML. Simplemente es necesario crear una instancia de la clase HTML2FPDF, añadir una primera página, escribir el código html e invocar la salida.

PHP:
$texto = 'Utilizamos un texto con <strong>negrita</strong>, <i>cursiva</i> y <u>subrayado</u> para comprobar la eficacia del m&eacute;todo';
$pdf = new HTML2FPDF();
$pdf->AddPage();
$pdf->WriteHTML($texto);
$pdf->Output();


¿Has utilizado alguna vez estas librerías?

  1. # mars, Mar 1, 02:27 PM:

    jajaja!!!!

    entre a tu pagina para ver el relojito de los dias que nos faltan.. y no lo puedo VEEEEEERRRR ...
    Lo quitaste????

  2. # fer, Mar 6, 03:37 AM:

    Vaya!

    Acabo de encontrar esto por casualidad desde twitter…

    No se si te acordarás de mi, pero fuimos compañeros de carrera… Primero en isi2, si mal no recuerdo, y luego en una asignatura optativa donde hicimos algo con java, un juego de cartas o algo así... te suena?

    :)

  3. # Fran García, Mar 6, 04:55 AM:

    Ese Fer,

    claro que me acuerdo. Vaya pedazo de curro nos pegamos con esa práctica para que luego el profesor pasara bastante de ella. El juego era el 7 y medio.

    Un saludo Fer!

  4. # Ike, Sep 15, 10:14 PM:

    Hola, estoy utilizando la clase que aqui expusiste, me parece muy buena, pero en lo que no me convence es en el trato de las cabeceras y pie de pagina. Estoy tratando de poner cabeceras y pie de pagina al documento, pero me vota muchos errores.

    // ———————————————————————————————-
    class PDF extends HTML2FPDF { function Header() { $cabecera = “ <table width=‘100%’ border=‘1’> <tr> <td width=‘12%’><img src=‘copia.jpg’/></td> <td width=‘88%’>\“AÑO DE LAS CUMBRES INTERNACIONALES\”</td> </tr> </table> “; $this->Cell(0,0,$this->WriteHTML($cabecera),0,0,‘C’); }

    function Footer() { $pie_pagina = ‘ <table width=“100%” border=“0”> <tr> <td><hr></td> </tr> <tr> <td><div align=“center”>’.$direccion_gisp.’ – ‘.$telefono_gisp.’ – ‘.$telefax_gisp.’ </div></td> </tr> <tr> <td><div align=“center”>TACNAPERU </div></td> </tr> </table> ‘; $this->Cell(0,0,$this->WriteHTML($pie_pagina),0,0,‘C’); } }
    // ———————————————————————————————-
    He utilizado la clase FPDF tambien, asi que utilice la misma forma para poner las cabeceras y pie de pagina con HTML2FPDF. Dentro de los errores que muestra el pdf estan: – En la seguna pagina escribe dos veces seguidas la cabecera – En la segunda pagina el pie de pagina lo escribe luego de que termine el texto (es decir que lo puede escribir en la parte superior, media o inferior, dependiendo de cuanto texto tenga el documento), mas no lo escribe en la parte inferior del documento. – Todo el contenido lo justifico, pero en la segunda hoja se pierde el justificado.

    Espero me puedas ayudar. Gracias por anticipado :)
    Bye. Saludos.

  5. # Fran García, Sep 16, 05:55 PM:

    Quizás se esté haciendo un pequeño lio con las tablas. Te aconsejaría que quitarás las tablas antes de pasarle a la librería el texto (si es posible).

    Otro consejo es que te pelees un poco con los márgenes del documento, que recuerdo yo también tuve algún problema para establecerlos correctamente.

  6. # sandra, Dec 22, 10:05 PM:

    Interesante, pero probe con tablas una dentro de otra y no da, existe alguna otra clase para poder generar ese tipo de tablas en pdf?

Ayuda Textile