Este tutorial se explicará como crear tablas fácilmente.
<?phprequire('fpdf.php'); class class PDF extends FPDF {// Cargar los datosfunction LoadData($file) { { // Leer las líneas del fichero $lines = file($file); $data = array(); foreach( foreach($lines as $line) $data[] = explode(';',trim($line)); return return $data; } } // Tabla simplefunction BasicTable($header, $data) { { // Cabecera foreach($header as $col) $this->Cell(40,7,$col,1); $this->Ln(); // Datos foreach($data as $row) { foreach( { foreach($row as $col) $this->Cell(40,6,$col,1); $this->Ln(); } } }} // Una tabla más completafunction ImprovedTable($header, $data) { { // Anchuras de las columnas $w = array(40, 35, 45, 40); // Cabeceras for($i=0;$i<count($header);$i++) $this->Cell($w[$i],7,$header[$i],1,0,'C'); $this->Ln(); // Datos foreach($data as $row) { { $this->Cell($w[0],6,$row[0],'LR'); $this->Cell($w[1],6,$row[1],'LR'); $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R'); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R'); $this->Ln(); } } // Línea de cierre $this->Cell(array_sum($w),0,'','T'); } } // Tabla coloreadafunction FancyTable($header, $data) { { // Colores, ancho de línea y fuente en negrita $this->SetFillColor(255,0,0); $this->SetTextColor(255); $this->SetDrawColor(128,0,0); $this->SetLineWidth(.3); $this->SetFont('','B'); // Cabecera $w = array(40, 35, 45, 40); for( for($i=0;$i<count($header);$i++) $this->Cell($w[$i],7,$header[$i],1,0,'C',true); $this->Ln(); // Restauración de colores y fuentes $this->SetFillColor(224,235,255); $this->SetTextColor(0); $this->SetFont(''); // Datos $fill = false; foreach( foreach($data as $row) { { $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill); $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill); $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill); $this->Ln(); $fill = !$fill; } } // Línea de cierre $this->Cell(array_sum($w),0,'','T'); } } }} $pdf = new PDF(); // Títulos de las columnas$header = array('País', 'Capital', 'Superficie (km2)', 'Pobl. (en miles)'); // Carga de datos$data = $pdf->LoadData('paises.txt'); $pdf->SetFont('Arial','',14); $pdf->AddPage(); $pdf->BasicTable($header,$data); $pdf->AddPage(); $pdf->ImprovedTable($header,$data); $pdf->AddPage(); $pdf->FancyTable($header,$data); $pdf->Output(); ?>
Siendo una tabla un conjunto de celdas, lo natural es construirla de ellas. El primer ejemplo es el más básico posible: celdas con bordes simples, todas del mismo tamaño y alineadas a la izquierda. El resultado es algo rudimentario, pero es muy rápido de conseguir.
La segunda tabla tiene algunas mejoras: cada columna tiene su propio ancho, los títulos están centrados y el texto se alinea a la derecha. Más aún, las líneas horizontales se han eliminado. Esto se consigue mediante el parámetro
border
del método Cell(), que especifica qué bordes de la celda deben imprimirse. En este caso, queremos que sean los de la izquierda (L
) y los de la derecha (R
). Seguimos teniendo el problema de la línea horizontal de fin de tabla. Hay dos posibilidades: o comprobar si estamos en la última línea en el bucle, en cuyo caso usaremos LRB
para el parámtro border
; o, como hemos hecho aquí, añadir la línea una vez que el bucle ha terminado.
La tercera tabla es similar a la segunda, salvo por el uso de colores. Simplemente hemos especificado los colores de relleno, texto y línea. El coloreado alternativo de las filas se consigue alternando celdas transparentes y coloreadas.
No hay comentarios.:
Publicar un comentario