[SOLUCIONADO] Generación de PDF con clase html2pdf

Hola a todos/as, el motivo de mi consulta es saber si se puede generar un PDF usando una clase que sea distinta a la que viene por defecto con Toba (ezpdf), yo lo que quería hacer es usar la clase Html2Pdf la cual genera un PDF a travez de código html.
Yo tengo un componente ei_cuadro, el cual selecciono los items con un evento “seleccion”, si elijo en “vista_pdf”, genero una clase en el CI y ahi pongo el código para generarlo, pero me lo genera vacio por lo que pienso que no me esta tomando la clase html2pdf y si la ezpdf, por el contrario si elijo “generar_html” y pongo el código en la clase del CI directamente no me deja entrar a la aplicación ya que me tira un error de header… la pregunta es si es posible generar pdfs con otra clase que no sea la ezpdf, y en el caso de que si, que es lo que estoy haciendo mal??

El codigo que estoy usando para generar el PDF es el siguiente (y deberia generar todo lo que sale por pantalla desde el ob_start() hasta el ob_get_contents(), en este caso un PDF con la palabra “prueba”):


    function vista_pdf()
    {
        require_once(toba_dir() . "/php/3ros/html2pdf/html2pdf.class.php");
        $html2pdf = new HTML2PDF('P','A4','es',false,'ISO-8859-15', array(20, 10, 10, 10));

        ob_start();
        echo "prueba
";
        
        $rec = ob_get_contents();
        ob_get_clean();

        $html2pdf->writeHTML($rec);
        $html2pdf->Output('Rec','D');
    }

Muchas gracias,
Gonzalo.

Hola Gonzalo,

en principio la salida_pdf esta pensada para ser usada como una libreria y no como un conversor, asi que la exportacion de los distintos componentes esta pensada alrededor de llamadas a una API que va generando el pdf, dicho de otra manera, los metodos vista_pdf no generan html.

En tu caso creo que lo que te convendria es declarar un servicio para el CI y luego dispararlo mediante un boton.
De dicha manera vas a poder recuperar la salida html del componente que quieras y pasarselo al conversor, tene en cuenta que los headers se envian muy temprano en el pedido de pagina, asi que vas a tener que configurar la operacion para que retrase su envio.

Aca te dejo dos links a la documentacion que por ahi te pueden servir para orientarte:
http://repositorio.siu.edu.ar/trac/toba/wiki/Referencia/Ejecucion

http://repositorio.siu.edu.ar/trac/toba/wiki/Referencia/Solicitud

Seguimos en contacto :slight_smile:

Saludos

Richard: gracias por la respuesta, por lo que entendi creo que eso es lo que hice en un momento excepto que no retrase el envio de los headers, este es el evento:

http://i47.tinypic.com/9jhg8x.jpg

y este es el código del CI:


    function generar_html()
    {
        require_once(toba_dir() . "/php/3ros/html2pdf/html2pdf.class.php");
        $html2pdf = new HTML2PDF('P','A4','es',false,'ISO-8859-15', array(20, 10, 10, 10));

        ob_start();
        echo "prueba
";
        $recibo = ob_get_contents();
        ob_get_clean();
        
        $html2pdf->writeHTML($recibo);
        $html2pdf->Output('Recibos_de_haberes.pdf','D');
    }

Lo único que no llego a entender es como hago para retrasar el envio del header?? eso no me quedo muy claro…

Saludos,
Gonzalo.

Hola Gonzalo,

para retrasar el envio de headers activas una casilla en el editor del item (Imagen1).

Con respecto al evento, pareciera que lo estas definiendo dentro de un cuadro, yo lo definiria a nivel del Ci, de manera que abarque todos los componentes que quieras en la pantalla. (Imagen2)

Cualquier cosa avisame.

Saludos


Editor Item.png

Editor Item.png

Editor Servicio.png

Editor Servicio.png

Richard, perdon por la tardanza de la respuesta… te cuento que al final lo pude resolver este tema de la forma que me explicaste y con un poco de la ayuda de los chicos del curso… la solución es crear un servicio como lo indicaste y invocarlo desde el CI de la siguiente forma: servicio__[NOMBRE_SERVICIO] (ahi estaba mi error, no le ponía el prefijo “servicio__” y por lo tanto no me lo encontraba). De esta forma me genera un popup limpio (sin enviar ningún encabezado) y en el cual puedo enviar los headers de la clase PDF sin problemas. Aparentemente el tildar la opción de retrazar el envio de encabezado no influye al momento de la generación.

Muchas gracias,
Gonzalo.