Cómo convertir HTML a PDF en PHP con fpdf

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

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP