[2] | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
---|
| 2 | <html>
|
---|
| 3 | <head>
|
---|
| 4 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
---|
| 5 | <title>Tables</title>
|
---|
| 6 | <link type="text/css" rel="stylesheet" href="../fpdf.css">
|
---|
| 7 | </head>
|
---|
| 8 | <body>
|
---|
| 9 | <h1>Tables</h1>
|
---|
| 10 | This tutorial shows how to make tables easily.
|
---|
| 11 | <div class="source">
|
---|
| 12 | <pre><code><?php
|
---|
| 13 | <span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
|
---|
| 14 |
|
---|
| 15 | class </span>PDF <span class="kw">extends </span>FPDF
|
---|
| 16 | <span class="kw">{
|
---|
| 17 | </span><span class="cmt">//Load data
|
---|
| 18 | </span><span class="kw">function </span>LoadData<span class="kw">(</span>$file<span class="kw">)
|
---|
| 19 | {
|
---|
| 20 | </span><span class="cmt">//Read file lines
|
---|
| 21 | </span>$lines<span class="kw">=</span>file<span class="kw">(</span>$file<span class="kw">);
|
---|
| 22 | </span>$data<span class="kw">=array();
|
---|
| 23 | foreach(</span>$lines <span class="kw">as </span>$line<span class="kw">)
|
---|
| 24 | </span>$data<span class="kw">[]=</span>explode<span class="kw">(</span><span class="str">';'</span><span class="kw">,</span>chop<span class="kw">(</span>$line<span class="kw">));
|
---|
| 25 | return </span>$data<span class="kw">;
|
---|
| 26 | }
|
---|
| 27 |
|
---|
| 28 | </span><span class="cmt">//Simple table
|
---|
| 29 | </span><span class="kw">function </span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">)
|
---|
| 30 | {
|
---|
| 31 | </span><span class="cmt">//Header
|
---|
| 32 | </span><span class="kw">foreach(</span>$header <span class="kw">as </span>$col<span class="kw">)
|
---|
| 33 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>7<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">);
|
---|
| 34 | </span>$<span class="kw">this-></span>Ln<span class="kw">();
|
---|
| 35 | </span><span class="cmt">//Data
|
---|
| 36 | </span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
|
---|
| 37 | {
|
---|
| 38 | foreach(</span>$row <span class="kw">as </span>$col<span class="kw">)
|
---|
| 39 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>6<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">);
|
---|
| 40 | </span>$<span class="kw">this-></span>Ln<span class="kw">();
|
---|
| 41 | }
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | </span><span class="cmt">//Better table
|
---|
| 45 | </span><span class="kw">function </span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">)
|
---|
| 46 | {
|
---|
| 47 | </span><span class="cmt">//Column widths
|
---|
| 48 | </span>$w<span class="kw">=array(</span>40<span class="kw">,</span>35<span class="kw">,</span>40<span class="kw">,</span>45<span class="kw">);
|
---|
| 49 | </span><span class="cmt">//Header
|
---|
| 50 | </span><span class="kw">for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw"><</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
|
---|
| 51 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">);
|
---|
| 52 | </span>$<span class="kw">this-></span>Ln<span class="kw">();
|
---|
| 53 | </span><span class="cmt">//Data
|
---|
| 54 | </span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
|
---|
| 55 | {
|
---|
| 56 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">);
|
---|
| 57 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">);
|
---|
| 58 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">);
|
---|
| 59 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">);
|
---|
| 60 | </span>$<span class="kw">this-></span>Ln<span class="kw">();
|
---|
| 61 | }
|
---|
| 62 | </span><span class="cmt">//Closure line
|
---|
| 63 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">);
|
---|
| 64 | }
|
---|
| 65 |
|
---|
| 66 | </span><span class="cmt">//Colored table
|
---|
| 67 | </span><span class="kw">function </span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">)
|
---|
| 68 | {
|
---|
| 69 | </span><span class="cmt">//Colors, line width and bold font
|
---|
| 70 | </span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>255<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">);
|
---|
| 71 | </span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>255<span class="kw">);
|
---|
| 72 | </span>$<span class="kw">this-></span>SetDrawColor<span class="kw">(</span>128<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">);
|
---|
| 73 | </span>$<span class="kw">this-></span>SetLineWidth<span class="kw">(</span>.3<span class="kw">);
|
---|
| 74 | </span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">);
|
---|
| 75 | </span><span class="cmt">//Header
|
---|
| 76 | </span>$w<span class="kw">=array(</span>40<span class="kw">,</span>35<span class="kw">,</span>40<span class="kw">,</span>45<span class="kw">);
|
---|
| 77 | for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw"><</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
|
---|
| 78 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">);
|
---|
| 79 | </span>$<span class="kw">this-></span>Ln<span class="kw">();
|
---|
| 80 | </span><span class="cmt">//Color and font restoration
|
---|
| 81 | </span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>224<span class="kw">,</span>235<span class="kw">,</span>255<span class="kw">);
|
---|
| 82 | </span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>0<span class="kw">);
|
---|
| 83 | </span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">);
|
---|
| 84 | </span><span class="cmt">//Data
|
---|
| 85 | </span>$fill<span class="kw">=</span>false<span class="kw">;
|
---|
| 86 | foreach(</span>$data <span class="kw">as </span>$row<span class="kw">)
|
---|
| 87 | {
|
---|
| 88 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">);
|
---|
| 89 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">);
|
---|
| 90 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">);
|
---|
| 91 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">]),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">);
|
---|
| 92 | </span>$<span class="kw">this-></span>Ln<span class="kw">();
|
---|
| 93 | </span>$fill<span class="kw">=!</span>$fill<span class="kw">;
|
---|
| 94 | }
|
---|
| 95 | </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">);
|
---|
| 96 | }
|
---|
| 97 | }
|
---|
| 98 |
|
---|
| 99 | </span>$pdf<span class="kw">=new </span>PDF<span class="kw">();
|
---|
| 100 | </span><span class="cmt">//Column titles
|
---|
| 101 | </span>$header<span class="kw">=array(</span><span class="str">'Country'</span><span class="kw">,</span><span class="str">'Capital'</span><span class="kw">,</span><span class="str">'Area (sq km)'</span><span class="kw">,</span><span class="str">'Pop. (thousands)'</span><span class="kw">);
|
---|
| 102 | </span><span class="cmt">//Data loading
|
---|
| 103 | </span>$data<span class="kw">=</span>$pdf<span class="kw">-></span>LoadData<span class="kw">(</span><span class="str">'countries.txt'</span><span class="kw">);
|
---|
| 104 | </span>$pdf<span class="kw">-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>14<span class="kw">);
|
---|
| 105 | </span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
---|
| 106 | </span>$pdf<span class="kw">-></span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
|
---|
| 107 | </span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
---|
| 108 | </span>$pdf<span class="kw">-></span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
|
---|
| 109 | </span>$pdf<span class="kw">-></span>AddPage<span class="kw">();
|
---|
| 110 | </span>$pdf<span class="kw">-></span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
|
---|
| 111 | </span>$pdf<span class="kw">-></span>Output<span class="kw">();
|
---|
| 112 | </span>?></code></pre>
|
---|
| 113 | </div>
|
---|
| 114 | <p class='demo'><a href='tuto5.php' target='_blank' class='demo'>[Demo]</a></p>
|
---|
| 115 | A table being just a collection of cells, it is natural to build one from them. The first
|
---|
| 116 | example is achieved in the most basic way possible: simple framed cells, all of the same size
|
---|
| 117 | and left aligned. The result is rudimentary but very quick to obtain.
|
---|
| 118 | <br>
|
---|
| 119 | <br>
|
---|
| 120 | The second table brings some improvements: each column has its own width, titles are centered
|
---|
| 121 | and figures right aligned. Moreover, horizontal lines have been removed. This is done by means
|
---|
| 122 | of the <code>border</code> parameter of the <a href='../doc/cell.htm'>Cell()</a> method, which specifies which sides of the
|
---|
| 123 | cell must be drawn. Here we want the left (<code>L</code>) and right (<code>R</code>) ones. It remains
|
---|
| 124 | the problem of the horizontal line to finish the table. There are two possibilities: either
|
---|
| 125 | check for the last line in the loop, in which case we use <code>LRB</code> for the <code>border</code>
|
---|
| 126 | parameter; or, as done here, add the line once the loop is over.
|
---|
| 127 | <br>
|
---|
| 128 | <br>
|
---|
| 129 | The third table is similar to the second one but uses colors. Fill, text and line colors are
|
---|
| 130 | simply specified. Alternate coloring for rows is obtained by using alternatively transparent
|
---|
| 131 | and filled cells.
|
---|
| 132 | </body>
|
---|
| 133 | </html>
|
---|