Fpdf y multicell

Hola David:
Tengo un problema, estoy creando un documento pdf con fpdf, necesito crear un tabla con multicell para que el texto que introduzco en la tabla se pueda ajustar a la celda, sin embargo a crear la tabla y darle la orientación con por, y, pues me encima la información y no se como hacerla, por que me muestra la consulta en una misma fila y toda ensimada en las celdas. Es decir si deberían de ser tres filas somo me muestra una pero con toda la información ensimada.
El código que tengo es el siguiente:
function BasicTableSQL2($pdf) 

     $pdf->Cell(5,7,"No.",1);     
     $pdf->Cell(40,7,"SERVICIOS ",1); 
     $pdf->Cell(50,7,"FACTORES ",1);
  $pdf->Cell(30,7,"UNIDAD ",1);     
     $pdf->Cell(10,7,"MINIMO",1); 
     $pdf->Cell(10,7,"ESPERADO",1);
  $pdf->Cell(10,7,"MAXIMO",1);     
     $pdf->Cell(25,7,"DESCRIPCION ",1);     
     $pdf->Ln(); //Esto hace un cambio de línea
mysql_connect('localhost','xxx','xxx');
mysql_select_db('documentacion);
$result9=mysql_query("select numero, serv, factores, unidad, minimo_espe, valor, maximo, des from resultados where anio= '".$_SESSION['anio']."'");
$number_of_products9 = mysql_numrows($result9);
while ($row = mysql_fetch_array($result9)) {
$Y_Table_Position = 33;
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(10);
        $pdf->MultiCell(5,15,$row['numero'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(15);
        $pdf->MultiCell(40,15,$row['serv'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(55); 
        $pdf->MultiCell(50,15,$row['factores'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(105);
  $pdf->MultiCell(30,15,$row['unidad'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(135);
        $pdf->MultiCell(10,15,$row['minimo_espe'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(145);
        $pdf->MultiCell(10,15,$row['valor'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(155);
  $pdf->MultiCell(10,15,$row['maximo'],1);
  $pdf->SetY($Y_Table_Position);
  $pdf->SetX(165); 
        $pdf->MultiCell(25,15,$row['des'],1);                          
        $pdf->Ln(); //Salto de Línea.

   } 
//mysql_close();
$pdf->AddPage();  //Adiciono una nueva página
$i = 0;
$pdf->SetY($Y_Table_Position);
while ($i < $number_of_products9)
{
    $pdf->SetX(45);
    $pdf->MultiCell(120,6,'',0, L, J);
    $i = $i +1;
}    
$Y_Fields_Name_position = 20;
$Y_Table_Position = 26;
$pdf->SetFillColor(232,232,232);
$pdf->SetFont('Arial','B',12);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(25);
$pdf->Cell(150,6,'OBJETIVOS"',0,0,'L',1);
$pdf->Ln();
$pdf->SetFont('Arial','',6);  //Tipo de fuente y tamaño.
BasicTableSQL2($pdf); //Llamo a la función y le paso el objeto $pdf como parámetro. Esto me crea la tabla.
Espero haberme dado a entender y ojalá me puedas ayudar
1

1 respuesta

1
Respuesta de
Hola,
esto creo que te ocurre porque en el bucle no aumentas el valor de la variable $Y_Table_Position, que siempre tiene el valor 33. Por lo tanto estás indicando que cada línea se escriba en el mismo lugar.
Incrementa este valor a cada vuelta del bucle y te saldrá correctamente.
Saludos.
David Cortés Braña
Te agradezco mucho tu respuesta, pero como podría hacer eso que me dices, no se si me podrías dar algún ejemplo, te lo agradecería mucho
Hola,
veo que no me he explicado bien. Me refiero a que donde pones:
while ($row = mysql_fetch_array($result9)) {
$Y_Table_Position = 33;
deberías poner:
$Y_Table_Position = 0;
while ($row = mysql_fetch_array($result9)) {
$Y_Table_Position = $Y_Table_Position + 33;
Saludos.
David Cortés Braña
Hola:
Bueno pues no me hace lo que en realidad necesito, no se si tu sepas de alguna forma para hacer la tabla como quiero ya que de la forma en que te lo mostré y haciendo los cambios que me sugeriste pues no me hace la tabla bien solo me muestra celdas separadas.
Necesito meter en una tabla diferente tipo de datos como lo muestra los títulos de mis tabla que te mostré en código anteriormente desde numérico que no ocupa mucho espacio en la celda hasta la descripción de lo que estoy introduciendo que es texto que puede ocuapar varias lineas en la celda bueno en este caso en la tabla, pero necesito que esto se ajuste a mi tabla al realizar la consulta e imprimirla en el pdf, no se si esto se pueda hacer por que de la forma en que lo estaba tratando de hacer como te mencione anteriormente solo me muestra celdas separadas.
Desde ya muchas gracias por tu ayuda
Hola,
lo siento pero no consigo imaginarme lo que dices que ocurre: que los resultados se muestran en 'celdas separadas'.
Supongo que cada resultado se muestra en su celda.
Saludos.
David Cortés Braña
Ok disculpa si no me he dado a entender pero intentaré darme a explicar mejor, mira te pongo un ejemplo de más o menos lo que necesito:
nombre | cantidad  | descripcion           |
--------------------------------------------------
silvia    | 3         | necesita                     |
            |           | recursos                     |
            |           | financierons para       |
            |           | la realizacion del        |
            |           | proyecto                     |
--------------------------------------------------
julio     | 8         | requiere de comopu-  |
            |           | tadoras portatiles       |
            |           | para su equipo de       |
            |           | trabajo.                       |
--------------------------------------------------
Como podrás observar los dos primeros campos son de texto muy pequeño sin embargo el ultimo es de texto mucho más grande.
Y el código que tengo actualmente con las correcciones que me hiciste pues me muestra la tabla de la siguiente forma:
nombre | cantidad  | descripcion         |
-----------------------------------------
silvia     | 3         | necesita                  |
--------------------- recursos                  |
                          | financierons para    |
                          | la realizacion del     |
                          | proyecto                 |
                          ----------------------------
-----------------------------------------------
julio  | 8         | requiere de comopu- |
-----------------| tadoras portatiles      |
                      | para su equipo de     |
                      | trabajo.                     |
                      ------------------------------
Como podrás ver me deja un espacio entre las dos filas y ademaas no se ajustan, se ven muy disparejas las tres celdas, Por eso te pregunta si existe alguna forma para mi tabla quede como la primera que te mostré. Espero haber sido ya más clara y en verdad agradecería mucho tu ayuda.
Hola,
pues no conozco esta librería como para saber lo que ocurre. Quizás añades un salto de línea extra y por eso quedan separadas las filas.
Por otro lado, para que te quede como quieres, necesitarías saber el alto de la última celda para aplicárselo a la primera y segunda. Quizás puedas hacer un cálculo aproximado en función del texto de la tercera celda y asignar la misma altura a las tres. Podría funcionar.
Saludos.
David Cortés Braña
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje

Más respuestas relacionadas

¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema PHP o hacer tu propia pregunta: