yn ==:o>^CD}c`ÙDHLUJ"1W5HO[*#`4kyrX9Nr}8&CAPQx`(.򎴸ep/+o:tïIo6(@$T9Mg_y@`(f1`cNž[ 6۾MÜC? "01j`F 1vFH B5 9ݣ}vN~`)n[ Ey=|'/ 㔩t"{g`e~ѥn6 Bmbyjsapܧ^^ r/-b3QY .$ {U }-VF;+%eOYy;faV'ѡ 0[ɸq_̵ْ %QF{% hv \+G˜ɸsmb+#Ί$+.Yyj ܘx|R&AO ܟt,fe0h03@"ض]>x>i,{%@4B)v؊$+.Yyj ܺ+s;w&6ϼʺUժ}@`9.2d)buF0hPE" ^ě\W>R^OCm(QΌ]߉3WɈNzغЈ2Jt66]`iS.}O2da*SW/ T{{@<^--|iEQ ^S.@W)?Fu44DMG[P=?P5pS8=Iv'E(TW4TR = xͦy+񖆥BPM1Q `u9hZ{Hd4 7i.d$#spD8 0[ɸq_{]Ɓ)!@Cdm"cN)Gʩ~ =) 'lnujwZy?c+aX+(4m)ռ?ʀ\1g/_Wפ`_mTo6\c؜Qm̟L p[Twr.$l.,gX&3EހmsmN9.>fL^eZL!pBlnujwZy?c+aXԡ|/b`d;?hq F{}w % ܟt,fAP6(Ώ$@"=g6ߍ:] tYl5YĤ)fh3=(6N:[?;~Q.v|9'|:yNx߃ƚX8N3OcVe;D>Iy5r:3<՗h Tbګ7s&ߺȃڤ {]Ɓ)!@Cdm"cN)Gʩ~ =) 'lnujwZy?c+aX+(4m)ռ?ʀ\*#[;| y3ΪI`_mTo6\c؜Qm̟L p[Twr.$l.,gX!:prr 9ݣ}vN~. .'YuӬpA;80,SQq?Z-6 ѐm1=4hJCDj}K$EaNVq3ra?yRκӶZP3(pI/28 dj`Fj}l*Qjml`!}~7+"v%XM0E.`SRw|r$giqMI^ͯ- :%] >+ 9ݣ}vN~Kr}V_ 2o6\c؜ 7U!] 㚙o6\c؜N5IШoM1qfz и"Gʻ=W@O\Ld\j2*k&"^8P\TyW\81,;I!؝ODx>GQƊ`LFؒJwFG̈́PV#^E̅zRˏ(kS>v!EݮC8i귞ʗǔ>SRE͕8@q@υVe5#^1eCހ,K ?z)5v!\UYB :UacՕ_fʠSBVWHE\bűl  χG0yUٱc CwW1m˗wʬ;,CܷC U=t! >kCkΖw@0b IyǶ+"X7{⛲W I1ή>HƣO 9ݣ}vN~j^ZĘ$ӗ{H睛9mR4c5ع? {]Ɓ)!@Cdm"cN)Gʩ~ =) 'lnujwZy?c+aXxwc3S-޳OĄvVirGY o& K,;"5C­z)5GplFB['\f,-6Kv| @u27Ypd)΅X3Mr}tB>7 C&,RQö́PV#Ȧs/`WvY/XX?P5pS8=Iv| oq.ɸC{]Ɓ)!@Cdm"cN)Gʩ~ =) 'lnujwZy?c+aXxwc3S-޳OĄvVirn>2],6,number_format($row[2]),'LR',0,'R'); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R'); $this->Ln(); } // Lnea de cierre $this->Cell(array_sum($w),0,'','T'); } // Tabla coloreada function FancyTable($header, $data) { // Colores, ancho de lnea 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($i=0;$i<count($header);$i++) $this->Cell($w[$i],7,$header[$i],1,0,'C',true); $this->Ln(); // Restauracin de colores y fuentes $this->SetFillColor(224,235,255); $this->SetTextColor(0); $this->SetFont(''); // Datos $fill = false; 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; } // Lnea de cierre $this->Cell(array_sum($w),0,'','T'); } } $pdf = new PDF(); // Ttulos de las columnas $header = array('Pas', '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(); ?>

[Demo]

Siendo una tabla un conjunto de celdas, lo natural es construirla de ellas. El primer ejemplo es el ms bsico posible: celdas con bordes simples, todas del mismo tamao y alineadas a la izquierda. El resultado es algo rudimentario, pero es muy rpido de conseguir.

La segunda tabla tiene algunas mejoras: cada columna tiene su propio ancho, los ttulos estn centrados y el texto se alinea a la derecha. Ms an, las lneas horizontales se han eliminado. Esto se consigue mediante el parmetro border del mtodo 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 lnea horizontal de fin de tabla. Hay dos posibilidades: o comprobar si estamos en la ltima lnea en el bucle, en cuyo caso usaremos LRB para el parmtro border; o, como hemos hecho aqu, aadir la lnea 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 lnea. El coloreado alternativo de las filas se consigue alternando celdas transparentes y coloreadas.