Foros del Web » Programando para Internet » PHP »

Problemas al mostrar un pdf con html2pdf

Estas en el tema de Problemas al mostrar un pdf con html2pdf en el foro de PHP en Foros del Web. hola, este es mi primer post, miren, tengo un mega problema, quiero hacer un reporte que me muestre unos registros, pero mis tablas salen horribles, ...
  #1 (permalink)  
Antiguo 06/08/2013, 11:37
Avatar de itssarayall  
Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 10 años, 9 meses
Puntos: 0
Exclamación Problemas al mostrar un pdf con html2pdf

hola, este es mi primer post, miren, tengo un mega problema, quiero hacer un reporte que me muestre unos registros, pero mis tablas salen horribles, salen montadas una de la otra, y me salen como 12 páginas cuando no se lleva más de esa cantidad despiadada de páginas, les pondré mi código para que vean, me urge terminar esto


Código PHP:
<?php
require_once('html2fpdf.php'); 
ob_start ();


    include (
"variable.php");
        
$link mysql_connect(HOSTNAME,USER,PASS);
    if (!
$link)
        {
        die(
'ERROR DE CONEXION CON MYSQL: ' mysql_error());
        }

    
$database mysql_select_db("controlflotillas",$link);

    if (!
$database)
        {
            die(
'ERROR CONEXION CON BD: '.mysql_error());
        }
    
    
    
$fecha1='2013/06/24';
    
$fecha2='2013/06/30';
            
echo  
"<h4>Consulta solicitada entre las siguientes fechas: $fecha1 y $fecha2</h4> <br/>";        
                
    
$sql mysql_query("select idoperador, idregistro,fecha, YEAR(fecha) as anio, MONTH(fecha) as mes, DAYname(fecha) as                                         dia, concat(uno.nombre,' ',apaterno,' ',amaterno) as noperador,  
                        economico,caja,concat(dos.nombre) as remolque,
                        comentario1,comentario2, kmsrecorridos,gananciaobtenida
                        from operador as uno
                        inner join  
                        registros on uno.idoperador=registros.operador  
                        inner join categoria as dos on dos.idcategoria=registros.tiporemolque
                        where fecha between '$fecha1' and '$fecha2' order by noperador, fecha asc"
$link)
                        or die(
mysql_error()); 
            
