Kohana y generacion de pdf

PDFLos frameworks actuales nos proveen muchas funcionalidades que nos evitan el trabajo “sucio” de utilizar funciones puras del lenguaje para hacer tareas sencillas como la generación de documentos, envió de sitemaps o  subida de archivos. Sin embargo también en ocasiones cuando el framework no posee la funcionalidad existen librerías que le extienden y podemos seguir trabajando.

Sin embargo, en Kohana, la generación de pdf no es nativa y según su documentación oficial la librería recomendada es “DOMPDF”, librería que funciona muy bien en muchos casos, pero en el mio definitivamente no ayudo para nada. Si tienes este inconveniente sigue leyendo acerca de una librería alternativa que puede quitarte este dolor de cabeza.

Dompdf (http://code.google.com/p/dompdf/) es principalmente una librería que nos permite convertir Html a un documento Pdf valido que podemos descargar. Si lo utilizas en Kohana es relativamente sencillo pues puedes pasar directamente la “vista” a la instancia del Dompdf y el se encarga del resto. Adicionalmente puedes configurar opciones propias de la impresión como tamaño de pagina o tipo de letra. Ahora bien, en este punto es importante aclarar que Dom no es una librería exclusiva de Kohana, como tal, Dom lo podemos utilizar en cualquier proyecto de PHP pero como mencione es la librería recomendada desde la documentación del Kohana.

Regresando a lo personal, en mi caso no pude hacer funcionar a Dompdf con Kohana. Aunque siendo sincero si funciono, pero en una instalación limpia, no con el proyecto que llevaba desarrollando, por lo tanto fue necesario buscar librerías alternativas que permitieran hacer el trabajo de forma sencilla, entre ellas pase por Html2Pdf , fpdf entre otras, pero con resultados similares (a excepción de Html2pdf que tiene algo de problemas con el CSS, pero tambien es debido a que no es actualizado el proyecto desde el 2005). Finalmente la librería que funciono para mi proyecto fue tcpdf.

Tcpdf es una excelente librería para la creación de pdf a partir de html, ahora bien, lo extraordinario es que esta íntegramente comentado su código y la documentación es rica en ejemplos  y demostraciones a diferencias del resto de librerías de este tipo (documentación de tcpdf). También me gusta que permite generar de forma sencilla 2d Barcode dentro del pdf sin problemas.

Para utilizar Tc dentro de Kohana podemos hacer algo similar a lo siguiente dentro de nuestro controlador:

Codigo PHP:

class pdf_Core {

public static function generar_pdf() {

require_once(‘/TURUTADONDEESTALALIBRERIA/tcpdf/config/lang/eng.php’);

require_once(‘/TURUTADONDEESTALALIBRERIA/tcpdf/tcpdf.php’);

//Cambias los header para que el navegador conozca que esta recibiendo un Pdf

header(‘Content-type: application/pdf’);

header(‘Content-Disposition: attachment; filename=”‘.$name.'”‘);

//Cargas la vista

$view = new View(‘imprimir/pdf’);

$template = $view->render(FALSE);

//Se instancia el tcpdf

$hpdf=new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);

//Algunas opciones de configuracion

$hpdf->SetFont(‘helvetica’, ”, 9);

$hpdf->SetCreator(PDF_CREATOR);

$hpdf->SetAuthor(‘Judavi’);

$hpdf->SetTitle(‘Un titulo’);

$hpdf->SetKeywords(‘TCPDF, PDF, example, test, guide’);

$hpdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);

//ajustar margenes

$hpdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);

$hpdf->SetHeaderMargin(PDF_MARGIN_HEADER);

$hpdf->SetFooterMargin(PDF_MARGIN_FOOTER);

//Adicionamos una pagina

$hpdf->AddPage();

//Escribimos el contenido del pdf

$hpdf->writeHTML($template, true, 0, true, 0);

//Devolvemos por PHP el resultado

echo $hpdf->Output(“Mi_primer_pdf.pdf”, “S”);

}

}

Share and Enjoy:
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • Live

Tags: , , , ,

2 Responses to “Kohana y generacion de pdf”

  1. Carlos M. dice:

    Muy interesante el articulo!!!

  2. Ronny dice:

    Hola amigo buen tutorial pero me da un error cuand olo agrego al controlador no me permite requiere_once me da error

Leave a Reply