source: branches/version-2_11-dev/data/module/fpdf/tutorial/tuto5.htm @ 20993

Revision 20993, 12.0 KB checked in by Seasoft, 13 years ago (diff)

#1374 (依存ライブラリのアップデート)

  • FPDF 1.6 -> 1.7
  • FPDI 1.4 -> 1.4.1 (配置パスをFPDFから分離)
Line 
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>
10This tutorial shows different ways to make tables.
11<div class="source">
12<pre><code>&lt;?php
13<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);
14
15class </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>trim<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-&gt;</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-&gt;</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-&gt;</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-&gt;</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">&lt;</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
51        </span>$<span class="kw">this-&gt;</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-&gt;</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-&gt;</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-&gt;</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-&gt;</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-&gt;</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-&gt;</span>Ln<span class="kw">();
61    }
62    </span><span class="cmt">// Closing line
63    </span>$<span class="kw">this-&gt;</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-&gt;</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-&gt;</span>SetTextColor<span class="kw">(</span>255<span class="kw">);
72    </span>$<span class="kw">this-&gt;</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-&gt;</span>SetLineWidth<span class="kw">(</span>.3<span class="kw">);
74    </span>$<span class="kw">this-&gt;</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">&lt;</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++)
78        </span>$<span class="kw">this-&gt;</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-&gt;</span>Ln<span class="kw">();
80    </span><span class="cmt">// Color and font restoration
81    </span>$<span class="kw">this-&gt;</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-&gt;</span>SetTextColor<span class="kw">(</span>0<span class="kw">);
83    </span>$<span class="kw">this-&gt;</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-&gt;</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-&gt;</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-&gt;</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-&gt;</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-&gt;</span>Ln<span class="kw">();
93        </span>$fill <span class="kw">= !</span>$fill<span class="kw">;
94    }
95    </span><span class="cmt">// Closing line
96    </span>$<span class="kw">this-&gt;</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">);
97}
98}
99
100</span>$pdf <span class="kw">= new </span>PDF<span class="kw">();
101</span><span class="cmt">// Column headings
102</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">);
103</span><span class="cmt">// Data loading
104</span>$data <span class="kw">= </span>$pdf<span class="kw">-&gt;</span>LoadData<span class="kw">(</span><span class="str">'countries.txt'</span><span class="kw">);
105</span>$pdf<span class="kw">-&gt;</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">);
106</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
107</span>$pdf<span class="kw">-&gt;</span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
108</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
109</span>$pdf<span class="kw">-&gt;</span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
110</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
111</span>$pdf<span class="kw">-&gt;</span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">);
112</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
113</span>?&gt;</code></pre>
114</div>
115<p class='demo'><a href='tuto5.php' target='_blank' class='demo'>[Demo]</a></p>
116A table being just a collection of cells, it's natural to build one from them. The first
117example is achieved in the most basic way possible: simple framed cells, all of the same size
118and left aligned. The result is rudimentary but very quick to obtain.
119<br>
120<br>
121The second table brings some improvements: each column has its own width, headings are centered,
122and numbers right aligned. Moreover, horizontal lines have been removed. This is done by means
123of the <code>border</code> parameter of the <a href='../doc/cell.htm'>Cell()</a> method, which specifies which sides of the
124cell must be drawn. Here we want the left (<code>L</code>) and right (<code>R</code>) ones. It remains
125the problem of the horizontal line to finish the table. There are two possibilities: either
126check for the last line in the loop, in which case we use <code>LRB</code> for the <code>border</code>
127parameter; or, as done here, add the line once the loop is over.
128<br>
129<br>
130The third table is similar to the second one but uses colors. Fill, text and line colors are
131simply specified. Alternate coloring for rows is obtained by using alternatively transparent
132and filled cells.
133</body>
134</html>
Note: See TracBrowser for help on using the repository browser.