1 | <?php |
---|
2 | require DATA_REALDIR . 'module/fpdf/fpdf.php';
|
---|
3 | require DATA_REALDIR . 'module/fpdi/fpdi.php';
|
---|
4 | |
---|
5 | class SC_Helper_FPDI extends FPDI { |
---|
6 | public static $SJIS_widths = array(
|
---|
7 | ' ' => 278, '!' => 299, '"' => 353, '#' => 614, '$' => 614, '%' => 721, '&' => 735, '\'' => 216,
|
---|
8 | '(' => 323, ')' => 323, '*' => 449, '+' => 529, ',' => 219, '-' => 306, '.' => 219, '/' => 453, '0' => 614, '1' => 614,
|
---|
9 | '2' => 614, '3' => 614, '4' => 614, '5' => 614, '6' => 614, '7' => 614, '8' => 614, '9' => 614, ':' => 219, ';' => 219,
|
---|
10 | '<' => 529, '=' => 529, '>' => 529, '?' => 486, '@' => 744, 'A' => 646, 'B' => 604, 'C' => 617, 'D' => 681, 'E' => 567,
|
---|
11 | 'F' => 537, 'G' => 647, 'H' => 738, 'I' => 320, 'J' => 433, 'K' => 637, 'L' => 566, 'M' => 904, 'N' => 710, 'O' => 716,
|
---|
12 | 'P' => 605, 'Q' => 716, 'R' => 623, 'S' => 517, 'T' => 601, 'U' => 690, 'V' => 668, 'W' => 990, 'X' => 681, 'Y' => 634,
|
---|
13 | 'Z' => 578, '[' => 316, '\\' => 614, ']' => 316, '^' => 529, '_' => 500, '`' => 387, 'a' => 509, 'b' => 566, 'c' => 478,
|
---|
14 | 'd' => 565, 'e' => 503, 'f' => 337, 'g' => 549, 'h' => 580, 'i' => 275, 'j' => 266, 'k' => 544, 'l' => 276, 'm' => 854,
|
---|
15 | 'n' => 579, 'o' => 550, 'p' => 578, 'q' => 566, 'r' => 410, 's' => 444, 't' => 340, 'u' => 575, 'v' => 512, 'w' => 760,
|
---|
16 | 'x' => 503, 'y' => 529, 'z' => 453, '{' => 326, '|' => 380, '}' => 326, '~' => 387,
|
---|
17 | );
|
---|
18 |
|
---|
19 | function AddCIDFont($family, $style, $name, $cw, $CMap, $registry) {
|
---|
20 | $fontkey = strtolower($family).strtoupper($style);
|
---|
21 | if (isset($this->fonts[$fontkey])) {
|
---|
22 | $this->Error("CID font already added: $family $style");
|
---|
23 | }
|
---|
24 | $i = count($this->fonts) + 1;
|
---|
25 | $this->fonts[$fontkey] = array(
|
---|
26 | 'i' => $i,
|
---|
27 | 'type' => 'Type0',
|
---|
28 | 'name' => $name,
|
---|
29 | 'up' => -120,
|
---|
30 | 'ut' => 40,
|
---|
31 | 'cw' => $cw,
|
---|
32 | 'CMap' => $CMap,
|
---|
33 | 'registry' => $registry,
|
---|
34 | );
|
---|
35 | }
|
---|
36 |
|
---|
37 | function AddCIDFonts($family, $name, $cw, $CMap, $registry) {
|
---|
38 | $this->AddCIDFont($family, '', $name, $cw, $CMap, $registry);
|
---|
39 | $this->AddCIDFont($family, 'B', $name . ',Bold', $cw, $CMap, $registry);
|
---|
40 | $this->AddCIDFont($family, 'I', $name . ',Italic', $cw, $CMap, $registry);
|
---|
41 | $this->AddCIDFont($family, 'BI', $name . ',BoldItalic', $cw, $CMap, $registry);
|
---|
42 | }
|
---|
43 |
|
---|
44 | function AddSJISFont($family = 'SJIS') {
|
---|
45 | //Add SJIS font with proportional Latin
|
---|
46 | $name = 'KozMinPro-Regular-Acro';
|
---|
47 | $cw = SC_Helper_FPDI_Ex::$SJIS_widths;
|
---|
48 | $CMap = '90msp-RKSJ-H';
|
---|
49 | $registry = array('ordering' => 'Japan1', 'supplement' => 2);
|
---|
50 | $this->AddCIDFonts($family, $name, $cw, $CMap, $registry);
|
---|
51 | }
|
---|
52 |
|
---|
53 | function AddSJIShwFont($family = 'SJIS-hw') {
|
---|
54 | //Add SJIS font with half-width Latin
|
---|
55 | $name = 'KozMinPro-Regular-Acro';
|
---|
56 | for ($i = 32; $i <= 126; $i++) {
|
---|
57 | $cw[chr($i)] = 500;
|
---|
58 | }
|
---|
59 | $CMap = '90ms-RKSJ-H';
|
---|
60 | $registry = array('ordering' => 'Japan1', 'supplement' => 2);
|
---|
61 | $this->AddCIDFonts($family, $name, $cw, $CMap, $registry);
|
---|
62 | }
|
---|
63 |
|
---|
64 | function GetStringWidth($s) {
|
---|
65 | if ($this->CurrentFont['type']=='Type0') {
|
---|
66 | return $this->GetSJISStringWidth($s);
|
---|
67 | } else {
|
---|
68 | return parent::GetStringWidth($s);
|
---|
69 | }
|
---|
70 | }
|
---|
71 |
|
---|
72 | function GetSJISStringWidth($s) {
|
---|
73 | //SJIS version of GetStringWidth()
|
---|
74 | $l = 0;
|
---|
75 | $cw =& $this->CurrentFont['cw'];
|
---|
76 | $nb = strlen($s);
|
---|
77 | $i = 0;
|
---|
78 | while ($i<$nb) {
|
---|
79 | $o = ord($s{$i});
|
---|
80 | if ($o < 128) {
|
---|
81 | //ASCII
|
---|
82 | $l += $cw[$s{$i}];
|
---|
83 | $i++;
|
---|
84 | }
|
---|
85 | elseif($o >= 161 && $o <= 223) {
|
---|
86 | //Half-width katakana
|
---|
87 | $l += 500;
|
---|
88 | $i++;
|
---|
89 | }
|
---|
90 | else {
|
---|
91 | //Full-width character
|
---|
92 | $l += 1000;
|
---|
93 | $i += 2;
|
---|
94 | }
|
---|
95 | }
|
---|
96 | return $l * $this->FontSize / 1000;
|
---|
97 | }
|
---|
98 |
|
---|
99 | function MultiCell($w, $h, $txt, $border = 0, $align = 'L', $fill = 0, $ln = 2) {
|
---|
100 | if ($this->CurrentFont['type'] == 'Type0') {
|
---|
101 | $this->SJISMultiCell($w, $h, $txt, $border, $align, $fill, $ln);
|
---|
102 | } else {
|
---|
103 | parent::MultiCell($w, $h, $txt, $border, $align, $fill, $ln);
|
---|
104 | }
|
---|
105 | }
|
---|
106 |
|
---|
107 | function SJISMultiCell($w, $h, $txt, $border = 0, $align = 'L', $fill = 0, $ln = 2) {
|
---|
108 | //Output text with automatic or explicit line breaks
|
---|
109 | $cw =& $this->CurrentFont['cw'];
|
---|
110 | if ($w == 0) {
|
---|
111 | $w = $this->w - $this->rMargin - $this->x;
|
---|
112 | }
|
---|
113 | $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
---|
114 | $s = str_replace("\r", '', $txt);
|
---|
115 | $nb = strlen($s);
|
---|
116 | if ($nb > 0 && $s[$nb - 1] == "\n") {
|
---|
117 | $nb--;
|
---|
118 | }
|
---|
119 | $b = 0;
|
---|
120 | if ($border) {
|
---|
121 | if ($border == 1) {
|
---|
122 | $border = 'LTRB';
|
---|
123 | $b = 'LRT';
|
---|
124 | $b2 = 'LR';
|
---|
125 | }
|
---|
126 | else {
|
---|
127 | $b2 = '';
|
---|
128 | if(is_int(strpos($border, 'L')))
|
---|
129 | $b2 .= 'L';
|
---|
130 | if(is_int(strpos($border, 'R')))
|
---|
131 | $b2 .= 'R';
|
---|
132 | $b = is_int(strpos($border, 'T')) ? $b2.'T' : $b2;
|
---|
133 | }
|
---|
134 | }
|
---|
135 | $sep =- 1;
|
---|
136 | $i = 0;
|
---|
137 | $j = 0;
|
---|
138 | $l = 0;
|
---|
139 | $nl = 1;
|
---|
140 | $this->rise_h = 0; //³vZp
|
---|
141 |
|
---|
142 | while ($i < $nb) {
|
---|
143 | //Get next character
|
---|
144 | $c = $s{$i};
|
---|
145 | $o = ord($c);
|
---|
146 | if ($o == 10) {
|
---|
147 | //Explicit line break
|
---|
148 | $this->Cell($w, $h, substr($s, $j, $i - $j), $b, 2, $align, $fill);
|
---|
149 | $i++;
|
---|
150 | $sep = -1;
|
---|
151 | $j = $i;
|
---|
152 | $l = 0;
|
---|
153 | $nl++;
|
---|
154 | $this->rise_h += $h; //³vZp
|
---|
155 | if ($border && $nl == 2) {
|
---|
156 | $b=$b2;
|
---|
157 | }
|
---|
158 | continue;
|
---|
159 | }
|
---|
160 | if ($o < 128) {
|
---|
161 | //ASCII
|
---|
162 | $l += $cw[$c];
|
---|
163 | $n = 1;
|
---|
164 | if ($o == 32) {
|
---|
165 | $sep=$i;
|
---|
166 | }
|
---|
167 | }
|
---|
168 | elseif($o >= 161 && $o <= 223) {
|
---|
169 | //Half-width katakana
|
---|
170 | $l += 500;
|
---|
171 | $n = 1;
|
---|
172 | $sep = $i;
|
---|
173 | }
|
---|
174 | else {
|
---|
175 | //Full-width character
|
---|
176 | $l += 1000;
|
---|
177 | $n = 2;
|
---|
178 | $sep = $i;
|
---|
179 | }
|
---|
180 | if ($l > $wmax) {
|
---|
181 | //Automatic line break
|
---|
182 | if ($sep == -1 || $i == $j) {
|
---|
183 | if ($i == $j) {
|
---|
184 | $i += $n;
|
---|
185 | }
|
---|
186 | $this->Cell($w, $h, substr($s, $j, $i - $j), $b, 2, $align, $fill);
|
---|
187 | }
|
---|
188 | else {
|
---|
189 | $this->Cell($w, $h, substr($s, $j, $sep - $j), $b, 2, $align, $fill);
|
---|
190 | $i = ($s[$sep] == ' ') ? $sep + 1 : $sep;
|
---|
191 | }
|
---|
192 | $this->rise_h += $h; //³vZp
|
---|
193 | $sep = -1;
|
---|
194 | $j = $i;
|
---|
195 | $l = 0;
|
---|
196 | $nl++;
|
---|
197 | if ($border && $nl == 2) {
|
---|
198 | $b = $b2;
|
---|
199 | }
|
---|
200 | }
|
---|
201 | else {
|
---|
202 | $i += $n;
|
---|
203 | if ($o >= 128) {
|
---|
204 | $sep = $i;
|
---|
205 | }
|
---|
206 | }
|
---|
207 | }
|
---|
208 | //Last chunk
|
---|
209 | if ($border && is_int(strpos($border, 'B'))) {
|
---|
210 | $b .= 'B';
|
---|
211 | }
|
---|
212 | $this->Cell($w, $h, substr($s, $j, $i - $j), $b, $ln, $align, $fill);
|
---|
213 | $this->rise_h += $h; //ÁªÌ³ðvZ
|
---|
214 | //üsȵÝè©ÂA³ªKè̳ÈãÅ êÎY²ðÝèµÈ¨·B
|
---|
215 | if ($ln == 0 && $h < $this->rise_h) {
|
---|
216 | $this->y = $this->y - $this->rise_h + $h;
|
---|
217 | }
|
---|
218 |
|
---|
219 | //$this->x = $this->lMargin;
|
---|
220 | }
|
---|
221 |
|
---|
222 | function Write($h, $txt, $link = '') {
|
---|
223 | if ($this->CurrentFont['type'] == 'Type0') {
|
---|
224 | $this->SJISWrite($h, $txt, $link);
|
---|
225 | }
|
---|
226 | else {
|
---|
227 | parent::Write($h, $txt, $link);
|
---|
228 | }
|
---|
229 | }
|
---|
230 |
|
---|
231 | function SJISWrite($h, $txt, $link) {
|
---|
232 | //SJIS version of Write()
|
---|
233 | $cw =& $this->CurrentFont['cw'];
|
---|
234 | $w = $this->w - $this->rMargin - $this->x;
|
---|
235 | $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
---|
236 | $s = str_replace("\r", '', $txt);
|
---|
237 | $nb = strlen($s);
|
---|
238 | $sep = -1;
|
---|
239 | $i = 0;
|
---|
240 | $j = 0;
|
---|
241 | $l = 0;
|
---|
242 | $nl = 1;
|
---|
243 | while($i < $nb) {
|
---|
244 | //Get next character
|
---|
245 | $c = $s[$i];
|
---|
246 | $o = ord($c);
|
---|
247 | if ($o == 10) {
|
---|
248 | //Explicit line break
|
---|
249 | $this->Cell($w, $h, substr($s, $j, $i - $j), 0, 2, '', 0, $link);
|
---|
250 | $i++;
|
---|
251 | $sep = -1;
|
---|
252 | $j = $i;
|
---|
253 | $l = 0;
|
---|
254 | if ($nl == 1) {
|
---|
255 | //Go to left margin
|
---|
256 | $this->x = $this->lMargin;
|
---|
257 | $w = $this->w - $this->rMargin - $this->x;
|
---|
258 | $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
---|
259 | }
|
---|
260 | $nl++;
|
---|
261 | continue;
|
---|
262 | }
|
---|
263 | if ($o < 128) {
|
---|
264 | //ASCII
|
---|
265 | $l += $cw[$c];
|
---|
266 | $n = 1;
|
---|
267 | if ($o == 32) {
|
---|
268 | $sep = $i;
|
---|
269 | }
|
---|
270 | }
|
---|
271 | elseif($o >= 161 && $o <= 223) {
|
---|
272 | //Half-width katakana
|
---|
273 | $l += 500;
|
---|
274 | $n = 1;
|
---|
275 | $sep = $i;
|
---|
276 | }
|
---|
277 | else {
|
---|
278 | //Full-width character
|
---|
279 | $l += 1000;
|
---|
280 | $n = 2;
|
---|
281 | $sep = $i;
|
---|
282 | }
|
---|
283 | if ($l > $wmax) {
|
---|
284 | //Automatic line break
|
---|
285 | if ($sep == -1 || $i == $j) {
|
---|
286 | if ($this->x > $this->lMargin) {
|
---|
287 | //Move to next line
|
---|
288 | $this->x = $this->lMargin;
|
---|
289 | $this->y += $h;
|
---|
290 | $w = $this->w - $this->rMargin - $this->x;
|
---|
291 | $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
---|
292 | $i += $n;
|
---|
293 | $nl++;
|
---|
294 | continue;
|
---|
295 | }
|
---|
296 | if($i == $j)
|
---|
297 | $i += $n;
|
---|
298 | $this->Cell($w, $h, substr($s, $j, $i - $j), 0, 2, '', 0, $link);
|
---|
299 | }
|
---|
300 | else {
|
---|
301 | $this->Cell($w, $h, substr($s, $j, $sep - $j), 0, 2, '', 0, $link);
|
---|
302 | $i = ($s[$sep] == ' ') ? $sep + 1 : $sep;
|
---|
303 | }
|
---|
304 | $sep =- 1;
|
---|
305 | $j = $i;
|
---|
306 | $l = 0;
|
---|
307 | if ($nl == 1) {
|
---|
308 | $this->x = $this->lMargin;
|
---|
309 | $w = $this->w - $this->rMargin - $this->x;
|
---|
310 | $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
|
---|
311 | }
|
---|
312 | $nl++;
|
---|
313 | }
|
---|
314 | else {
|
---|
315 | $i += $n;
|
---|
316 | if ($o >= 128) {
|
---|
317 | $sep = $i;
|
---|
318 | }
|
---|
319 | }
|
---|
320 | }
|
---|
321 | //Last chunk
|
---|
322 | if ($i != $j) {
|
---|
323 | $this->Cell($l / 1000 * $this->FontSize, $h, substr($s, $j, $i - $j), 0, 0, '', 0, $link);
|
---|
324 | }
|
---|
325 | }
|
---|
326 |
|
---|
327 | function _putfonts() {
|
---|
328 | $nf = $this->n;
|
---|
329 | foreach ($this->diffs as $diff) {
|
---|
330 | //Encodings
|
---|
331 | $this->_newobj();
|
---|
332 | $this->_out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.']>>');
|
---|
333 | $this->_out('endobj');
|
---|
334 | }
|
---|
335 | $mqr = get_magic_quotes_runtime();
|
---|
336 | set_magic_quotes_runtime(0);
|
---|
337 | foreach ($this->FontFiles as $file => $info) {
|
---|
338 | //Font file embedding
|
---|
339 | $this->_newobj();
|
---|
340 | $this->FontFiles[$file]['n'] = $this->n;
|
---|
341 | if (defined('FPDF_FONTPATH')) {
|
---|
342 | $file = FPDF_FONTPATH . $file;
|
---|
343 | }
|
---|
344 | $size = filesize($file);
|
---|
345 | if (!$size) {
|
---|
346 | $this->Error('Font file not found');
|
---|
347 | }
|
---|
348 | $this->_out('<</Length '.$size);
|
---|
349 | if (substr($file, -2) == '.z') {
|
---|
350 | $this->_out('/Filter /FlateDecode');
|
---|
351 | }
|
---|
352 | $this->_out('/Length1 '.$info['length1']);
|
---|
353 | if (isset($info['length2'])) {
|
---|
354 | $this->_out('/Length2 '.$info['length2'].' /Length3 0');
|
---|
355 | }
|
---|
356 | $this->_out('>>');
|
---|
357 | $f = fopen($file, 'rb');
|
---|
358 | $this->_putstream(fread($f, $size));
|
---|
359 | fclose($f);
|
---|
360 | $this->_out('endobj');
|
---|
361 | }
|
---|
362 | set_magic_quotes_runtime($mqr);
|
---|
363 | foreach ($this->fonts as $k => $font) {
|
---|
364 | //Font objects
|
---|
365 | $this->_newobj();
|
---|
366 | $this->fonts[$k]['n'] = $this->n;
|
---|
367 | $this->_out('<</Type /Font');
|
---|
368 | if ($font['type'] == 'Type0') {
|
---|
369 | $this->_putType0($font);
|
---|
370 | } else {
|
---|
371 | $name = $font['name'];
|
---|
372 | $this->_out('/BaseFont /'.$name);
|
---|
373 | if ($font['type'] == 'core') {
|
---|
374 | //Standard font
|
---|
375 | $this->_out('/Subtype /Type1');
|
---|
376 | if ($name!='Symbol' && $name!='ZapfDingbats') {
|
---|
377 | $this->_out('/Encoding /WinAnsiEncoding');
|
---|
378 | }
|
---|
379 | }
|
---|
380 | else {
|
---|
381 | //Additional font
|
---|
382 | $this->_out('/Subtype /'.$font['type']);
|
---|
383 | $this->_out('/FirstChar 32');
|
---|
384 | $this->_out('/LastChar 255');
|
---|
385 | $this->_out('/Widths '.($this->n+1).' 0 R');
|
---|
386 | $this->_out('/FontDescriptor '.($this->n+2).' 0 R');
|
---|
387 | if ($font['enc']) {
|
---|
388 | if (isset($font['diff'])) {
|
---|
389 | $this->_out('/Encoding '.($nf+$font['diff']).' 0 R');
|
---|
390 | }
|
---|
391 | else {
|
---|
392 | $this->_out('/Encoding /WinAnsiEncoding');
|
---|
393 | }
|
---|
394 | }
|
---|
395 | }
|
---|
396 | $this->_out('>>');
|
---|
397 | $this->_out('endobj');
|
---|
398 | if ($font['type'] != 'core') {
|
---|
399 | //Widths
|
---|
400 | $this->_newobj();
|
---|
401 | $cw =& $font['cw'];
|
---|
402 | $s = '[';
|
---|
403 | for ($i = 32; $i <= 255 ; $i++) {
|
---|
404 | $s .= $cw[chr($i)] . ' ';
|
---|
405 | }
|
---|
406 | $this->_out($s . ']');
|
---|
407 | $this->_out('endobj');
|
---|
408 | //Descriptor
|
---|
409 | $this->_newobj();
|
---|
410 | $s = '<</Type /FontDescriptor /FontName /' . $name;
|
---|
411 | foreach ($font['desc'] as $k => $v) {
|
---|
412 | $s .= ' /' . $k . ' ' . $v;
|
---|
413 | }
|
---|
414 | $file = $font['file'];
|
---|
415 | if ($file) {
|
---|
416 | $s .= ' /FontFile' . ($font['type'] == 'Type1' ? '' : '2') . ' ' . $this->FontFiles[$file]['n'] . ' 0 R';
|
---|
417 | }
|
---|
418 | $this->_out($s . '>>');
|
---|
419 | $this->_out('endobj');
|
---|
420 | }
|
---|
421 | }
|
---|
422 | }
|
---|
423 | }
|
---|
424 |
|
---|
425 | function _putType0($font) {
|
---|
426 | //Type0
|
---|
427 | $this->_out('/Subtype /Type0');
|
---|
428 | $this->_out('/BaseFont /' . $font['name'] . '-' . $font['CMap']);
|
---|
429 | $this->_out('/Encoding /' . $font['CMap']);
|
---|
430 | $this->_out('/DescendantFonts [' . ($this->n + 1) . ' 0 R]');
|
---|
431 | $this->_out('>>');
|
---|
432 | $this->_out('endobj');
|
---|
433 | //CIDFont
|
---|
434 | $this->_newobj();
|
---|
435 | $this->_out('<</Type /Font');
|
---|
436 | $this->_out('/Subtype /CIDFontType0');
|
---|
437 | $this->_out('/BaseFont /' . $font['name']);
|
---|
438 | $this->_out('/CIDSystemInfo <</Registry (Adobe) /Ordering (' . $font['registry']['ordering'] . ') /Supplement ' . $font['registry']['supplement'] . '>>');
|
---|
439 | $this->_out('/FontDescriptor ' . ($this->n + 1) . ' 0 R');
|
---|
440 | $W = '/W [1 [';
|
---|
441 | foreach ($font['cw'] as $w) {
|
---|
442 | $W .= $w . ' ';
|
---|
443 | }
|
---|
444 | $this->_out($W . '] 231 325 500 631 [500] 326 389 500]');
|
---|
445 | $this->_out('>>');
|
---|
446 | $this->_out('endobj');
|
---|
447 | //Font descriptor
|
---|
448 | $this->_newobj();
|
---|
449 | $this->_out('<</Type /FontDescriptor');
|
---|
450 | $this->_out('/FontName /' . $font['name']);
|
---|
451 | $this->_out('/Flags 6');
|
---|
452 | $this->_out('/FontBBox [0 -200 1000 900]');
|
---|
453 | $this->_out('/ItalicAngle 0');
|
---|
454 | $this->_out('/Ascent 800');
|
---|
455 | $this->_out('/Descent -200');
|
---|
456 | $this->_out('/CapHeight 800');
|
---|
457 | $this->_out('/StemV 60');
|
---|
458 | $this->_out('>>');
|
---|
459 | $this->_out('endobj');
|
---|
460 | }
|
---|
461 |
|
---|
462 | //Load data
|
---|
463 | function LoadData($file) {
|
---|
464 | //Read file lines
|
---|
465 | $lines = file($file);
|
---|
466 | $data = array();
|
---|
467 | foreach ($lines as $line)
|
---|
468 | $data[] = explode(';', chop($line));
|
---|
469 | return $data;
|
---|
470 | }
|
---|
471 |
|
---|
472 | //Colored table
|
---|
473 | function FancyTable($header, $data, $w) {
|
---|
474 | //Colors, line width and bold font
|
---|
475 | $this->SetFillColor(216, 216, 216);
|
---|
476 | $this->SetTextColor(0);
|
---|
477 | $this->SetDrawColor(0, 0, 0);
|
---|
478 | $this->SetLineWidth(.3);
|
---|
479 | $this->SetFont('', 'B');
|
---|
480 | //Header
|
---|
481 | for ($i = 0; $i < count($header); $i++) {
|
---|
482 | $this->Cell($w[$i], 7, $header[$i], 1, 0, 'C', 1);
|
---|
483 | }
|
---|
484 | $this->Ln();
|
---|
485 | //Color and font restoration
|
---|
486 | $this->SetFillColor(235, 235, 235);
|
---|
487 | $this->SetTextColor(0);
|
---|
488 | $this->SetFont('');
|
---|
489 | //Data
|
---|
490 | $fill = 0;
|
---|
491 | foreach ($data as $row) {
|
---|
492 | $h = 4;
|
---|
493 | $i = 0;
|
---|
494 | $this->Cell(5, $h, '', 0, 0, '', 0, '');
|
---|
495 | foreach ($row as $col) {
|
---|
496 | if ($i > 3) {
|
---|
497 | $i = 0;
|
---|
498 | }
|
---|
499 | if ($i != 0) {
|
---|
500 | //$this->MultiCell($w[$i], $h, number_format($col), 1, 'R', $fill, 0);
|
---|
501 | $this->MultiCell($w[$i], $h, $col, 1, 'R', $fill, 0);
|
---|
502 | } else {
|
---|
503 | $this->MultiCell($w[$i], $h, $col, 1, 'L', $fill, 0);
|
---|
504 | }
|
---|
505 | $h = $this->rise_h;
|
---|
506 | $i++;
|
---|
507 | }
|
---|
508 | $this->Ln();
|
---|
509 | $fill =! $fill;
|
---|
510 |
|
---|
511 | }
|
---|
512 | $this->Cell(5, $h, '', 0, 0, '', 0, '');
|
---|
513 | $this->Cell(array_sum($w), 0, '', 'T');
|
---|
514 | }
|
---|
515 |
|
---|
516 | function Footer() {
|
---|
517 | //º[©ç1.5 cm ÉÚ®
|
---|
518 | $this->SetY(-15);
|
---|
519 | //tHgðÝèB Arial italic 8
|
---|
520 | $this->SetFont('Arial', 'I', 8);
|
---|
521 | //»ÝÌy[WÔÆy[WðoÍ
|
---|
522 | #$this->Cell(0, 10, ''.$this->PageNo().' / {nb}', 0, 0, 'C');
|
---|
523 | }
|
---|
524 |
|
---|
525 | } |
---|