Foros del Web » Programando para Internet » PHP »

html2fpdf - errores de buffer?

Estas en el tema de html2fpdf - errores de buffer? en el foro de PHP en Foros del Web. Hace un par de semanas escribí una codigo para generar archivos ZIP con varias paginas html. Como las paginas contienen codigo PHP, y necesitaba ser ...
  #1 (permalink)  
Antiguo 04/05/2010, 17:33
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
html2fpdf - errores de buffer?

Hace un par de semanas escribí una codigo para generar archivos ZIP con varias paginas html. Como las paginas contienen codigo PHP, y necesitaba ser interpretado como html, aca en el foro me enseñaron a utilizar buffers. Y todo fue bien.

Ahora estoy queriendo hacer archivos PDF, con la librería html2fpdf. Y me parece que tengo un problema con el buffer, porque si grabo solo texto, o solo html que yo escribo, todo va bien. Pero si quiero grabar el contenido del buffer, obtengo varios de estos errores:

Código PHP:
NoticeUndefined indextop in C:wampwwwmanual26AoI ManualLibrarymakePDFhtml2fpdf.php on line 805

Notice
Undefined indexheader in C:wampwwwmanual26AoI ManualLibrarymakePDFhtml2fpdf.php on line 805

Notice
Undefined indexlogo in C:wampwwwmanual26AoI ManualLibrarymakePDFhtml2fpdf.php on line 805

Notice
Undefined variablex in C:wampwwwmanual26AoI ManualLibrarymakePDFhtml2fpdf.php on line 819 
La funcion que estoy usando es esta:
Código PHP:
function bufferPages(){
        global 
$ruta$pagina$download$archivo$fileList;
        
$_SERVER["PHP_SELF"] = $ruta;

        
ob_start();
        include 
$ruta;
        
$pagina ob_get_contents();
        
ob_end_clean();
        
$fileList[$archivo] = $pagina
}; 
Y para hacer el pdf, esto (que funciona con otros contenidos, como ya comente *):

Cita:
$html = $content;

$pdfFile -> AddPage(); // Creamos una página
//echo $content;

$pdfFile -> WriteHTML($html); //Volcamos el HTML contenido en la variable $html para crear el contenido del PDF
Que puedo hacer para solucionar este tema?

* tampoco tengo errores usando esto: $html = "<?php echo 'hola'; ?>"; Pero en este caso obtengo un archivo PDF en blanco.
  #2 (permalink)  
Antiguo 04/05/2010, 18:05
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: html2fpdf - errores de buffer?

Sigue el problema, pero ahora es distinto.

Buscando, vi un comentario en este hilo acerca de la cabecera pdf:

http://www.forosdelweb.com/f18/probl...l2fpdf-572388/
Cita:
header("Content-Type:application/pdf");
Ahora la uso, y me aparece una ventana emergente diciendo:
Cita:
Adobe Reader no pudo abrir "opr00OH8.tmp" debido a que no es un tipo de archivo admitido o está dañado (por ejemplo, se envió como adjunto de correo electronico y no se descodificó correctamente).
  #3 (permalink)  
Antiguo 04/05/2010, 18:38
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: html2fpdf - errores de buffer?

Descubrí que esto no tiene que ver con contenidos no interpretados de PHP!

Estoy poniendo mi html (original) en la variable $html. Y ahora veo que el error tiene que ver con los atributos id y class:
Cita:
<div id="top"></div>

<div id="header">

<div id="logo">
Para ese html obtengo estos errores:

Cita:
Notice: Undefined index: top in C:\wamp\www\manual26\AoI Manual\Library\makePDF\html2fpdf.php on line 805

Notice: Undefined index: header in C:\wamp\www\manual26\AoI Manual\Library\makePDF\html2fpdf.php on line 805

Notice: Undefined index: logo in C:\wamp\www\manual26\AoI Manual\Library\makePDF\html2fpdf.php on line 805
Que será?

La pagina oficial de este proyecto esta mayormente rota, dicho sea de paso:
http://html2fpdf.sourceforge.net/ (click en features / faq, etc)
  #4 (permalink)  
Antiguo 04/05/2010, 19:42
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: html2fpdf - errores de buffer?

UF ! Ahora descubrí que el problema era con las images gif!

Para que las gif funcionen hay que modificar la funcion _parsegif() en el archivo fpdf.php

Por esto:
Cita:
function _parsegif($file)
{
//Extract info from a GIF file (via PNG conversion)
if(!function_exists('imagepng'))
$this->Error('GD extension is required for GIF support');
if(!function_exists('imagecreatefromgif'))
$this->Error('GD has no GIF read support');
$im=imagecreatefromgif($file);
if(!$im)
$this->Error('Missing or incorrect image file: '.$file);
imageinterlace($im,0);
$tmp=tempnam('.','gif');
if(!$tmp)
$this->Error('Unable to create a temporary file');
if(!imagepng($im,$tmp))
$this->Error('Error while saving to temporary file');
imagedestroy($im);
$info=$this->_parsepng($tmp);
unlink($tmp);
return $info;
}
referencia: http://code.google.com/p/html2pdf/issues/detail?id=2

Ahora el tema para resolver son las imagenes PNG con transparencia. Las comunes no dan problemas, pero las de transparencia tiran error:

FPDF error: Alpha channel not supported

Etiquetas: buffer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:54.