viernes, 26 de noviembre de 2010

Generar archivos pdf con Dompdf en Codeigniter

Después de haber buscado librerías de pdf para integrarlas al codeigniter llego la conclusión de que la que más se adapta a mis necesidades es dompdf, dado que le puedo pasar una pagina HTML y este la pasa a PDF incluyendo las imágenes y algunas reglas de estilo, a continuación presento el procedimiento.

1. Descargamos la librería en su versión 0.5 dado que no funciona con su versión beta me deje llevar por la manía de usar siempre la última versión en fin descárgala de aquí.
2. Descomprimir el archivo en la ruta ./system/plugins/ lo dejamos con el nombre de dompdf.
3. Creamos un plugin con el nombre to_pdf_pi.php el código para este plugin es el siguiente te recuerdo no dejar espacios porque te generaría el error Unable to stream pdf: headers already sent.


function pdf_create($html, $filename, $stream=TRUE)
{
require_once("dompdf/dompdf_config.inc.php");

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
if ($stream) {
$dompdf->stream($filename.".pdf");
} else {
$CI =& get_instance();
$CI->load->helper('file');
write_file("./invoices_temp/invoice_$filename.pdf", $dompdf->output());
}
}


4. En el controlador ingresaremos el siguiente código.


function pdf ()
{
$data = 0;
$this ->load->plugin('to_pdf');
$html = $this->load->view( 'welcome_message' , $data , true );

pdf_create ($html,'pruebas');
}

2 comentarios:

Unknown dijo...

Saludos, utilice tu ejemplo para genera pdf en mi sitio, pero de manera logal genera los pdf, pero cuando lo llevo al servidor de produccion genera el siguiente error: "Unable to stream pdf: headers already sent"

Oscar Andres Argueyo dijo...

hola, que tal gracias por el post! Pero tengo una pregunta.. apartir de la nueva version de Codeigniter, se usa la carpeta helper! Es lo mismo pero donde coloco la carpeta del dompdf_helper.php dentro de System/Helper o System/Helper/dompdf/

me surge el siguiente error y nose como arreglarlo!
Call to undefined method DOMText::getAttribute() en el archivo /include/cellmap.cls.php

ShareThis