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.
4 comentarios:
Estamuy bien tu post es exactamente lo que estab buscando te agradezco mucho por compartir
Gracias por el post y aprovechando quisiera ver si me puedes ayudar. Yo estoy utilizando la librería tal y como lo muestras, el problema es que al terminar de crear el pdf se abre una ventana de diálogo en la que me pregunta si quiero verlo o guardarlo y lo que necesito es que no aparezca esa ventana sino que se guarde el archivo automáticamente en un directorio determinado pero dentro de mi server, no en la máquina del cliente. ¿No sé si eso sea posible y, de ser así cómo tengo que hacer?
Saludos y gracias...
hola!, tengo una duda, como le haces para generar directamente el pdf desde la misma pagina html, lo que pasa es q yo tengo una grafica que quiero pasar a pdf, y al poner el oton en esta pagina me genera un error y no genera el pdf.
Gracias!!!!
Gracias mil, esta me permite arrancar con mi idea, te cuento si me funciono bien ;) saludos
Publicar un comentario