Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2008, 07:07
karoljose
 
Fecha de Ingreso: agosto-2008
Mensajes: 21
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo

Que tal amigos, hace algun tiempo tuve unas horas de tortura al momento de tratar de generar pdf's con la grandiosa libreria dompdf, el problema era que me mostraba unos mensajes extraños al momento de preguntar por alguna variable que no tenga valor, por ejemplo:

Código:
if ($opcion=="1")
{
hacer();
}
Si en ese caso la variable $opcion estaba vacia, el explorador me mostraba un notice Undefined variable; le daba vueltas al asunto y nada, busque en internet y la unica solucion que consegui era utilizar isset($opcion), pero esa solucion no era nada elegante.

Pues de tanto buscar y buscar me puse a pensar y a revisar la libreria dompdf y me tope con el pequeño gran problema, era la funcion error_reporting de php. Solo habia que comentarla para que asi quedara desactivada:

En el archivo dompdf/dompdf-0.5.1/dompdf_config.inc.php, buscamos la linea 42, por lo menos en la version 0.5.1 y comentamos la funcion quedando asi:

Código:
//error_reporting(E_STRICT | E_ALL);
Claro hay que saber que cuando la desactivas no podras saber cuales son los errores que se presentan al momento de generar un pdf. Normalmente ese problema tambien se presenta porque ponemos el require_once("scripts/libreria/dompdf_config.inc.php"); mucho antes de donde se va a utilizar la libreria. Por eso recomiendo poner el require_once justo antes de hacer el llamado, algo asi:

Código:
$html='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
</body>
</html>';

//poner este require_once justo antes del new DOMPDF();
require_once("dompdf/dompdf-0.5.1/dompdf_config.inc.php");
$old_limit = ini_set("memory_limit", "16M");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('8.5x11','portrait');
$dompdf->render();
$dompdf=$dompdf->output();
file_put_contents("liquidacion.pdf", $dompdf);
header("location: liquidacion.pdf");
Espero que sea de mucha ayuda para todos los amigos desarrolladores.

Saludos...

En caso de que se sigan mostrando los notice se debe a que el error_reporting esta mal configurado en el archivo php.ini

Saludos

Última edición por GatorV; 16/12/2008 a las 13:40