TCPDF - Método Multicell

1,712 views
Skip to first unread message

Ana Lis

unread,
Jul 20, 2010, 10:49:59 PM7/20/10
to symfony-es
Hola! Estoy mostrando un listado y tengo un campo "comentarios" que
puede tener hasta 500 caracteres.
Mi tabla tiene 3 columnas: ID | Apellido y Nombre | Comentario y lo
que me imprime es mas o menos asi:
-----------------------------------------------------------
1 | Lopez Maria | esto es un comentario |
-----------------------| un poco largo para |
|mostrar el problema |
-----------------------------------------------------------
2 | Perez Pedro| otro comentario |
-----------------------------------------------------------

y en realidad, yo quisiera que la tabla se muestre asi:

-----------------------------------------------------------
| | esto es un comentario |
1 | Lopez Maria | un poco largo para |
| |mostrar el problema. |
-----------------------------------------------------------
2 | Perez Pedro | otro comentario |
-----------------------------------------------------------

no se si se entiende la diferencia... quisiera que las lineas de la
tabla se ajusten en altura a la celda que mayor altura tenga,
centrándo los datos de aquellas que tengan menor cantidad de
caracteres..

este es el codigo que imprime la tabla:

$encabezado = array("id","Nombre y Apellido","Comentario");
foreach($data as $row)
{
for($i = 0; $i < count($encabezado); ++$i)
{
$pdf->MultiCell($w[$i], 6, $row[$i], 1,'C',0,0);
}
$pdf->Ln();
}

Espero alguien pueda ayudarme (y entenderme)! Desde ya muchas gracias!
Saludos!

Ana Lis

unread,
Jul 21, 2010, 12:27:07 AM7/21/10
to symfony-es
En este sitio: http://www.onemoretake.com/2009/03/27/revisited-tcpdf-variable-height-table-rows-with-multicell/
Encontre una posible solucion pero no me funciona, es el método $pdf-
>getNumLines($texto, $anchoCelda)
La funcion recibe el arreglo $data con los datos, el código es el
siguiente:

foreach($data as $row)
{
//determino la maxima cantidad de lineas necesarias
//de entre las celdas de una fila
$alto = 0;
for($k = 0; $k < count($encabezado); ++$k)
{
$celda = $pdf->getNumLines($row[$k], 38);
if($celda > $cantidadLineas){$cantidadLineas= $celda;}
}
//pinto las celdas de una fila de la tabla
for($i = 0; $i < count($encabezado); ++$i)
{
$pdf->MultiCell($w[$i], $cantidadLineas* 6, $row[$i], 1,'C',
0,0);
}
$pdf->Ln();
}

Da este error:
-------------------------------------------------------------------------------------
Notice: Undefined offset: -1 in C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\sgm\plugins\sfTCPDFPlugin\lib\tcpdf
\tcpdf.php on line 5742
Notice: Undefined offset: -1 in C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\sgm\plugins\sfTCPDFPlugin\lib\tcpdf
\tcpdf.php on line 5742
TCPDF ERROR: Some data has already been output, can't send PDF file
Notice: Undefined property: sfTCPDF::$userData in C:\Program Files
\Apache Software Foundation\Apache2.2\htdocs\sgm\plugins\sfTCPDFPlugin
\lib\sfTCPDF.class.php on line 112
Warning: array_key_exists() expects parameter 2 to be array, null
given in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
\sgm\plugins\sfTCPDFPlugin\lib\sfTCPDF.class.php on line 112
Notice: Undefined property call via __get(): userData in C:\Program
Files\Apache Software Foundation\Apache2.2\htdocs\sgm\plugins
\sfTCPDFPlugin\lib\sfTCPDF.class.php on line 134 in C:\Program Files
\Apache Software Foundation\Apache2.2\htdocs\sgm\plugins\sfTCPDFPlugin
\lib\sfTCPDF.class.php on line 121
Notice: Undefined property: sfTCPDF::$userData in C:\Program Files
\Apache Software Foundation\Apache2.2\htdocs\sgm\plugins\sfTCPDFPlugin
\lib\sfTCPDF.class.php on line 112
Warning: array_key_exists() expects parameter 2 to be array, null
given in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
\sgm\plugins\sfTCPDFPlugin\lib\sfTCPDF.class.php on line 112
Notice: Undefined property call via __get(): userData in C:\Program
Files\Apache Software Foundation\Apache2.2\htdocs\sgm\plugins
\sfTCPDFPlugin\lib\sfTCPDF.class.php on line 134 in C:\Program Files
\Apache Software Foundation\Apache2.2\htdocs\sgm\plugins\sfTCPDFPlugin
\lib\sfTCPDF.class.php on line 121
-------------------------------------------------------------------------------------
Lo curioso es que NO ME DA ERROR si le paso el parametro texto como
una cadena: $pdf->getNumLines('Hola Mundo', $anchoCelda), en el codigo
anterior sería:
foreach($data as $row)
{
//determino la maxima cantidad de lineas necesarias
//de entre las celdas de una fila
$alto = 0;
for($k = 0; $k < count($encabezado); ++$k)
{
$celda = $pdf->getNumLines('Hola Mundo',
38); <-- aqui
if($celda > $cantidadLineas){$cantidadLineas= $celda;}
}
//pinto las celdas de una fila de la tabla
for($i = 0; $i < count($encabezado); ++$i)
{
$pdf->MultiCell($w[$i], $cantidadLineas* 6, $row[$i], 1,'C',
0,0);
}
$pdf->Ln();
}

No entiendo que pasa, que locura, alguna idea alguien? Desde ya
agradecida.
Reply all
Reply to author
Forward
0 new messages