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
