Buscando alternativas para un trabajo que tenia, me encontre con la libreria DOMPDF, esta libreria te permite convertir archivos HTML a PDF facilmente utilizando PHP, aunque aun se encuentra en fase beta y acepta hojas de estillo (CSS) asi como tablas con formato e imagenes, no es del todo compatible con el lenguaje HTML y CSS ademas de que requiere mucho uso de RAM y Micro, pero sirve para realizar trabajos sencillos.
Lo primero, descargate la libreria desde este enlace en code google. Se encuentra en la version 0.6.0 beta y es la que utilizaremos.
Puedes tambien descargarte la documentacion y ver algunos ejemplos desde se web.
Manos a la obra
El codigo necesario para convertir HTML a PDF es :
<?php
//se incluye la libreria de dompdf
require_once("dompdf/dompdf_config.inc.php");
$code = '<html><head><title>Hola</title></head>
<body><h1>Hola Mundo</h1></body></html>';
//se crea una nueva instancia al DOMPDF
$dompdf = new DOMPDF();
//se carga el codigo html
$dompdf->load_html($code);
//aumentamos memoria del servidor si es necesario
ini_set("memory_limit","32M");
//lanzamos a render
$dompdf->render();
//guardamos a PDF
$dompdf->stream("mipdf.pdf");
?>
Explicacion:
En la primera linea de codigo incluimos la libreria con la palabra reservada REQUIRE_ONCE
En la variable CODE se coloca como un string, el codigo HTML a convertir.
Luego se crea una nueva instancia al objeto dompdf y se carga el codigo HTML
Con ini_set, aumentamos la memoria del servidor que en mi caso, utilizo appserver y tiene 8M de memoria limite, esto no siempre es necesario y depende del serrvidor que utilices.
Por ultimo lanzamos a render y guardamos el PDF
El codigo de prueba utilizado es este, la Oración del Geek:
<html><head>
<title>Oracion del Geek</title>
<style type="text/css">
body{
margin: 15px 40px;
}
table{
text-align:center;
}
p{
text-align:center;
font-style:italic;
font-family:"Times New Roman", Times, serif;
font-size:20px;
}
h1{
color:#0033CC;
text-align:center;
font-style:italic;
font-weight:bold;
border-bottom:#003366 solid 3px;
}
</style>
</head>
<body>
<h1>Oración del Geek</h1>
<table width="563" align="center">
<tr>
<td>
<p><img src="imagen/nerd.jpg" width="450" height="305"></p>
<p>Padre Nuestro… </p>
<p>Santificado sea tu server, </p>
<p>venga a nosotros tu freeware </p>
<p>Hágase tu downloading así en el http como en el ftp </p>
<p>Danos hoy nuestro surfing de cada día, </p>
<p>Perdona nuestros bugs como nosotros también perdonamos a Microsoft. </p>
<p>No nos dejes caer en un Mac y líbranos de todo Spyware. </p>
<p>Enter…</p>
<p><img src="imagen/i-love-geeks.jpg" width="500" height="375"></p></td>
</tr>
</table>
</body>
</html>
Y me da como resultado:
Lo bueno: Su uso es realmente facil y cuenta con una documentacion amplia
Lo malo: Esta en fase beta y no totalmente compatible
Lo feo: Tarda horrores al procesar tablas complejas y requiere mucha memoria
Aqui te dejo el ejemplo que yo utilice
No soy antisocial; Simplemente no soy amistoso al usuario.