La conversión de HTML a PDF es siempre un problema para los programadores de PHP. Es muy normal el verlos por los foros de Internet buscando soluciones para llevar esto a cabo, pero gracias a este artÃculo le facilitaremos mucho la tarea. En este tutorial te mostraremos cómo convertir un HTML a PDF utilizando la librerÃa fpdf de PHP, una librerÃa super útil open source que solucionará mucho la vida a los desarrolladores.
Lo primero es descargar la librerÃa fpdf e incluirla en tu archivo PHP debajo de las demás librerÃas para que pueda incluir los tags, fuentes e imágenes en tu archivo PDF. Con la librerÃa fpdf utilizamos la librerÃa HTMLparser contribuida por la comunidad y otras librerÃas que puedes descargar aquà para utilizarla para tus necesidades.
index.html
En este archivo he creado un simple formulario de contacto y lo que se envÃe se transformará en un archivo pdf.
<html> <head> <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="css/bootstrap-responsive.min.css" rel="stylesheet" media="screen"> <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> </head> <body> <div class="container"> <form class="contact-us form-horizontal" action="actionpdf.php" method="post"> <legend>Fill Form and submit to generate PDF</legend> <div class="control-group"> <label class="control-label">Name</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><i class="icon-user"></i></span> <input type="text" class="input-xlarge" name="name" placeholder="Name"> </div> </div> </div> <div class="control-group"> <label class="control-label">Email</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><i class="icon-envelope"></i></span> <input type="text" class="input-xlarge" name="email" placeholder="Email"> </div> </div> </div> <div class="control-group"> <label class="control-label">Url</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><i class="icon-globe"></i></span> <input type="text" id="url" class="input-xlarge" name="url" placeholder="http://www.example.com"> </div> </div> </div> <div class="control-group"> <label class="control-label">Comment</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><i class="icon-pencil"></i></span> <textarea name="comment" class="span4" rows="4" cols="80" placeholder="Comment (Max 200 characters)"></textarea> </div> </div> </div> <div class="control-group"> <div class="controls"> <button type="submit" class="btn btn-primary">Submit</button> <button type="button" class="btn">Cancel</button> </div> </div> </form> </div> </body> </html>
actionpdf.php
Este archivo PHP contiene el código para generar el fichero pdf y mostrar los datos enviados en dicho archivo.
<?php require('WriteHTML.php'); $pdf=new PDF_HTML(); $pdf->AliasNbPages(); $pdf->SetAutoPageBreak(true, 15); $pdf->AddPage(); $pdf->Image('logo.png',18,13,33); $pdf->SetFont('Arial','B',14); $pdf->WriteHTML('<para><h1>Programacion.net</h1><br> Website: <u>www.programacion.net</u></para><br><br>How to Convert HTML to PDF with fpdf example'); $pdf->SetFont('Arial','B',7); $htmlTable='<TABLE> <TR> <TD>Name:</TD> <TD>'.$_POST['name'].'</TD> </TR> <TR> <TD>Email:</TD> <TD>'.$_POST['email'].'</TD> </TR> <TR> <TD>URl:</TD> <TD>'.$_POST['url'].'</TD> </TR> <TR> <TD>Comment:</TD> <TD>'.$_POST['comment'].'</TD> </TR> </TABLE>'; $pdf->WriteHTML2("<br><br><br>$htmlTable"); $pdf->SetFont('Arial','B',6); $pdf->Output(); ?>
En este archivo añadimos la paginación y el salto de página a true si tu contenido sobrepasa el área de una página. Por ello, se añade una segunda página automáticamente.
$pdf->Image('logo.png',18,13,33); $pdf->SetFont('Arial','B',14);
Mediante estas lÃneas añadimos el logo y seleccionamos el tamaño de la fuente para el header.
$pdf->SetFont('Arial','B',7);
Después ajustamos el tamaño de la fuente a uno más pequeño para el contenido.
$pdf->WriteHTML2("<br><br><br>$htmlTable"); $pdf->Output();
Escribimos el HTML al fichero pdf y mostramos el fichero en el navegador.
Fuente: phpgang.com