Libreria HTML2PDF

Buen día Estimados, soy nuevo en esta comunidad asi que espero ser claro y puedan ayudarme.
Les comento rápidamente cual es mi situación;
Estoy tratando de convertir información en html a pdf con la libreria html2pdf, he leído en algunas consultas anteriores donde se debe generar en nivel CI el método. Les paso el código.

Importo la librería:

require (toba_dir().“/php/3ros/html2pdf/vendor/autoload.php”);

use Spipu\Html2Pdf\Html2Pdf;

Método:

function servicio__generar_html()
{
$html2pdf = new HTML2PDF(‘P’,‘A4’,‘es’,true,‘UTF-8’);

ob_start();
echo "<h1>Reportes</h1>";
$recibo = ob_get_clean();
	
$html2pdf->writeHTML($recibo);
$html2pdf->output('pdf_generated.pdf');

}

La verdad es que no se si toba esta tomando la forma de importar la librería ya que probé de manera externa y funciono correctamente, pero en toba no.
El método lo disparo a través de un evento que es un popup que se encuentra a nivel CI.
También configure la operación para que retrase el envió del encabezado.

El problema en si es que el evento me lanza el popup pero no carga el pdf, solo me muestra la misma pantalla en el popup.

Espero haber sido claro. Gracias
Saludos.

Hola Gabriel,

primero que nada, bienvenido.

Lo segundo, en que version de Toba estas trabajando?, te consulto porque veo que la lib la pusiste dentro del directorio “php/3ros”… pero que a su vez existe una carpeta vendor.
Por otro lado, la funcion que tenes que redefinir es la que se usa para realizar la exportacion a PDF, el metodo servicio__generar_html no existe dentro de la clase toba_ci.

El metodo que deberias redefinir es servicio__vista_pdf, que se llama cada vez que queres realizar una exportacion.

Es probable que no te estuviera llamando el metodo, por eso no veias que funcionara.

Saludos

Hola Richard, muchas gracias.
Estoy trabajando con la versión 2.7. La función que me estas diciendo servicio__vista_pdf … tenia entendido que solo exporta y no se utiliza para convertir html.
Hice exactamente lo mismo que el post http://foro.comunidad.siu.edu.ar/index.php?topic=4541.0;nowap , pero debo estar declarando mal el método o mejor dicho en el lugar equivocado. En estos momentos el método lo tengo en el CI constructor y el evt para disparar el método está en el mismo lugar.

Gracias,
Saludos.

Hola Gabriel,

Bien, ahora entiendo la parte de la carpeta de 3eros.
Los servicios en Toba se usan para procesar los pedidos de pagina, que pueden ser una exportacion o un pedido comun, dependiendo lo que quieras hacer.
Si vas a enviar un pdf para download, estas haciendo una exportacion… independientemente del contenido, sino entendi mal tu objetivo.

Hice exactamente lo mismo que el post http://foro.comunidad.siu.edu.ar/index.php?topic=4541.0;nowap , pero debo estar declarando mal el método o mejor dicho en el lugar equivocado. En estos momentos el método lo tengo en el CI constructor y el evt para disparar el método está en el mismo lugar.
Entonces, declaraste el metodo vista_pdf o redefiniste el metodo generar_html?, si hiciste esto ultimo, vas a tener que hacer mas cambios porque previo a que llegue el control de la ejecucion a tu metodo, ya se enviaron varias cosas al cliente (headers, menu, etc) con lo cual para el browser va a ser medio raro recibir un header para html y un binario perteneciente a un pdf.

Si fuiste por el primer metodo, deberias agregarle al evt la accion predefinida ‘vista pdf’ para que se dispare la llamada adecuada.
Pasame un poco mas de info sobre que tenes asi te puedo orientar mejor.

Saludos

Hola Richard, tengo declarado el método vista_pdf.
En el evt estaba la acción predefinida generar_html por eso no funcionaba, cambié la acción por vista_pdf como me dijiste y funciona correctamente.

Quisiera saber como poder enviar parámetros desde el formulario donde se está el evt al ci donde se encuentra el método vista_pdf.

Para que quede más claro, quiero exportar un PDF con información previamente cargada desde un formulario, necesito enviar parámetros a la función vista_pdf y que esta pueda cargar el PDF con esos datos que reciba.

Gracias,
Saludos.

Hola Gabriel,

para esto necesitas al menos dos pedidos de pagina, uno para enviar y procesar los datos via el CI y otro para realizar la exportacion a PDF.
Era por esto que necesitabas pasar el html a pdf?, los datos esos no salen de la bd?

Saludos

Hola Richard, el html es para darle un formato a la información cargada. El usuario podrá realizar la exportación a PDF luego de la carga.

Para hacer la conversión necesito pasar los datos a la función vista_pdf y esos datos deben estar en la bd.

Saludos.

Hola Gabriel,

entonces necesitas al menos 2 pedidos de pagina, uno para impactar en la bd los datos que envio el cliente y otro para que realice la descarga del pdf.
Lo que podes hacer, en el pedido que guarda los datos es enviar algo de JS con un vinculo para que se solicite el servicio vista_pdf apenas llegue la pagina al cliente, de esa forma da la idea de una grabado+download… aunque son 2 pasos bien definidos.

Saludos

Hola Richard,
Si, hice dos pedidos de página y funciona correctamente.
La parte del vinculo que me dijiste que lo haga por JS para enviar parámetros, lo hice mediante php desde el form donde se visualiza la información previamente cargada y en el servicio capturo los parámetros y genero el PDF.

El código también se encuentra en toba_referencia por si a alguien le sirve: Componentes/Eventos/Vinculos/Control en runtime

Muchas gracias por la ayuda,
Saludos.

Hola Gabriel,

Lo que te decia era que usaras la extension JS para enviar el vinculo que solicita el pdf, no puntualmente que envies parametros por ahi, simplemente eso.
Igual creo que estamos hablando de lo mismo, solo que lo redactamos distinto.

El código también se encuentra en toba_referencia por si a alguien le sirve: Componentes/Eventos/Vinculos/Control en runtime
Te referis al metodo extender_objeto_js?

Saludos