$x=0;

        if(empty(
$sql))
        {
            echo
"No se encontraron registros en el intervalo de fechas que solicitó.";
        }
        
        else if(!empty(
$sql))
        {
                
$query[1]='Monday';
                
$query[2]='Tuesday';            
                
$query[3]='Wednesday';
                
$query[4]='Thursday';
                
$query[5]='Friday';
                
$query[6]='Saturday';
                
$query[7]='Sunday';
echo 
"<html><body><table>

                        <tr>
                        <td>Carro</td>
                        <td></td>
                        <td></td>
                        <td></td>                                                                        
                        <td>Semana</td>
                        <td></td>
                        <td></td>
                        <td></td>                        
                        <td>Total</td>
                        </tr>"
;

        
$i=0;
        
$nope '-';
        
$registrosXOperador 0;
        
$contadorRegistrosXOperador 0;
        
$datosOperador = array();
        while (
$row mysql_fetch_array($sql))
        {    
                    if(
$contadorRegistrosXOperador==0)
                    {
                    
                    
$consulta "select idoperador, count(*) as total from operador inner join registros on operador.idoperador=registros.operador where concat(operador.nombre,' ',apaterno,' ',amaterno) = 
                    '"
.$row['noperador']."' and fecha between '$fecha1' and '$fecha2'";
                    
$resultado mysql_query($consulta$link) or die(mysql_error());
                    
$cantidad mysql_fetch_array($resultado);
                    
$registrosXOperador $cantidad['total'];
                    
                     echo 
"<tr>
                     <td><input type='text' value='"
.$row['caja']."'readonly/>
                        <input type='text' value='"
.$row['noperador']."'readonly/></td>";
                    }
                    
            
array_push($datosOperador,$row['dia']."&".$row['comentario1']."&".$row['comentario2']."&".$row['kmsrecorridos']."&".$row['gananciaobtenida']."&".$row['idoperador']);    
                
                        
$contadorRegistrosXOperador++;
                        if(
$contadorRegistrosXOperador == $registrosXOperador)
                        {
                            for(
$y=1$y<8$y++)
                            {
                                for(
$x=0$x<$registrosXOperador$x++)
                                {

                                        
$varExplode explode('&',$datosOperador[$x]);
                                        
                                        if(
$varExplode[0]==$query[$y])
                                        {    
                                        
                                        
$var1 explode('&',$datosOperador[$x]);

                                        echo 
"<td>                        
                                         <input type='text' id='id_der' value='"
.number_format($var1[3],2)."'readonly/>
                                        <input type='text' id='id_der' value='"
.number_format($var1[4],2)."'readonly/>                                    
                                            </td>"
;
                                        
goto eti;
                                        }
                                }
                            echo 
"<td></td>";

                            
eti:
                            }
                            

                    
$cuenta mysql_query("select operador, fecha, sum(gananciaobtenida) as ganancia, 
                                           sum(kmsrecorridos) as kms from registros where fecha between 
                                           '$fecha1' and '$fecha2' and operador="
.$row['idoperador'], $link)
                                           or die(
mysql_error());             
                                
                            
                    while (
$row1 mysql_fetch_array($cuenta))
                    {
                     
$ganancia1=$row1['ganancia'];
                     
$kms1=$row1['kms'];
                     if(
$ganancia1==0.00 && $kms1==0.00)
                     {
                      
$totalsemana=0.0;
                     }
                     else
                     {
                     
$totalsemana=$ganancia1/$kms1;    
                     
$totalsemana=number_format($totalsemana,2);
                     }                    
                     echo             
                     
"<td>     
                      <input type='text' value='$totalsemana'/>    
                      <input type='text' value='"
.number_format($row1['kms'],2)."'/>
                      <input type='text' value='"
.number_format($row1['ganancia'],2)."'/>
                      </td>"
;
                    }                            
                            
                            echo
"</tr>";
                            
$contadorRegistrosXOperador 0;
                            
$datosOperador = array();
                        }
                        
                        
                        
$i++; 
                        
    
        }  
        echo 
"</table><body></html>";
      }


$html=ob_get_contents(); 
// delete Output-Buffer 
ob_end_clean(); 
$pdf = new HTML2FPDF('L'); 
//$pdf->DisplayPreferences('HideWindowUI'); 
$pdf -> SetDisplayMode('fullpage'); 
$pdf->AddPage(); 
$pdf->UseCSS($opt==true); 
$pdf->WriteHTML($html); 
$pdf->ReadCSS($html); 
$pdf->Output('doc.pdf','D'); 

?>

acá la imagen de cómo me esta quedando :l
  #2 (permalink)  
Antiguo 06/08/2013, 13:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas al mostrar un pdf con html2pdf

Dos cosas:

1) Me pregunto si habrás leído sobre las limitaciones de dicha librería, eso es clave si quieres que funcione de la mejor manera.

2) Ya con las limitaciones en mente, ¿por qué no usas elementos más sencillos?

Eso de usar <input readonly/> se me hace completamente innecesario, pues si al final se trata de un PDF, ¿qué sentido tiene usar dichos tags de HTML si son inútiles en el PDF?

Primero deberías maquetar todo siguiendo las normas de la librería, hacer pruebas y si todo se ve como esperas entonces integrarlo con PHP no debería ser ningún problema.

Cita:
[...] me urge terminar esto
Me imagino, tanto que urge que ni siquiera has de leer la documentación de las librerías que usas, a tal grado que ahora estás mas ahogado que una esponja de mar.

No cuesta nada ayudar dentro de lo posible, pero cuando se ignoran todas las reglas ya no es posible corregir lo incorregible.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: Ninguno
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 20:00.