Completed
Push — master ( f161aa...d0d50d )
by
unknown
15:24
created
includes/librairies/HTML2PDF/html2pdf.class.php 3 patches
Indentation   +6464 added lines, -6465 removed lines patch added patch discarded remove patch
@@ -11,485 +11,484 @@  discard block
 block discarded – undo
11 11
 
12 12
 if (!defined('__CLASS_HTML2PDF__')) {
13 13
 
14
-    define('__CLASS_HTML2PDF__', '4.03');
15
-    define('HTML2PDF_USED_TCPDF_VERSION', '5.0.002');
16
-
17
-    require_once(dirname(__FILE__).'/_class/exception.class.php');
18
-    require_once(dirname(__FILE__).'/_class/locale.class.php');
19
-    require_once(dirname(__FILE__).'/_class/myPdf.class.php');
20
-    require_once(dirname(__FILE__).'/_class/parsingHtml.class.php');
21
-    require_once(dirname(__FILE__).'/_class/parsingCss.class.php');
22
-
23
-    class HTML2PDF
24
-    {
25
-        /**
26
-         * HTML2PDF_myPdf object, extends from TCPDF
27
-         * @var HTML2PDF_myPdf
28
-         */
29
-        public $pdf = null;
30
-
31
-        /**
32
-         * CSS parsing
33
-         * @var HTML2PDF_parsingCss
34
-         */
35
-        public $parsingCss = null;
36
-
37
-        /**
38
-         * HTML parsing
39
-         * @var HTML2PDF_parsingHtml
40
-         */
41
-        public $parsingHtml = null;
42
-
43
-        protected $_langue           = 'fr';        // locale of the messages
44
-        protected $_orientation      = 'P';         // page orientation : Portrait ou Landscape
45
-        protected $_format           = 'A4';        // page format : A4, A3, ...
46
-        protected $_encoding         = '';          // charset encoding
47
-        protected $_unicode          = true;        // means that the input text is unicode (default = true)
48
-
49
-        protected $_testTdInOnepage  = true;        // test of TD that can not take more than one page
50
-        protected $_testIsImage      = true;        // test if the images exist or not
51
-        protected $_testIsDeprecated = false;       // test the deprecated functions
52
-
53
-        protected $_parsePos         = 0;           // position in the parsing
54
-        protected $_tempPos          = 0;           // temporary position for complex table
55
-        protected $_page             = 0;           // current page number
56
-
57
-        protected $_subHtml          = null;        // sub html
58
-        protected $_subPart          = false;       // sub HTML2PDF
59
-        protected $_subHEADER        = array();     // sub action to make the header
60
-        protected $_subFOOTER        = array();     // sub action to make the footer
61
-        protected $_subSTATES        = array();     // array to save some parameters
62
-
63
-        protected $_isSubPart        = false;       // flag : in a sub html2pdf
64
-        protected $_isInThead        = false;       // flag : in a thead
65
-        protected $_isInTfoot        = false;       // flag : in a tfoot
66
-        protected $_isInOverflow     = false;       // flag : in a overflow
67
-        protected $_isInFooter       = false;       // flag : in a footer
68
-        protected $_isInDraw         = null;        // flag : in a draw (svg)
69
-        protected $_isAfterFloat     = false;       // flag : is just after a float
70
-        protected $_isInForm         = false;       // flag : is in a float. false / action of the form
71
-        protected $_isInLink         = '';          // flag : is in a link. empty / href of the link
72
-        protected $_isInParagraph    = false;       // flag : is in a paragraph
73
-        protected $_isForOneLine     = false;       // flag : in a specific sub html2pdf to have the height of the next line
74
-
75
-        protected $_maxX             = 0;           // maximum X of the current zone
76
-        protected $_maxY             = 0;           // maximum Y of the current zone
77
-        protected $_maxE             = 0;           // number of elements in the current zone
78
-        protected $_maxH             = 0;           // maximum height of the line in the current zone
79
-        protected $_maxSave          = array();     // save the maximums of the current zone
80
-        protected $_currentH         = 0;           // height of the current line
81
-
82
-        protected $_defaultLeft      = 0;           // default marges of the page
83
-        protected $_defaultTop       = 0;
84
-        protected $_defaultRight     = 0;
85
-        protected $_defaultBottom    = 0;
86
-        protected $_defaultFont      = null;        // default font to use, is the asked font does not exist
87
-
88
-        protected $_margeLeft        = 0;           // current marges of the page
89
-        protected $_margeTop         = 0;
90
-        protected $_margeRight       = 0;
91
-        protected $_margeBottom      = 0;
92
-        protected $_marges           = array();     // save the different marges of the current page
93
-        protected $_pageMarges       = array();     // float marges of the current page
94
-        protected $_background       = array();     // background informations
95
-
96
-
97
-        protected $_firstPage        = true;        // flag : first page
98
-        protected $_defList          = array();     // table to save the stats of the tags UL and OL
99
-
100
-        protected $_lstAnchor        = array();     // list of the anchors
101
-        protected $_lstField         = array();     // list of the fields
102
-        protected $_lstSelect        = array();     // list of the options of the current select
103
-        protected $_previousCall     = null;        // last action called
104
-
105
-        protected $_debugActif       = false;       // flag : mode debug is active
106
-        protected $_debugOkUsage     = false;       // flag : the function memory_get_usage exist
107
-        protected $_debugOkPeak      = false;       // flag : the function memory_get_peak_usage exist
108
-        protected $_debugLevel       = 0;           // level in the debug
109
-        protected $_debugStartTime   = 0;           // debug start time
110
-        protected $_debugLastTime    = 0;           // debug stop time
111
-
112
-        static protected $_subobj    = null;        // object html2pdf prepared in order to accelerate the creation of sub html2pdf
113
-        static protected $_tables    = array();     // static table to prepare the nested html tables
114
-
115
-        /**
116
-         * class constructor
117
-         *
118
-         * @access public
119
-         * @param  string   $orientation page orientation, same as TCPDF
120
-         * @param  mixed    $format      The format used for pages, same as TCPDF
121
-         * @param  $tring   $langue      Langue : fr, en, it...
122
-         * @param  boolean  $unicode     TRUE means that the input text is unicode (default = true)
123
-         * @param  String   $encoding    charset encoding; default is UTF-8
124
-         * @param  array    $marges      Default marges (left, top, right, bottom)
125
-         * @return HTML2PDF $this
126
-         */
127
-        public function __construct($orientation = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8))
128
-        {
129
-            // init the page number
130
-            $this->_page         = 0;
131
-            $this->_firstPage    = true;
132
-
133
-            // save the parameters
134
-            $this->_orientation  = $orientation;
135
-            $this->_format       = $format;
136
-            $this->_langue       = strtolower($langue);
137
-            $this->_unicode      = $unicode;
138
-            $this->_encoding     = $encoding;
139
-
140
-            // load the Local
141
-            HTML2PDF_locale::load($this->_langue);
142
-
143
-            // create the  HTML2PDF_myPdf object
144
-            $this->pdf = new HTML2PDF_myPdf($orientation, 'mm', $format, $unicode, $encoding);
145
-
146
-            // init the CSS parsing object
147
-            $this->parsingCss = new HTML2PDF_parsingCss($this->pdf);
148
-            $this->parsingCss->fontSet();
149
-            $this->_defList = array();
150
-
151
-            // init some tests
152
-            $this->setTestTdInOnePage(true);
153
-            $this->setTestIsImage(true);
154
-            $this->setTestIsDeprecated(true);
155
-
156
-            // init the default font
157
-            $this->setDefaultFont(null);
158
-
159
-            // init the HTML parsing object
160
-            $this->parsingHtml = new HTML2PDF_parsingHtml($this->_encoding);
161
-            $this->_subHtml = null;
162
-            $this->_subPart = false;
163
-
164
-            // init the marges of the page
165
-            if (!is_array($marges)) $marges = array($marges, $marges, $marges, $marges);
166
-            $this->_setDefaultMargins($marges[0], $marges[1], $marges[2], $marges[3]);
167
-            $this->_setMargins();
168
-            $this->_marges = array();
169
-
170
-            // init the form's fields
171
-            $this->_lstField = array();
172
-
173
-            return $this;
174
-        }
175
-
176
-        /**
177
-         * Destructor
178
-         *
179
-         * @access public
180
-         * @return null
181
-         */
182
-        public function __destruct()
183
-        {
184
-
185
-        }
186
-
187
-        /**
188
-         * Clone to create a sub HTML2PDF from HTML2PDF::$_subobj
189
-         *
190
-         * @access public
191
-         */
192
-        public function __clone()
193
-        {
194
-            $this->pdf = clone $this->pdf;
195
-            $this->parsingHtml = clone $this->parsingHtml;
196
-            $this->parsingCss = clone $this->parsingCss;
197
-            $this->parsingCss->setPdfParent($this->pdf);
198
-        }
199
-
200
-        /**
201
-         * set the debug mode to On
202
-         *
203
-         * @access public
204
-         * @return HTML2PDF $this
205
-         */
206
-        public function setModeDebug()
207
-        {
208
-            $time = microtime(true);
209
-
210
-            $this->_debugActif     = true;
211
-            $this->_debugOkUsage   = function_exists('memory_get_usage');
212
-            $this->_debugOkPeak    = function_exists('memory_get_peak_usage');
213
-            $this->_debugStartTime = $time;
214
-            $this->_debugLastTime  = $time;
215
-
216
-            $this->_DEBUG_stepline('step', 'time', 'delta', 'memory', 'peak');
217
-            $this->_DEBUG_add('Init debug');
218
-
219
-            return $this;
220
-        }
221
-
222
-        /**
223
-         * Set the test of TD thdat can not take more than one page
224
-         *
225
-         * @access public
226
-         * @param  boolean  $mode
227
-         * @return HTML2PDF $this
228
-         */
229
-        public function setTestTdInOnePage($mode = true)
230
-        {
231
-            $this->_testTdInOnepage = $mode ? true : false;
232
-
233
-            return $this;
234
-        }
235
-
236
-        /**
237
-         * Set the test if the images exist or not
238
-         *
239
-         * @access public
240
-         * @param  boolean  $mode
241
-         * @return HTML2PDF $this
242
-         */
243
-        public function setTestIsImage($mode = true)
244
-        {
245
-            $this->_testIsImage = $mode ? true : false;
246
-
247
-            return $this;
248
-        }
249
-
250
-        /**
251
-         * Set the test on deprecated functions
252
-         *
253
-         * @access public
254
-         * @param  boolean  $mode
255
-         * @return HTML2PDF $this
256
-         */
257
-        public function setTestIsDeprecated($mode = true)
258
-        {
259
-            $this->_testIsDeprecated = $mode ? true : false;
260
-
261
-            return $this;
262
-        }
263
-
264
-        /**
265
-         * Set the default font to use, if no font is specify, or if the asked font does not exist
266
-         *
267
-         * @access public
268
-         * @param  string   $default name of the default font to use. If null : Arial is no font is specify, and error if the asked font does not exist
269
-         * @return HTML2PDF $this
270
-         */
271
-        public function setDefaultFont($default = null)
272
-        {
273
-            $this->_defaultFont = $default;
274
-            $this->parsingCss->setDefaultFont($default);
275
-
276
-            return $this;
277
-        }
278
-
279
-        /**
280
-         * add a font, see TCPDF function addFont
281
-         *
282
-         * @access public
283
-         * @param string $family Font family. The name can be chosen arbitrarily. If it is a standard family name, it will override the corresponding font.
284
-         * @param string $style Font style. Possible values are (case insensitive):<ul><li>empty string: regular (default)</li><li>B: bold</li><li>I: italic</li><li>BI or IB: bold italic</li></ul>
285
-         * @param string $fontfile The font definition file. By default, the name is built from the family and style, in lower case with no spaces.
286
-         * @return HTML2PDF $this
287
-         * @see TCPDF::addFont
288
-         */
289
-        public function addFont($family, $style='', $file='')
290
-        {
291
-            $this->pdf->AddFont($family, $style, $file);
292
-
293
-            return $this;
294
-        }
295
-
296
-        /**
297
-         * display a automatic index, from the bookmarks
298
-         *
299
-         * @access public
300
-         * @param  string  $titre         index title
301
-         * @param  int     $sizeTitle     font size of the index title, in mm
302
-         * @param  int     $sizeBookmark  font size of the index, in mm
303
-         * @param  boolean $bookmarkTitle add a bookmark for the index, at his beginning
304
-         * @param  boolean $displayPage   display the page numbers
305
-         * @param  int     $onPage        if null : at the end of the document on a new page, else on the $onPage page
306
-         * @param  string  $fontName      font name to use
307
-         * @return null
308
-         */
309
-        public function createIndex($titre = 'Index', $sizeTitle = 20, $sizeBookmark = 15, $bookmarkTitle = true, $displayPage = true, $onPage = null, $fontName = 'helvetica')
310
-        {
311
-            $oldPage = $this->_INDEX_NewPage($onPage);
312
-            $this->pdf->createIndex($this, $titre, $sizeTitle, $sizeBookmark, $bookmarkTitle, $displayPage, $onPage, $fontName);
313
-            if ($oldPage) $this->pdf->setPage($oldPage);
314
-        }
315
-
316
-        /**
317
-         * clean up the objects
318
-         *
319
-         * @access protected
320
-         */
321
-        protected function _cleanUp()
322
-        {
323
-            HTML2PDF::$_subobj = null;
324
-            HTML2PDF::$_tables = array();
325
-        }
326
-
327
-        /**
328
-         * Send the document to a given destination: string, local file or browser.
329
-         * Dest can be :
330
-         *  I : send the file inline to the browser (default). The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.
331
-         *  D : send to the browser and force a file download with the name given by name.
332
-         *  F : save to a local server file with the name given by name.
333
-         *  S : return the document as a string. name is ignored.
334
-         *  FI: equivalent to F + I option
335
-         *  FD: equivalent to F + D option
336
-         *  true  => I
337
-         *  false => S
338
-         *
339
-         * @param  string $name The name of the file when saved.
340
-         * @param  string $dest Destination where to send the document.
341
-         * @return string content of the PDF, if $dest=S
342
-         * @see TCPDF::close
343
-         * @access public
344
-
345
-         */
346
-        public function Output($name = '', $dest = false)
347
-        {
348
-            // close the pdf and clean up
349
-            $this->_cleanUp();
350
-
351
-            // if on debug mode
352
-            if ($this->_debugActif) {
353
-                $this->_DEBUG_add('Before output');
354
-                $this->pdf->Close();
355
-                exit;
356
-            }
357
-
358
-            // complete parameters
359
-            if ($dest===false) $dest = 'I';
360
-            if ($dest===true)  $dest = 'S';
361
-            if ($dest==='')    $dest = 'I';
362
-            if ($name=='')     $name='document.pdf';
363
-
364
-            // clean up the destination
365
-            $dest = strtoupper($dest);
366
-            if (!in_array($dest, array('I', 'D', 'F', 'S', 'FI','FD'))) $dest = 'I';
367
-
368
-            // the name must be a PDF name
369
-            if (strtolower(substr($name, -4))!='.pdf') {
370
-                throw new HTML2PDF_exception(0, 'The output document name "'.$name.'" is not a PDF name');
371
-            }
372
-
373
-            // call the output of TCPDF
374
-            return $this->pdf->Output($name, $dest);
375
-        }
376
-
377
-        /**
378
-         * convert HTML to PDF
379
-         *
380
-         * @access public
381
-         * @param  string   $html
382
-         * @param  boolean  $debugVue  enable the HTML debug vue
383
-         * @return null
384
-         */
385
-        public function writeHTML($html, $debugVue = false)
386
-        {
387
-            // if it is a real html page, we have to convert it
388
-            if (preg_match('/<body/isU', $html))
389
-                $html = $this->getHtmlFromPage($html);
390
-
391
-            $html = str_replace('[[date_y]]', date('Y'), $html);
392
-            $html = str_replace('[[date_m]]', date('m'), $html);
393
-            $html = str_replace('[[date_d]]', date('d'), $html);
394
-
395
-            $html = str_replace('[[date_h]]', date('H'), $html);
396
-            $html = str_replace('[[date_i]]', date('i'), $html);
397
-            $html = str_replace('[[date_s]]', date('s'), $html);
398
-
399
-            // If we are in HTML debug vue : display the HTML
400
-            if ($debugVue) {
401
-                return $this->_vueHTML($html);
402
-            }
403
-
404
-            // convert HTMl to PDF
405
-            $this->parsingCss->readStyle($html);
406
-            $this->parsingHtml->setHTML($html);
407
-            $this->parsingHtml->parse();
408
-            $this->_makeHTMLcode();
409
-        }
410
-
411
-        /**
412
-         * convert the HTML of a real page, to a code adapted to HTML2PDF
413
-         *
414
-         * @access public
415
-         * @param  string HTML of a real page
416
-         * @return string HTML adapted to HTML2PDF
417
-         */
418
-        public function getHtmlFromPage($html)
419
-        {
420
-            $html = str_replace('<BODY', '<body', $html);
421
-            $html = str_replace('</BODY', '</body', $html);
422
-
423
-            // extract the content
424
-            $res = explode('<body', $html);
425
-            if (count($res)<2) return $html;
426
-            $content = '<page'.$res[1];
427
-            $content = explode('</body', $content);
428
-            $content = $content[0].'</page>';
429
-
430
-            // extract the link tags
431
-            preg_match_all('/<link([^>]*)>/isU', $html, $match);
432
-            foreach ($match[0] as $src)
433
-                $content = $src.'</link>'.$content;
434
-
435
-            // extract the css style tags
436
-            preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
437
-            foreach ($match[0] as $src)
438
-                $content = $src.$content;
439
-
440
-            return $content;
441
-        }
442
-
443
-        /**
444
-         * init a sub HTML2PDF. does not use it directly. Only the method createSubHTML must use it
445
-         *
446
-         * @access public
447
-         * @param  string  $format
448
-         * @param  string  $orientation
449
-         * @param  array   $marge
450
-         * @param  integer $page
451
-         * @param  array   $defLIST
452
-         * @param  integer $myLastPageGroup
453
-         * @param  integer $myLastPageGroupNb
454
-         */
455
-        public function initSubHtml($format, $orientation, $marge, $page, $defLIST, $myLastPageGroup, $myLastPageGroupNb)
456
-        {
457
-            $this->_isSubPart = true;
458
-
459
-            $this->parsingCss->setOnlyLeft();
460
-
461
-            $this->_setNewPage($format, $orientation, null, null, ($myLastPageGroup!==null));
462
-
463
-            $this->_saveMargin(0, 0, $marge);
464
-            $this->_defList = $defLIST;
465
-
466
-            $this->_page = $page;
467
-            $this->pdf->setMyLastPageGroup($myLastPageGroup);
468
-            $this->pdf->setMyLastPageGroupNb($myLastPageGroupNb);
469
-            $this->pdf->setXY(0, 0);
470
-            $this->parsingCss->fontSet();
471
-        }
472
-
473
-        /**
474
-         * display the content in HTML moden for debug
475
-         *
476
-         * @access protected
477
-         * @param  string $contenu
478
-         */
479
-        protected function _vueHTML($content)
480
-        {
481
-            $content = preg_replace('/<page_header([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue01').' : $1<hr><div$1>', $content);
482
-            $content = preg_replace('/<page_footer([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue02').' : $1<hr><div$1>', $content);
483
-            $content = preg_replace('/<page([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue03').' : $1<hr><div$1>', $content);
484
-            $content = preg_replace('/<\/page([^>]*)>/isU', '</div><hr>', $content);
485
-            $content = preg_replace('/<bookmark([^>]*)>/isU', '<hr>bookmark : $1<hr>', $content);
486
-            $content = preg_replace('/<\/bookmark([^>]*)>/isU', '', $content);
487
-            $content = preg_replace('/<barcode([^>]*)>/isU', '<hr>barcode : $1<hr>', $content);
488
-            $content = preg_replace('/<\/barcode([^>]*)>/isU', '', $content);
489
-            $content = preg_replace('/<qrcode([^>]*)>/isU', '<hr>qrcode : $1<hr>', $content);
490
-            $content = preg_replace('/<\/qrcode([^>]*)>/isU', '', $content);
491
-
492
-            echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
14
+	define('__CLASS_HTML2PDF__', '4.03');
15
+	define('HTML2PDF_USED_TCPDF_VERSION', '5.0.002');
16
+
17
+	require_once(dirname(__FILE__).'/_class/exception.class.php');
18
+	require_once(dirname(__FILE__).'/_class/locale.class.php');
19
+	require_once(dirname(__FILE__).'/_class/myPdf.class.php');
20
+	require_once(dirname(__FILE__).'/_class/parsingHtml.class.php');
21
+	require_once(dirname(__FILE__).'/_class/parsingCss.class.php');
22
+
23
+	class HTML2PDF
24
+	{
25
+		/**
26
+		 * HTML2PDF_myPdf object, extends from TCPDF
27
+		 * @var HTML2PDF_myPdf
28
+		 */
29
+		public $pdf = null;
30
+
31
+		/**
32
+		 * CSS parsing
33
+		 * @var HTML2PDF_parsingCss
34
+		 */
35
+		public $parsingCss = null;
36
+
37
+		/**
38
+		 * HTML parsing
39
+		 * @var HTML2PDF_parsingHtml
40
+		 */
41
+		public $parsingHtml = null;
42
+
43
+		protected $_langue           = 'fr';        // locale of the messages
44
+		protected $_orientation      = 'P';         // page orientation : Portrait ou Landscape
45
+		protected $_format           = 'A4';        // page format : A4, A3, ...
46
+		protected $_encoding         = '';          // charset encoding
47
+		protected $_unicode          = true;        // means that the input text is unicode (default = true)
48
+
49
+		protected $_testTdInOnepage  = true;        // test of TD that can not take more than one page
50
+		protected $_testIsImage      = true;        // test if the images exist or not
51
+		protected $_testIsDeprecated = false;       // test the deprecated functions
52
+
53
+		protected $_parsePos         = 0;           // position in the parsing
54
+		protected $_tempPos          = 0;           // temporary position for complex table
55
+		protected $_page             = 0;           // current page number
56
+
57
+		protected $_subHtml          = null;        // sub html
58
+		protected $_subPart          = false;       // sub HTML2PDF
59
+		protected $_subHEADER        = array();     // sub action to make the header
60
+		protected $_subFOOTER        = array();     // sub action to make the footer
61
+		protected $_subSTATES        = array();     // array to save some parameters
62
+
63
+		protected $_isSubPart        = false;       // flag : in a sub html2pdf
64
+		protected $_isInThead        = false;       // flag : in a thead
65
+		protected $_isInTfoot        = false;       // flag : in a tfoot
66
+		protected $_isInOverflow     = false;       // flag : in a overflow
67
+		protected $_isInFooter       = false;       // flag : in a footer
68
+		protected $_isInDraw         = null;        // flag : in a draw (svg)
69
+		protected $_isAfterFloat     = false;       // flag : is just after a float
70
+		protected $_isInForm         = false;       // flag : is in a float. false / action of the form
71
+		protected $_isInLink         = '';          // flag : is in a link. empty / href of the link
72
+		protected $_isInParagraph    = false;       // flag : is in a paragraph
73
+		protected $_isForOneLine     = false;       // flag : in a specific sub html2pdf to have the height of the next line
74
+
75
+		protected $_maxX             = 0;           // maximum X of the current zone
76
+		protected $_maxY             = 0;           // maximum Y of the current zone
77
+		protected $_maxE             = 0;           // number of elements in the current zone
78
+		protected $_maxH             = 0;           // maximum height of the line in the current zone
79
+		protected $_maxSave          = array();     // save the maximums of the current zone
80
+		protected $_currentH         = 0;           // height of the current line
81
+
82
+		protected $_defaultLeft      = 0;           // default marges of the page
83
+		protected $_defaultTop       = 0;
84
+		protected $_defaultRight     = 0;
85
+		protected $_defaultBottom    = 0;
86
+		protected $_defaultFont      = null;        // default font to use, is the asked font does not exist
87
+
88
+		protected $_margeLeft        = 0;           // current marges of the page
89
+		protected $_margeTop         = 0;
90
+		protected $_margeRight       = 0;
91
+		protected $_margeBottom      = 0;
92
+		protected $_marges           = array();     // save the different marges of the current page
93
+		protected $_pageMarges       = array();     // float marges of the current page
94
+		protected $_background       = array();     // background informations
95
+
96
+
97
+		protected $_firstPage        = true;        // flag : first page
98
+		protected $_defList          = array();     // table to save the stats of the tags UL and OL
99
+
100
+		protected $_lstAnchor        = array();     // list of the anchors
101
+		protected $_lstField         = array();     // list of the fields
102
+		protected $_lstSelect        = array();     // list of the options of the current select
103
+		protected $_previousCall     = null;        // last action called
104
+
105
+		protected $_debugActif       = false;       // flag : mode debug is active
106
+		protected $_debugOkUsage     = false;       // flag : the function memory_get_usage exist
107
+		protected $_debugOkPeak      = false;       // flag : the function memory_get_peak_usage exist
108
+		protected $_debugLevel       = 0;           // level in the debug
109
+		protected $_debugStartTime   = 0;           // debug start time
110
+		protected $_debugLastTime    = 0;           // debug stop time
111
+
112
+		static protected $_subobj    = null;        // object html2pdf prepared in order to accelerate the creation of sub html2pdf
113
+		static protected $_tables    = array();     // static table to prepare the nested html tables
114
+
115
+		/**
116
+		 * class constructor
117
+		 *
118
+		 * @access public
119
+		 * @param  string   $orientation page orientation, same as TCPDF
120
+		 * @param  mixed    $format      The format used for pages, same as TCPDF
121
+		 * @param  $tring   $langue      Langue : fr, en, it...
122
+		 * @param  boolean  $unicode     TRUE means that the input text is unicode (default = true)
123
+		 * @param  String   $encoding    charset encoding; default is UTF-8
124
+		 * @param  array    $marges      Default marges (left, top, right, bottom)
125
+		 * @return HTML2PDF $this
126
+		 */
127
+		public function __construct($orientation = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8))
128
+		{
129
+			// init the page number
130
+			$this->_page         = 0;
131
+			$this->_firstPage    = true;
132
+
133
+			// save the parameters
134
+			$this->_orientation  = $orientation;
135
+			$this->_format       = $format;
136
+			$this->_langue       = strtolower($langue);
137
+			$this->_unicode      = $unicode;
138
+			$this->_encoding     = $encoding;
139
+
140
+			// load the Local
141
+			HTML2PDF_locale::load($this->_langue);
142
+
143
+			// create the  HTML2PDF_myPdf object
144
+			$this->pdf = new HTML2PDF_myPdf($orientation, 'mm', $format, $unicode, $encoding);
145
+
146
+			// init the CSS parsing object
147
+			$this->parsingCss = new HTML2PDF_parsingCss($this->pdf);
148
+			$this->parsingCss->fontSet();
149
+			$this->_defList = array();
150
+
151
+			// init some tests
152
+			$this->setTestTdInOnePage(true);
153
+			$this->setTestIsImage(true);
154
+			$this->setTestIsDeprecated(true);
155
+
156
+			// init the default font
157
+			$this->setDefaultFont(null);
158
+
159
+			// init the HTML parsing object
160
+			$this->parsingHtml = new HTML2PDF_parsingHtml($this->_encoding);
161
+			$this->_subHtml = null;
162
+			$this->_subPart = false;
163
+
164
+			// init the marges of the page
165
+			if (!is_array($marges)) $marges = array($marges, $marges, $marges, $marges);
166
+			$this->_setDefaultMargins($marges[0], $marges[1], $marges[2], $marges[3]);
167
+			$this->_setMargins();
168
+			$this->_marges = array();
169
+
170
+			// init the form's fields
171
+			$this->_lstField = array();
172
+
173
+			return $this;
174
+		}
175
+
176
+		/**
177
+		 * Destructor
178
+		 *
179
+		 * @access public
180
+		 * @return null
181
+		 */
182
+		public function __destruct()
183
+		{
184
+
185
+		}
186
+
187
+		/**
188
+		 * Clone to create a sub HTML2PDF from HTML2PDF::$_subobj
189
+		 *
190
+		 * @access public
191
+		 */
192
+		public function __clone()
193
+		{
194
+			$this->pdf = clone $this->pdf;
195
+			$this->parsingHtml = clone $this->parsingHtml;
196
+			$this->parsingCss = clone $this->parsingCss;
197
+			$this->parsingCss->setPdfParent($this->pdf);
198
+		}
199
+
200
+		/**
201
+		 * set the debug mode to On
202
+		 *
203
+		 * @access public
204
+		 * @return HTML2PDF $this
205
+		 */
206
+		public function setModeDebug()
207
+		{
208
+			$time = microtime(true);
209
+
210
+			$this->_debugActif     = true;
211
+			$this->_debugOkUsage   = function_exists('memory_get_usage');
212
+			$this->_debugOkPeak    = function_exists('memory_get_peak_usage');
213
+			$this->_debugStartTime = $time;
214
+			$this->_debugLastTime  = $time;
215
+
216
+			$this->_DEBUG_stepline('step', 'time', 'delta', 'memory', 'peak');
217
+			$this->_DEBUG_add('Init debug');
218
+
219
+			return $this;
220
+		}
221
+
222
+		/**
223
+		 * Set the test of TD thdat can not take more than one page
224
+		 *
225
+		 * @access public
226
+		 * @param  boolean  $mode
227
+		 * @return HTML2PDF $this
228
+		 */
229
+		public function setTestTdInOnePage($mode = true)
230
+		{
231
+			$this->_testTdInOnepage = $mode ? true : false;
232
+
233
+			return $this;
234
+		}
235
+
236
+		/**
237
+		 * Set the test if the images exist or not
238
+		 *
239
+		 * @access public
240
+		 * @param  boolean  $mode
241
+		 * @return HTML2PDF $this
242
+		 */
243
+		public function setTestIsImage($mode = true)
244
+		{
245
+			$this->_testIsImage = $mode ? true : false;
246
+
247
+			return $this;
248
+		}
249
+
250
+		/**
251
+		 * Set the test on deprecated functions
252
+		 *
253
+		 * @access public
254
+		 * @param  boolean  $mode
255
+		 * @return HTML2PDF $this
256
+		 */
257
+		public function setTestIsDeprecated($mode = true)
258
+		{
259
+			$this->_testIsDeprecated = $mode ? true : false;
260
+
261
+			return $this;
262
+		}
263
+
264
+		/**
265
+		 * Set the default font to use, if no font is specify, or if the asked font does not exist
266
+		 *
267
+		 * @access public
268
+		 * @param  string   $default name of the default font to use. If null : Arial is no font is specify, and error if the asked font does not exist
269
+		 * @return HTML2PDF $this
270
+		 */
271
+		public function setDefaultFont($default = null)
272
+		{
273
+			$this->_defaultFont = $default;
274
+			$this->parsingCss->setDefaultFont($default);
275
+
276
+			return $this;
277
+		}
278
+
279
+		/**
280
+		 * add a font, see TCPDF function addFont
281
+		 *
282
+		 * @access public
283
+		 * @param string $family Font family. The name can be chosen arbitrarily. If it is a standard family name, it will override the corresponding font.
284
+		 * @param string $style Font style. Possible values are (case insensitive):<ul><li>empty string: regular (default)</li><li>B: bold</li><li>I: italic</li><li>BI or IB: bold italic</li></ul>
285
+		 * @param string $fontfile The font definition file. By default, the name is built from the family and style, in lower case with no spaces.
286
+		 * @return HTML2PDF $this
287
+		 * @see TCPDF::addFont
288
+		 */
289
+		public function addFont($family, $style='', $file='')
290
+		{
291
+			$this->pdf->AddFont($family, $style, $file);
292
+
293
+			return $this;
294
+		}
295
+
296
+		/**
297
+		 * display a automatic index, from the bookmarks
298
+		 *
299
+		 * @access public
300
+		 * @param  string  $titre         index title
301
+		 * @param  int     $sizeTitle     font size of the index title, in mm
302
+		 * @param  int     $sizeBookmark  font size of the index, in mm
303
+		 * @param  boolean $bookmarkTitle add a bookmark for the index, at his beginning
304
+		 * @param  boolean $displayPage   display the page numbers
305
+		 * @param  int     $onPage        if null : at the end of the document on a new page, else on the $onPage page
306
+		 * @param  string  $fontName      font name to use
307
+		 * @return null
308
+		 */
309
+		public function createIndex($titre = 'Index', $sizeTitle = 20, $sizeBookmark = 15, $bookmarkTitle = true, $displayPage = true, $onPage = null, $fontName = 'helvetica')
310
+		{
311
+			$oldPage = $this->_INDEX_NewPage($onPage);
312
+			$this->pdf->createIndex($this, $titre, $sizeTitle, $sizeBookmark, $bookmarkTitle, $displayPage, $onPage, $fontName);
313
+			if ($oldPage) $this->pdf->setPage($oldPage);
314
+		}
315
+
316
+		/**
317
+		 * clean up the objects
318
+		 *
319
+		 * @access protected
320
+		 */
321
+		protected function _cleanUp()
322
+		{
323
+			HTML2PDF::$_subobj = null;
324
+			HTML2PDF::$_tables = array();
325
+		}
326
+
327
+		/**
328
+		 * Send the document to a given destination: string, local file or browser.
329
+		 * Dest can be :
330
+		 *  I : send the file inline to the browser (default). The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.
331
+		 *  D : send to the browser and force a file download with the name given by name.
332
+		 *  F : save to a local server file with the name given by name.
333
+		 *  S : return the document as a string. name is ignored.
334
+		 *  FI: equivalent to F + I option
335
+		 *  FD: equivalent to F + D option
336
+		 *  true  => I
337
+		 *  false => S
338
+		 *
339
+		 * @param  string $name The name of the file when saved.
340
+		 * @param  string $dest Destination where to send the document.
341
+		 * @return string content of the PDF, if $dest=S
342
+		 * @see TCPDF::close
343
+		 * @access public
344
+		 */
345
+		public function Output($name = '', $dest = false)
346
+		{
347
+			// close the pdf and clean up
348
+			$this->_cleanUp();
349
+
350
+			// if on debug mode
351
+			if ($this->_debugActif) {
352
+				$this->_DEBUG_add('Before output');
353
+				$this->pdf->Close();
354
+				exit;
355
+			}
356
+
357
+			// complete parameters
358
+			if ($dest===false) $dest = 'I';
359
+			if ($dest===true)  $dest = 'S';
360
+			if ($dest==='')    $dest = 'I';
361
+			if ($name=='')     $name='document.pdf';
362
+
363
+			// clean up the destination
364
+			$dest = strtoupper($dest);
365
+			if (!in_array($dest, array('I', 'D', 'F', 'S', 'FI','FD'))) $dest = 'I';
366
+
367
+			// the name must be a PDF name
368
+			if (strtolower(substr($name, -4))!='.pdf') {
369
+				throw new HTML2PDF_exception(0, 'The output document name "'.$name.'" is not a PDF name');
370
+			}
371
+
372
+			// call the output of TCPDF
373
+			return $this->pdf->Output($name, $dest);
374
+		}
375
+
376
+		/**
377
+		 * convert HTML to PDF
378
+		 *
379
+		 * @access public
380
+		 * @param  string   $html
381
+		 * @param  boolean  $debugVue  enable the HTML debug vue
382
+		 * @return null
383
+		 */
384
+		public function writeHTML($html, $debugVue = false)
385
+		{
386
+			// if it is a real html page, we have to convert it
387
+			if (preg_match('/<body/isU', $html))
388
+				$html = $this->getHtmlFromPage($html);
389
+
390
+			$html = str_replace('[[date_y]]', date('Y'), $html);
391
+			$html = str_replace('[[date_m]]', date('m'), $html);
392
+			$html = str_replace('[[date_d]]', date('d'), $html);
393
+
394
+			$html = str_replace('[[date_h]]', date('H'), $html);
395
+			$html = str_replace('[[date_i]]', date('i'), $html);
396
+			$html = str_replace('[[date_s]]', date('s'), $html);
397
+
398
+			// If we are in HTML debug vue : display the HTML
399
+			if ($debugVue) {
400
+				return $this->_vueHTML($html);
401
+			}
402
+
403
+			// convert HTMl to PDF
404
+			$this->parsingCss->readStyle($html);
405
+			$this->parsingHtml->setHTML($html);
406
+			$this->parsingHtml->parse();
407
+			$this->_makeHTMLcode();
408
+		}
409
+
410
+		/**
411
+		 * convert the HTML of a real page, to a code adapted to HTML2PDF
412
+		 *
413
+		 * @access public
414
+		 * @param  string HTML of a real page
415
+		 * @return string HTML adapted to HTML2PDF
416
+		 */
417
+		public function getHtmlFromPage($html)
418
+		{
419
+			$html = str_replace('<BODY', '<body', $html);
420
+			$html = str_replace('</BODY', '</body', $html);
421
+
422
+			// extract the content
423
+			$res = explode('<body', $html);
424
+			if (count($res)<2) return $html;
425
+			$content = '<page'.$res[1];
426
+			$content = explode('</body', $content);
427
+			$content = $content[0].'</page>';
428
+
429
+			// extract the link tags
430
+			preg_match_all('/<link([^>]*)>/isU', $html, $match);
431
+			foreach ($match[0] as $src)
432
+				$content = $src.'</link>'.$content;
433
+
434
+			// extract the css style tags
435
+			preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
436
+			foreach ($match[0] as $src)
437
+				$content = $src.$content;
438
+
439
+			return $content;
440
+		}
441
+
442
+		/**
443
+		 * init a sub HTML2PDF. does not use it directly. Only the method createSubHTML must use it
444
+		 *
445
+		 * @access public
446
+		 * @param  string  $format
447
+		 * @param  string  $orientation
448
+		 * @param  array   $marge
449
+		 * @param  integer $page
450
+		 * @param  array   $defLIST
451
+		 * @param  integer $myLastPageGroup
452
+		 * @param  integer $myLastPageGroupNb
453
+		 */
454
+		public function initSubHtml($format, $orientation, $marge, $page, $defLIST, $myLastPageGroup, $myLastPageGroupNb)
455
+		{
456
+			$this->_isSubPart = true;
457
+
458
+			$this->parsingCss->setOnlyLeft();
459
+
460
+			$this->_setNewPage($format, $orientation, null, null, ($myLastPageGroup!==null));
461
+
462
+			$this->_saveMargin(0, 0, $marge);
463
+			$this->_defList = $defLIST;
464
+
465
+			$this->_page = $page;
466
+			$this->pdf->setMyLastPageGroup($myLastPageGroup);
467
+			$this->pdf->setMyLastPageGroupNb($myLastPageGroupNb);
468
+			$this->pdf->setXY(0, 0);
469
+			$this->parsingCss->fontSet();
470
+		}
471
+
472
+		/**
473
+		 * display the content in HTML moden for debug
474
+		 *
475
+		 * @access protected
476
+		 * @param  string $contenu
477
+		 */
478
+		protected function _vueHTML($content)
479
+		{
480
+			$content = preg_replace('/<page_header([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue01').' : $1<hr><div$1>', $content);
481
+			$content = preg_replace('/<page_footer([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue02').' : $1<hr><div$1>', $content);
482
+			$content = preg_replace('/<page([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue03').' : $1<hr><div$1>', $content);
483
+			$content = preg_replace('/<\/page([^>]*)>/isU', '</div><hr>', $content);
484
+			$content = preg_replace('/<bookmark([^>]*)>/isU', '<hr>bookmark : $1<hr>', $content);
485
+			$content = preg_replace('/<\/bookmark([^>]*)>/isU', '', $content);
486
+			$content = preg_replace('/<barcode([^>]*)>/isU', '<hr>barcode : $1<hr>', $content);
487
+			$content = preg_replace('/<\/barcode([^>]*)>/isU', '', $content);
488
+			$content = preg_replace('/<qrcode([^>]*)>/isU', '<hr>qrcode : $1<hr>', $content);
489
+			$content = preg_replace('/<\/qrcode([^>]*)>/isU', '', $content);
490
+
491
+			echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
493 492
 <html>
494 493
     <head>
495 494
         <title>'.HTML2PDF_locale::get('vue04').' HTML</title>
@@ -499,5990 +498,5990 @@  discard block
 block discarded – undo
499 498
 '.$content.'
500 499
     </body>
501 500
 </html>';
502
-            exit;
503
-        }
504
-
505
-        /**
506
-         * set the default margins of the page
507
-         *
508
-         * @access protected
509
-         * @param  int $left   (mm, left margin)
510
-         * @param  int $top    (mm, top margin)
511
-         * @param  int $right  (mm, right margin, if null => left=right)
512
-         * @param  int $bottom (mm, bottom margin, if null => bottom=8mm)
513
-         */
514
-        protected function _setDefaultMargins($left, $top, $right = null, $bottom = null)
515
-        {
516
-            if ($right===null)  $right = $left;
517
-            if ($bottom===null) $bottom = 8;
518
-
519
-            $this->_defaultLeft   = $this->parsingCss->ConvertToMM($left.'mm');
520
-            $this->_defaultTop    = $this->parsingCss->ConvertToMM($top.'mm');
521
-            $this->_defaultRight  = $this->parsingCss->ConvertToMM($right.'mm');
522
-            $this->_defaultBottom = $this->parsingCss->ConvertToMM($bottom.'mm');
523
-        }
524
-
525
-        /**
526
-         * create a new page
527
-         *
528
-         * @access protected
529
-         * @param  mixed   $format
530
-         * @param  string  $orientation
531
-         * @param  array   $background background information
532
-         * @param  integer $curr real position in the html parseur (if break line in the write of a text)
533
-         * @param  boolean $resetPageNumber
534
-         */
535
-        protected function _setNewPage($format = null, $orientation = '', $background = null, $curr = null, $resetPageNumber=false)
536
-        {
537
-            $this->_firstPage = false;
538
-
539
-            $this->_format = $format ? $format : $this->_format;
540
-            $this->_orientation = $orientation ? $orientation : $this->_orientation;
541
-            $this->_background = $background!==null ? $background : $this->_background;
542
-            $this->_maxY = 0;
543
-            $this->_maxX = 0;
544
-            $this->_maxH = 0;
545
-            $this->_maxE = 0;
546
-
547
-            $this->pdf->SetMargins($this->_defaultLeft, $this->_defaultTop, $this->_defaultRight);
548
-
549
-            if ($resetPageNumber) {
550
-                $this->pdf->startPageGroup();
551
-            }
552
-
553
-            $this->pdf->AddPage($this->_orientation, $this->_format);
554
-
555
-            if ($resetPageNumber) {
556
-                $this->pdf->myStartPageGroup();
557
-            }
558
-
559
-            $this->_page++;
560
-
561
-            if (!$this->_subPart && !$this->_isSubPart) {
562
-                if (is_array($this->_background)) {
563
-                    if (isset($this->_background['color']) && $this->_background['color']) {
564
-                        $this->pdf->setFillColorArray($this->_background['color']);
565
-                        $this->pdf->Rect(0, 0, $this->pdf->getW(), $this->pdf->getH(), 'F');
566
-                    }
567
-
568
-                    if (isset($this->_background['img']) && $this->_background['img'])
569
-                        $this->pdf->Image($this->_background['img'], $this->_background['posX'], $this->_background['posY'], $this->_background['width']);
570
-                }
571
-
572
-                $this->_setPageHeader();
573
-                $this->_setPageFooter();
574
-            }
575
-
576
-            $this->_setMargins();
577
-            $this->pdf->setY($this->_margeTop);
578
-
579
-            $this->_setNewPositionForNewLine($curr);
580
-            $this->_maxH = 0;
581
-        }
582
-
583
-        /**
584
-         * set the real margin, using the default margins and the page margins
585
-         *
586
-         * @access protected
587
-         */
588
-        protected function _setMargins()
589
-        {
590
-            // prepare the margins
591
-            $this->_margeLeft   = $this->_defaultLeft   + (isset($this->_background['left'])   ? $this->_background['left']   : 0);
592
-            $this->_margeRight  = $this->_defaultRight  + (isset($this->_background['right'])  ? $this->_background['right']  : 0);
593
-            $this->_margeTop    = $this->_defaultTop    + (isset($this->_background['top'])    ? $this->_background['top']    : 0);
594
-            $this->_margeBottom = $this->_defaultBottom + (isset($this->_background['bottom']) ? $this->_background['bottom'] : 0);
595
-
596
-            // set the PDF margins
597
-            $this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
598
-            $this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
599
-
600
-            // set the float Margins
601
-            $this->_pageMarges = array();
602
-            if ($this->_isInParagraph!==false) {
603
-                $this->_pageMarges[floor($this->_margeTop*100)] = array($this->_isInParagraph[0], $this->pdf->getW()-$this->_isInParagraph[1]);
604
-            } else {
605
-                $this->_pageMarges[floor($this->_margeTop*100)] = array($this->_margeLeft, $this->pdf->getW()-$this->_margeRight);
606
-            }
607
-        }
608
-
609
-        /**
610
-         * add a debug step
611
-         *
612
-         * @access protected
613
-         * @param  string  $name step name
614
-         * @param  boolean $level (true=up, false=down, null=nothing to do)
615
-         * @return $this
616
-         */
617
-        protected function _DEBUG_add($name, $level=null)
618
-        {
619
-            // if true : UP
620
-            if ($level===true) $this->_debugLevel++;
621
-
622
-            $name   = str_repeat('  ', $this->_debugLevel). $name.($level===true ? ' Begin' : ($level===false ? ' End' : ''));
623
-            $time  = microtime(true);
624
-            $usage = ($this->_debugOkUsage ? memory_get_usage() : 0);
625
-            $peak  = ($this->_debugOkPeak ? memory_get_peak_usage() : 0);
626
-
627
-            $this->_DEBUG_stepline(
628
-                $name,
629
-                number_format(($time - $this->_debugStartTime)*1000, 1, '.', ' ').' ms',
630
-                number_format(($time - $this->_debugLastTime)*1000, 1, '.', ' ').' ms',
631
-                number_format($usage/1024, 1, '.', ' ').' Ko',
632
-                number_format($peak/1024, 1, '.', ' ').' Ko'
633
-            );
634
-
635
-            $this->_debugLastTime = $time;
636
-
637
-            // it false : DOWN
638
-            if ($level===false) $this->_debugLevel--;
639
-
640
-            return $this;
641
-        }
642
-
643
-        /**
644
-         * display a debug line
645
-         *
646
-         *
647
-         * @access protected
648
-         * @param  string $name
649
-         * @param  string $timeTotal
650
-         * @param  string $timeStep
651
-         * @param  string $memoryUsage
652
-         * @param  string $memoryPeak
653
-         */
654
-        protected function _DEBUG_stepline($name, $timeTotal, $timeStep, $memoryUsage, $memoryPeak)
655
-        {
656
-            $txt = str_pad($name, 30, ' ', STR_PAD_RIGHT).
657
-                    str_pad($timeTotal, 12, ' ', STR_PAD_LEFT).
658
-                    str_pad($timeStep, 12, ' ', STR_PAD_LEFT).
659
-                    str_pad($memoryUsage, 15, ' ', STR_PAD_LEFT).
660
-                    str_pad($memoryPeak, 15, ' ', STR_PAD_LEFT);
661
-
662
-            echo '<pre style="padding:0; margin:0">'.$txt.'</pre>';
663
-        }
664
-
665
-        /**
666
-         * get the Min and Max X, for Y (use the float margins)
667
-         *
668
-         * @access protected
669
-         * @param  float $y
670
-         * @return array(float, float)
671
-         */
672
-        protected function _getMargins($y)
673
-        {
674
-            $y = floor($y*100);
675
-            $x = array($this->pdf->getlMargin(), $this->pdf->getW()-$this->pdf->getrMargin());
676
-
677
-            foreach ($this->_pageMarges as $mY => $mX)
678
-                if ($mY<=$y) $x = $mX;
679
-
680
-            return $x;
681
-        }
682
-
683
-        /**
684
-         * Add margins, for a float
685
-         *
686
-         * @access protected
687
-         * @param  string $float (left / right)
688
-         * @param  float  $xLeft
689
-         * @param  float  $yTop
690
-         * @param  float  $xRight
691
-         * @param  float  $yBottom
692
-         */
693
-        protected function _addMargins($float, $xLeft, $yTop, $xRight, $yBottom)
694
-        {
695
-            // get the current float margins, for top and bottom
696
-            $oldTop    = $this->_getMargins($yTop);
697
-            $oldBottom = $this->_getMargins($yBottom);
698
-
699
-            // update the top float margin
700
-            if ($float=='left'  && $oldTop[0]<$xRight) $oldTop[0] = $xRight;
701
-            if ($float=='right' && $oldTop[1]>$xLeft)  $oldTop[1] = $xLeft;
702
-
703
-            $yTop = floor($yTop*100);
704
-            $yBottom = floor($yBottom*100);
705
-
706
-            // erase all the float margins that are smaller than the new one
707
-            foreach ($this->_pageMarges as $mY => $mX) {
708
-                if ($mY<$yTop) continue;
709
-                if ($mY>$yBottom) break;
710
-                if ($float=='left' && $this->_pageMarges[$mY][0]<$xRight)  unset($this->_pageMarges[$mY]);
711
-                if ($float=='right' && $this->_pageMarges[$mY][1]>$xLeft) unset($this->_pageMarges[$mY]);
712
-            }
713
-
714
-            // save the new Top and Bottom margins
715
-            $this->_pageMarges[$yTop] = $oldTop;
716
-            $this->_pageMarges[$yBottom] = $oldBottom;
717
-
718
-            // sort the margins
719
-            ksort($this->_pageMarges);
720
-
721
-            // we are just after float
722
-            $this->_isAfterFloat = true;
723
-        }
724
-
725
-        /**
726
-         * Save old margins (push), and set new ones
727
-         *
728
-         * @access protected
729
-         * @param  float  $ml left margin
730
-         * @param  float  $mt top margin
731
-         * @param  float  $mr right margin
732
-         */
733
-        protected function _saveMargin($ml, $mt, $mr)
734
-        {
735
-            // save old margins
736
-            $this->_marges[] = array('l' => $this->pdf->getlMargin(), 't' => $this->pdf->gettMargin(), 'r' => $this->pdf->getrMargin(), 'page' => $this->_pageMarges);
737
-
738
-            // set new ones
739
-            $this->pdf->SetMargins($ml, $mt, $mr);
740
-
741
-            // prepare for float margins
742
-            $this->_pageMarges = array();
743
-            $this->_pageMarges[floor($mt*100)] = array($ml, $this->pdf->getW()-$mr);
744
-        }
745
-
746
-        /**
747
-         * load the last saved margins (pop)
748
-         *
749
-         * @access protected
750
-         */
751
-        protected function _loadMargin()
752
-        {
753
-            $old = array_pop($this->_marges);
754
-            if ($old) {
755
-                $ml = $old['l'];
756
-                $mt = $old['t'];
757
-                $mr = $old['r'];
758
-                $mP = $old['page'];
759
-            } else {
760
-                $ml = $this->_margeLeft;
761
-                $mt = 0;
762
-                $mr = $this->_margeRight;
763
-                $mP = array($mt => array($ml, $this->pdf->getW()-$mr));
764
-            }
765
-
766
-            $this->pdf->SetMargins($ml, $mt, $mr);
767
-            $this->_pageMarges = $mP;
768
-        }
769
-
770
-        /**
771
-         * save the current maxs (push)
772
-         *
773
-         * @access protected
774
-         */
775
-        protected function _saveMax()
776
-        {
777
-            $this->_maxSave[] = array($this->_maxX, $this->_maxY, $this->_maxH, $this->_maxE);
778
-        }
779
-
780
-        /**
781
-         * load the last saved current maxs (pop)
782
-         *
783
-         * @access protected
784
-         */
785
-        protected function _loadMax()
786
-        {
787
-            $old = array_pop($this->_maxSave);
788
-
789
-            if ($old) {
790
-                $this->_maxX = $old[0];
791
-                $this->_maxY = $old[1];
792
-                $this->_maxH = $old[2];
793
-                $this->_maxE = $old[3];
794
-            } else {
795
-                $this->_maxX = 0;
796
-                $this->_maxY = 0;
797
-                $this->_maxH = 0;
798
-                $this->_maxE = 0;
799
-            }
800
-        }
801
-
802
-        /**
803
-         * draw the PDF header with the HTML in page_header
804
-         *
805
-         * @access protected
806
-         */
807
-        protected function _setPageHeader()
808
-        {
809
-            if (!count($this->_subHEADER)) return false;
810
-
811
-            $oldParsePos = $this->_parsePos;
812
-            $oldParseCode = $this->parsingHtml->code;
813
-
814
-            $this->_parsePos = 0;
815
-            $this->parsingHtml->code = $this->_subHEADER;
816
-            $this->_makeHTMLcode();
817
-
818
-            $this->_parsePos = $oldParsePos;
819
-            $this->parsingHtml->code = $oldParseCode;
820
-        }
821
-
822
-        /**
823
-         * draw the PDF footer with the HTML in page_footer
824
-         *
825
-         * @access protected
826
-         */
827
-        protected function _setPageFooter()
828
-        {
829
-            if (!count($this->_subFOOTER)) return false;
830
-
831
-            $oldParsePos = $this->_parsePos;
832
-            $oldParseCode = $this->parsingHtml->code;
833
-
834
-            $this->_parsePos = 0;
835
-            $this->parsingHtml->code = $this->_subFOOTER;
836
-            $this->_isInFooter = true;
837
-            $this->_makeHTMLcode();
838
-            $this->_isInFooter = false;
839
-
840
-            $this->_parsePos = $oldParsePos;
841
-            $this->parsingHtml->code = $oldParseCode;
842
-        }
843
-
844
-        /**
845
-         * new line, with a specific height
846
-         *
847
-         * @access protected
848
-         * @param float   $h
849
-         * @param integer $curr real current position in the text, if new line in the write of a text
850
-         */
851
-        protected function _setNewLine($h, $curr = null)
852
-        {
853
-            $this->pdf->Ln($h);
854
-            $this->_setNewPositionForNewLine($curr);
855
-        }
856
-
857
-        /**
858
-         * calculate the start position of the next line,  depending on the text-align
859
-         *
860
-         * @access protected
861
-         * @param  integer $curr real current position in the text, if new line in the write of a text
862
-         */
863
-        protected function _setNewPositionForNewLine($curr = null)
864
-        {
865
-            // get the margins for the current line
866
-            list($lx, $rx) = $this->_getMargins($this->pdf->getY());
867
-            $this->pdf->setX($lx);
868
-            $wMax = $rx-$lx;
869
-            $this->_currentH = 0;
870
-
871
-            // if subPart => return because align left
872
-            if ($this->_subPart || $this->_isSubPart || $this->_isForOneLine) {
873
-                $this->pdf->setWordSpacing(0);
874
-                return null;
875
-            }
876
-
877
-            // create the sub object
878
-            $sub = null;
879
-            $this->_createSubHTML($sub);
880
-            $sub->_saveMargin(0, 0, $sub->pdf->getW()-$wMax);
881
-            $sub->_isForOneLine = true;
882
-            $sub->_parsePos = $this->_parsePos;
883
-            $sub->parsingHtml->code = $this->parsingHtml->code;
884
-
885
-            // if $curr => adapt the current position of the parsing
886
-            if ($curr!==null && $sub->parsingHtml->code[$this->_parsePos]['name']=='write') {
887
-                $txt = $sub->parsingHtml->code[$this->_parsePos]['param']['txt'];
888
-                $txt = str_replace('[[page_cu]]', $sub->pdf->getMyNumPage($this->_page), $txt);
889
-                $sub->parsingHtml->code[$this->_parsePos]['param']['txt'] = substr($txt, $curr+1);
890
-            } else
891
-                $sub->_parsePos++;
892
-
893
-            // for each element of the parsing => load the action
894
-            $res = null;
895
-            for ($sub->_parsePos; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
896
-                $action = $sub->parsingHtml->code[$sub->_parsePos];
897
-                $res = $sub->_executeAction($action);
898
-                if (!$res) break;
899
-            }
900
-
901
-            $w = $sub->_maxX; // max width
902
-            $h = $sub->_maxH; // max height
903
-            $e = ($res===null ? $sub->_maxE : 0); // maxnumber of elemets on the line
904
-
905
-            // destroy the sub HTML
906
-            $this->_destroySubHTML($sub);
907
-
908
-            // adapt the start of the line, depending on the text-align
909
-            if ($this->parsingCss->value['text-align']=='center')
910
-                $this->pdf->setX(($rx+$this->pdf->getX()-$w)*0.5-0.01);
911
-            else if ($this->parsingCss->value['text-align']=='right')
912
-                $this->pdf->setX($rx-$w-0.01);
913
-            else
914
-                $this->pdf->setX($lx);
915
-
916
-            // set the height of the line
917
-            $this->_currentH = $h;
918
-
919
-            // if justify => set the word spacing
920
-            if ($this->parsingCss->value['text-align']=='justify' && $e>1) {
921
-                $this->pdf->setWordSpacing(($wMax-$w)/($e-1));
922
-            } else {
923
-                $this->pdf->setWordSpacing(0);
924
-            }
925
-        }
926
-
927
-        /**
928
-         * prepare HTML2PDF::$_subobj (used for create the sub HTML2PDF objects
929
-         *
930
-         * @access protected
931
-         */
932
-        protected function _prepareSubObj()
933
-        {
934
-            $pdf = null;
935
-
936
-            // create the sub object
937
-            HTML2PDF::$_subobj = new HTML2PDF(
938
-                                        $this->_orientation,
939
-                                        $this->_format,
940
-                                        $this->_langue,
941
-                                        $this->_unicode,
942
-                                        $this->_encoding,
943
-                                        array($this->_defaultLeft,$this->_defaultTop,$this->_defaultRight,$this->_defaultBottom)
944
-                                    );
945
-
946
-            // init
947
-            HTML2PDF::$_subobj->setTestTdInOnePage($this->_testTdInOnepage);
948
-            HTML2PDF::$_subobj->setTestIsImage($this->_testIsImage);
949
-            HTML2PDF::$_subobj->setTestIsDeprecated($this->_testIsDeprecated);
950
-            HTML2PDF::$_subobj->setDefaultFont($this->_defaultFont);
951
-            HTML2PDF::$_subobj->parsingCss->css            = &$this->parsingCss->css;
952
-            HTML2PDF::$_subobj->parsingCss->cssKeys        = &$this->parsingCss->cssKeys;
953
-
954
-            // clone font from the original PDF
955
-            HTML2PDF::$_subobj->pdf->cloneFontFrom($this->pdf);
956
-
957
-            // remove the link to the parent
958
-            HTML2PDF::$_subobj->parsingCss->setPdfParent($pdf);
959
-        }
960
-
961
-        /**
962
-         * create a sub HTML2PDF, to calculate the multi-tables
963
-         *
964
-         * @access protected
965
-         * @param  &HTML2PDF $subHtml sub HTML2PDF to create
966
-         * @param  integer   $cellmargin if in a TD : cellmargin of this td
967
-         */
968
-        protected function _createSubHTML(&$subHtml, $cellmargin=0)
969
-        {
970
-            // prepare the subObject, if never prepare before
971
-            if (HTML2PDF::$_subobj===null) {
972
-                $this->_prepareSubObj();
973
-            }
974
-
975
-            // calculate the width to use
976
-            if ($this->parsingCss->value['width']) {
977
-                $marge = $cellmargin*2;
978
-                $marge+= $this->parsingCss->value['padding']['l'] + $this->parsingCss->value['padding']['r'];
979
-                $marge+= $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['border']['r']['width'];
980
-                $marge = $this->pdf->getW() - $this->parsingCss->value['width'] + $marge;
981
-            } else {
982
-                $marge = $this->_margeLeft+$this->_margeRight;
983
-            }
984
-
985
-            // BUGFIX : we have to call the method, because of a bug in php 5.1.6
986
-            HTML2PDF::$_subobj->pdf->getPage();
987
-
988
-            // clone the sub oject
989
-            $subHtml = clone HTML2PDF::$_subobj;
990
-            $subHtml->parsingCss->table = $this->parsingCss->table;
991
-            $subHtml->parsingCss->value = $this->parsingCss->value;
992
-            $subHtml->initSubHtml(
993
-                $this->_format,
994
-                $this->_orientation,
995
-                $marge,
996
-                $this->_page,
997
-                $this->_defList,
998
-                $this->pdf->getMyLastPageGroup(),
999
-                $this->pdf->getMyLastPageGroupNb()
1000
-            );
1001
-        }
1002
-
1003
-        /**
1004
-         * destroy a subHTML2PDF
1005
-         *
1006
-         * @access protected
1007
-         */
1008
-        protected function _destroySubHTML(&$subHtml)
1009
-        {
1010
-            unset($subHtml);
1011
-            $subHtml = null;
1012
-        }
1013
-
1014
-        /**
1015
-         * Convert a arabic number in roman number
1016
-         *
1017
-         * @access protected
1018
-         * @param  integer $nbArabic
1019
-         * @return string  $nbRoman
1020
-         */
1021
-        protected function _listeArab2Rom($nbArabic)
1022
-        {
1023
-            $nbBaseTen    = array('I','X','C','M');
1024
-            $nbBaseFive    = array('V','L','D');
1025
-            $nbRoman    = '';
1026
-
1027
-            if ($nbArabic<1)    return $nbArabic;
1028
-            if ($nbArabic>3999) return $nbArabic;
1029
-
1030
-            for ($i=3; $i>=0 ; $i--) {
1031
-                $chiffre=floor($nbArabic/pow(10, $i));
1032
-                if ($chiffre>=1) {
1033
-                    $nbArabic=$nbArabic-$chiffre*pow(10, $i);
1034
-                    if ($chiffre<=3) {
1035
-                        for ($j=$chiffre; $j>=1; $j--) {
1036
-                            $nbRoman=$nbRoman.$nbBaseTen[$i];
1037
-                        }
1038
-                    } else if ($chiffre==9) {
1039
-                        $nbRoman=$nbRoman.$nbBaseTen[$i].$nbBaseTen[$i+1];
1040
-                    } else if ($chiffre==4) {
1041
-                    $nbRoman=$nbRoman.$nbBaseTen[$i].$nbBaseFive[$i];
1042
-                    } else {
1043
-                        $nbRoman=$nbRoman.$nbBaseFive[$i];
1044
-                        for ($j=$chiffre-5; $j>=1; $j--) {
1045
-                            $nbRoman=$nbRoman.$nbBaseTen[$i];
1046
-                        }
1047
-                    }
1048
-                }
1049
-            }
1050
-            return $nbRoman;
1051
-        }
1052
-
1053
-        /**
1054
-         * add a LI to the current level
1055
-         *
1056
-         * @access protected
1057
-         */
1058
-        protected function _listeAddLi()
1059
-        {
1060
-            $this->_defList[count($this->_defList)-1]['nb']++;
1061
-        }
1062
-
1063
-        /**
1064
-         * get the width to use for the column of the list
1065
-         *
1066
-         * @access protected
1067
-         * @return string $width
1068
-         */
1069
-        protected function _listeGetWidth()
1070
-        {
1071
-            return '7mm';
1072
-        }
1073
-
1074
-        /**
1075
-         * get the padding to use for the column of the list
1076
-         *
1077
-         * @access protected
1078
-         * @return string $padding
1079
-         */
1080
-        protected function _listeGetPadding()
1081
-        {
1082
-            return '1mm';
1083
-        }
1084
-
1085
-        /**
1086
-         * get the information of the li on the current level
1087
-         *
1088
-         * @access protected
1089
-         * @return array(fontName, small size, string)
1090
-         */
1091
-        protected function _listeGetLi()
1092
-        {
1093
-            $im = $this->_defList[count($this->_defList)-1]['img'];
1094
-            $st = $this->_defList[count($this->_defList)-1]['style'];
1095
-            $nb = $this->_defList[count($this->_defList)-1]['nb'];
1096
-            $up = (substr($st, 0, 6)=='upper-');
1097
-
1098
-            if ($im) return array(false, false, $im);
1099
-
1100
-            switch($st)
1101
-            {
1102
-                case 'none':
1103
-                    return array('helvetica', true, ' ');
1104
-
1105
-                case 'upper-alpha':
1106
-                case 'lower-alpha':
1107
-                    $str = '';
1108
-                    while ($nb>26) {
1109
-                        $str = chr(96+$nb%26).$str;
1110
-                        $nb = floor($nb/26);
1111
-                    }
1112
-                    $str = chr(96+$nb).$str;
1113
-
1114
-                    return array('helvetica', false, ($up ? strtoupper($str) : $str).'.');
1115
-
1116
-                case 'upper-roman':
1117
-                case 'lower-roman':
1118
-                    $str = $this->_listeArab2Rom($nb);
1119
-
1120
-                    return array('helvetica', false, ($up ? strtoupper($str) : $str).'.');
1121
-
1122
-                case 'decimal':
1123
-                    return array('helvetica', false, $nb.'.');
1124
-
1125
-                case 'square':
1126
-                    return array('zapfdingbats', true, chr(110));
1127
-
1128
-                case 'circle':
1129
-                    return array('zapfdingbats', true, chr(109));
1130
-
1131
-                case 'disc':
1132
-                default:
1133
-                    return array('zapfdingbats', true, chr(108));
1134
-            }
1135
-        }
1136
-
1137
-        /**
1138
-         * add a level to the list
1139
-         *
1140
-         * @access protected
1141
-         * @param  string $type  : ul, ol
1142
-         * @param  string $style : lower-alpha, ...
1143
-         * @param  string $img
1144
-         */
1145
-        protected function _listeAddLevel($type = 'ul', $style = '', $img = null)
1146
-        {
1147
-            // get the url of the image, if we want to use a image
1148
-            if ($img) {
1149
-                if (preg_match('/^url\(([^)]+)\)$/isU', trim($img), $match)) {
1150
-                    $img = $match[1];
1151
-                } else {
1152
-                    $img = null;
1153
-                }
1154
-            } else {
1155
-                $img = null;
1156
-            }
1157
-
1158
-            // prepare the datas
1159
-            if (!in_array($type, array('ul', 'ol'))) $type = 'ul';
1160
-            if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) $style = '';
1161
-
1162
-            if (!$style) {
1163
-                if ($type=='ul')    $style = 'disc';
1164
-                else                $style = 'decimal';
1165
-            }
1166
-
1167
-            // add the new level
1168
-            $this->_defList[count($this->_defList)] = array('style' => $style, 'nb' => 0, 'img' => $img);
1169
-        }
1170
-
1171
-        /**
1172
-         * remove a level to the list
1173
-         *
1174
-         * @access protected
1175
-         */
1176
-        protected function _listeDelLevel()
1177
-        {
1178
-            if (count($this->_defList)) {
1179
-                unset($this->_defList[count($this->_defList)-1]);
1180
-                $this->_defList = array_values($this->_defList);
1181
-            }
1182
-        }
1183
-
1184
-        /**
1185
-         * execute the actions to convert the html
1186
-         *
1187
-         * @access protected
1188
-         */
1189
-        protected function _makeHTMLcode()
1190
-        {
1191
-            // foreach elements of the parsing
1192
-            for ($this->_parsePos=0; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
1193
-
1194
-                // get the action to do
1195
-                $action = $this->parsingHtml->code[$this->_parsePos];
1196
-
1197
-                // if it is a opening of table / ul / ol
1198
-                if (in_array($action['name'], array('table', 'ul', 'ol')) && !$action['close']) {
1199
-
1200
-                    //  we will work as a sub HTML to calculate the size of the element
1201
-                    $this->_subPart = true;
1202
-
1203
-                    // get the name of the opening tag
1204
-                    $tagOpen = $action['name'];
1205
-
1206
-                    // save the actual pos on the parsing
1207
-                    $this->_tempPos = $this->_parsePos;
1208
-
1209
-                    // foreach elements, while we are in the opened tag
1210
-                    while (isset($this->parsingHtml->code[$this->_tempPos]) && !($this->parsingHtml->code[$this->_tempPos]['name']==$tagOpen && $this->parsingHtml->code[$this->_tempPos]['close'])) {
1211
-                        // make the action
1212
-                        $this->_executeAction($this->parsingHtml->code[$this->_tempPos]);
1213
-                        $this->_tempPos++;
1214
-                    }
1215
-
1216
-                    // execute the closure of the tag
1217
-                    if (isset($this->parsingHtml->code[$this->_tempPos])) {
1218
-                        $this->_executeAction($this->parsingHtml->code[$this->_tempPos]);
1219
-                    }
1220
-
1221
-                    // end of the sub part
1222
-                    $this->_subPart = false;
1223
-                }
1224
-
1225
-                // execute the action
1226
-                $this->_executeAction($action);
1227
-            }
1228
-        }
1229
-
1230
-        /**
1231
-         * execute the action from the parsing
1232
-         *
1233
-         * @access protected
1234
-         * @param  array $action
1235
-         */
1236
-        protected function _executeAction($action)
1237
-        {
1238
-            // name of the action
1239
-            $fnc = ($action['close'] ? '_tag_close_' : '_tag_open_').strtoupper($action['name']);
1240
-
1241
-            // parameters of the action
1242
-            $param = $action['param'];
1243
-
1244
-            // if it the first action of the first page, and if it is not a open tag of PAGE => create the new page
1245
-            if ($fnc!='_tag_open_PAGE' && $this->_firstPage) {
1246
-                $this->_setNewPage();
1247
-            }
1248
-
1249
-            // the action must exist
1250
-            if (!is_callable(array(&$this, $fnc))) {
1251
-                throw new HTML2PDF_exception(1, strtoupper($action['name']), $this->parsingHtml->getHtmlErrorCode($action['html_pos']));
1252
-            }
1253
-
1254
-            // lauch the action
1255
-            $res = $this->{$fnc}($param);
1256
-
1257
-            // save the name of the action
1258
-            $this->_previousCall = $fnc;
1259
-
1260
-            // return the result
1261
-            return $res;
1262
-        }
1263
-
1264
-        /**
1265
-         * get the position of the element on the current line, depending on his height
1266
-         *
1267
-         * @access protected
1268
-         * @param  float $h
1269
-         * @return float
1270
-         */
1271
-        protected function _getElementY($h)
1272
-        {
1273
-            if ($this->_subPart || $this->_isSubPart || !$this->_currentH || $this->_currentH<$h)
1274
-                return 0;
1275
-
1276
-            return ($this->_currentH-$h)*0.8;
1277
-        }
1278
-
1279
-        /**
1280
-         * make a break line
1281
-         *
1282
-         * @access protected
1283
-         * @param  float $h current line height
1284
-         * @param  integer $curr real current position in the text, if new line in the write of a text
1285
-         */
1286
-        protected function _makeBreakLine($h, $curr = null)
1287
-        {
1288
-            if ($h) {
1289
-                if (($this->pdf->getY()+$h<$this->pdf->getH() - $this->pdf->getbMargin()) || $this->_isInOverflow || $this->_isInFooter)
1290
-                    $this->_setNewLine($h, $curr);
1291
-                else
1292
-                    $this->_setNewPage(null, '', null, $curr);
1293
-            } else {
1294
-                $this->_setNewPositionForNewLine($curr);
1295
-            }
1296
-
1297
-            $this->_maxH = 0;
1298
-            $this->_maxE = 0;
1299
-        }
1300
-
1301
-        /**
1302
-         * display a image
1303
-         *
1304
-         * @access protected
1305
-         * @param  string $src
1306
-         * @param  boolean $subLi if true=image of a list
1307
-         * @return boolean depending on "isForOneLine"
1308
-         */
1309
-        protected function _drawImage($src, $subLi=false)
1310
-        {
1311
-            // get the size of the image
1312
-            // WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
1313
-            $infos=@getimagesize($src);
1314
-
1315
-            // if the image does not exist, or can not be loaded
1316
-            if (count($infos)<2) {
1317
-                // if the test is activ => exception
1318
-                if ($this->_testIsImage) {
1319
-                    throw new HTML2PDF_exception(6, $src);
1320
-                }
1321
-
1322
-                // else, display a gray rectangle
1323
-                $src = null;
1324
-                $infos = array(16, 16);
1325
-            }
1326
-
1327
-            // convert the size of the image in the unit of the PDF
1328
-            $imageWidth = $infos[0]/$this->pdf->getK();
1329
-            $imageHeight = $infos[1]/$this->pdf->getK();
1330
-
1331
-            // calculate the size from the css style
1332
-            if ($this->parsingCss->value['width'] && $this->parsingCss->value['height']) {
1333
-                $w = $this->parsingCss->value['width'];
1334
-                $h = $this->parsingCss->value['height'];
1335
-            } else if ($this->parsingCss->value['width']) {
1336
-                $w = $this->parsingCss->value['width'];
1337
-                $h = $imageHeight*$w/$imageWidth;
1338
-            } else if ($this->parsingCss->value['height']) {
1339
-                $h = $this->parsingCss->value['height'];
1340
-                $w = $imageWidth*$h/$imageHeight;
1341
-            } else {
1342
-                // convert px to pt
1343
-                $w = 72./96.*$imageWidth;
1344
-                $h = 72./96.*$imageHeight;
1345
-            }
1346
-
1347
-            // are we in a float
1348
-            $float = $this->parsingCss->getFloat();
1349
-
1350
-            // if we are in a float, but if something else if on the line => Break Line
1351
-            if ($float && $this->_maxH) {
1352
-                // make the break line (false if we are in "_isForOneLine" mode)
1353
-                if (!$this->_tag_open_BR(array())) {
1354
-                    return false;
1355
-                }
1356
-            }
1357
-
1358
-            // position of the image
1359
-            $x = $this->pdf->getX();
1360
-            $y = $this->pdf->getY();
1361
-
1362
-            // if the image can not be put on the current line => new line
1363
-            if (!$float && ($x + $w>$this->pdf->getW() - $this->pdf->getrMargin()) && $this->_maxH) {
1364
-                if ($this->_isForOneLine) {
1365
-                    return false;
1366
-                }
1367
-
1368
-                // set the new line
1369
-                $hnl = max($this->_maxH, $this->parsingCss->getLineHeight());
1370
-                $this->_setNewLine($hnl);
1371
-
1372
-                // get the new position
1373
-                $x = $this->pdf->getX();
1374
-                $y = $this->pdf->getY();
1375
-            }
1376
-
1377
-            // if the image can not be put on the current page
1378
-            if (($y + $h>$this->pdf->getH() - $this->pdf->getbMargin()) && !$this->_isInOverflow) {
1379
-                // new page
1380
-                $this->_setNewPage();
1381
-
1382
-                // get the new position
1383
-                $x = $this->pdf->getX();
1384
-                $y = $this->pdf->getY();
1385
-            }
1386
-
1387
-            // correction for display the image of a list
1388
-            $hT = 0.80*$this->parsingCss->value['font-size'];
1389
-            if ($subLi && $h<$hT) {
1390
-                $y+=($hT-$h);
1391
-            }
1392
-
1393
-            // add the margin top
1394
-            $yc = $y-$this->parsingCss->value['margin']['t'];
1395
-
1396
-            // get the width and the position of the parent
1397
-            $old = $this->parsingCss->getOldValues();
1398
-            if ( $old['width']) {
1399
-                $parentWidth = $old['width'];
1400
-                $parentX = $x;
1401
-            } else {
1402
-                $parentWidth = $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
1403
-                $parentX = $this->pdf->getlMargin();
1404
-            }
1405
-
1406
-            // if we are in a gloat => adapt the parent position and width
1407
-            if ($float) {
1408
-                list($lx, $rx) = $this->_getMargins($yc);
1409
-                $parentX = $lx;
1410
-                $parentWidth = $rx-$lx;
1411
-            }
1412
-
1413
-            // calculate the position of the image, if align to the right
1414
-            if ($parentWidth>$w && $float!='left') {
1415
-                if ($float=='right' || $this->parsingCss->value['text-align']=='li_right')    $x = $parentX + $parentWidth - $w-$this->parsingCss->value['margin']['r']-$this->parsingCss->value['margin']['l'];
1416
-            }
1417
-
1418
-            // display the image
1419
-            if (!$this->_subPart && !$this->_isSubPart) {
1420
-                if ($src) {
1421
-                    $this->pdf->Image($src, $x, $y, $w, $h, '', $this->_isInLink);
1422
-                } else {
1423
-                    // rectangle if the image can not be loaded
1424
-                    $this->pdf->setFillColorArray(array(240, 220, 220));
1425
-                    $this->pdf->Rect($x, $y, $w, $h, 'F');
1426
-                }
1427
-            }
1428
-
1429
-            // apply the margins
1430
-            $x-= $this->parsingCss->value['margin']['l'];
1431
-            $y-= $this->parsingCss->value['margin']['t'];
1432
-            $w+= $this->parsingCss->value['margin']['l'] + $this->parsingCss->value['margin']['r'];
1433
-            $h+= $this->parsingCss->value['margin']['t'] + $this->parsingCss->value['margin']['b'];
1434
-
1435
-            if ($float=='left') {
1436
-                // save the current max
1437
-                $this->_maxX = max($this->_maxX, $x+$w);
1438
-                $this->_maxY = max($this->_maxY, $y+$h);
1439
-
1440
-                // add the image to the margins
1441
-                $this->_addMargins($float, $x, $y, $x+$w, $y+$h);
1442
-
1443
-                // get the new position
1444
-                list($lx, $rx) = $this->_getMargins($yc);
1445
-                $this->pdf->setXY($lx, $yc);
1446
-            } else if ($float=='right') {
1447
-                // save the current max. We don't save the X because it is not the real max of the line
1448
-                $this->_maxY = max($this->_maxY, $y+$h);
1449
-
1450
-                // add the image to the margins
1451
-                $this->_addMargins($float, $x, $y, $x+$w, $y+$h);
1452
-
1453
-                // get the new position
1454
-                list($lx, $rx) = $this->_getMargins($yc);
1455
-                $this->pdf->setXY($lx, $yc);
1456
-            } else {
1457
-                // set the new position at the end of the image
1458
-                $this->pdf->setX($x+$w);
1459
-
1460
-                // save the current max
1461
-                $this->_maxX = max($this->_maxX, $x+$w);
1462
-                $this->_maxY = max($this->_maxY, $y+$h);
1463
-                $this->_maxH = max($this->_maxH, $h);
1464
-            }
1465
-
1466
-            return true;
1467
-        }
1468
-
1469
-        /**
1470
-         * draw a rectangle
1471
-         *
1472
-         * @access protected
1473
-         * @param  float $x
1474
-         * @param  float $y
1475
-         * @param  float $w
1476
-         * @param  float $h
1477
-         * @param  array $border
1478
-         * @param  float $padding - internal marge of the rectanble => not used, but...
1479
-         * @param  float $margin  - external marge of the rectanble
1480
-         * @param  array $background
1481
-         * @return boolean
1482
-         */
1483
-        protected function _drawRectangle($x, $y, $w, $h, $border, $padding, $margin, $background)
1484
-        {
1485
-            // if we are in a subpart or if height is null => return false
1486
-            if ($this->_subPart || $this->_isSubPart || $h===null) return false;
1487
-
1488
-            // add the margin
1489
-            $x+= $margin;
1490
-            $y+= $margin;
1491
-            $w-= $margin*2;
1492
-            $h-= $margin*2;
1493
-
1494
-            // get the radius of the border
1495
-            $outTL = $border['radius']['tl'];
1496
-            $outTR = $border['radius']['tr'];
1497
-            $outBR = $border['radius']['br'];
1498
-            $outBL = $border['radius']['bl'];
1499
-
1500
-            // prepare the out radius
1501
-            $outTL = ($outTL[0] && $outTL[1]) ? $outTL : null;
1502
-            $outTR = ($outTR[0] && $outTR[1]) ? $outTR : null;
1503
-            $outBR = ($outBR[0] && $outBR[1]) ? $outBR : null;
1504
-            $outBL = ($outBL[0] && $outBL[1]) ? $outBL : null;
1505
-
1506
-            // prepare the in radius
1507
-            $inTL = $outTL;
1508
-            $inTR = $outTR;
1509
-            $inBR = $outBR;
1510
-            $inBL = $outBL;
1511
-
1512
-            if (is_array($inTL)) {
1513
-                $inTL[0]-= $border['l']['width'];
1514
-                $inTL[1]-= $border['t']['width'];
1515
-            }
1516
-            if (is_array($inTR)) {
1517
-                $inTR[0]-= $border['r']['width'];
1518
-                $inTR[1]-= $border['t']['width'];
1519
-            }
1520
-            if (is_array($inBR)) {
1521
-                $inBR[0]-= $border['r']['width'];
1522
-                $inBR[1]-= $border['b']['width'];
1523
-            }
1524
-            if (is_array($inBL)) {
1525
-                $inBL[0]-= $border['l']['width'];
1526
-                $inBL[1]-= $border['b']['width'];
1527
-            }
1528
-
1529
-            if ($inTL[0]<=0 || $inTL[1]<=0) $inTL = null;
1530
-            if ($inTR[0]<=0 || $inTR[1]<=0) $inTR = null;
1531
-            if ($inBR[0]<=0 || $inBR[1]<=0) $inBR = null;
1532
-            if ($inBL[0]<=0 || $inBL[1]<=0) $inBL = null;
1533
-
1534
-            // prepare the background color
1535
-            $pdfStyle = '';
1536
-            if ($background['color']) {
1537
-                $this->pdf->setFillColorArray($background['color']);
1538
-                $pdfStyle.= 'F';
1539
-            }
1540
-
1541
-            // if we have a background to fill => fill it with a path (because of the radius)
1542
-            if ($pdfStyle) {
1543
-                $this->pdf->clippingPathStart($x, $y, $w, $h, $outTL, $outTR, $outBL, $outBR);
1544
-                $this->pdf->Rect($x, $y, $w, $h, $pdfStyle);
1545
-                $this->pdf->clippingPathStop();
1546
-            }
1547
-
1548
-            // prepare the background image
1549
-            if ($background['image']) {
1550
-                $iName      = $background['image'];
1551
-                $iPosition  = $background['position']!==null ? $background['position'] : array(0, 0);
1552
-                $iRepeat    = $background['repeat']!==null   ? $background['repeat']   : array(true, true);
1553
-
1554
-                // size of the background without the borders
1555
-                $bX = $x;
1556
-                $bY = $y;
1557
-                $bW = $w;
1558
-                $bH = $h;
1559
-
1560
-                if ($border['b']['width']) {
1561
-                    $bH-= $border['b']['width'];
1562
-                }
1563
-                if ($border['l']['width']) {
1564
-                    $bW-= $border['l']['width'];
1565
-                    $bX+= $border['l']['width'];
1566
-                }
1567
-                if ($border['t']['width']) {
1568
-                    $bH-= $border['t']['width'];
1569
-                    $bY+= $border['t']['width'];
1570
-                }
1571
-                if ($border['r']['width']) {
1572
-                    $bW-= $border['r']['width'];
1573
-                }
1574
-
1575
-                // get the size of the image
1576
-                // WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
1577
-                $imageInfos=@getimagesize($iName);
1578
-
1579
-                // if the image can not be loaded
1580
-                if (count($imageInfos)<2) {
1581
-                    if ($this->_testIsImage) {
1582
-                        throw new HTML2PDF_exception(6, $iName);
1583
-                    }
1584
-                } else {
1585
-                    // convert the size of the image from pixel to the unit of the PDF
1586
-                    $imageWidth    = 72./96.*$imageInfos[0]/$this->pdf->getK();
1587
-                    $imageHeight    = 72./96.*$imageInfos[1]/$this->pdf->getK();
1588
-
1589
-                    // prepare the position of the backgroung
1590
-                    if ($iRepeat[0]) $iPosition[0] = $bX;
1591
-                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[0], $match)) $iPosition[0] = $bX + $match[1]*($bW-$imageWidth)/100;
1592
-                    else $iPosition[0] = $bX+$iPosition[0];
1593
-
1594
-                    if ($iRepeat[1]) $iPosition[1] = $bY;
1595
-                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[1], $match)) $iPosition[1] = $bY + $match[1]*($bH-$imageHeight)/100;
1596
-                    else $iPosition[1] = $bY+$iPosition[1];
1597
-
1598
-                    $imageXmin = $bX;
1599
-                    $imageXmax = $bX+$bW;
1600
-                    $imageYmin = $bY;
1601
-                    $imageYmax = $bY+$bH;
1602
-
1603
-                    if (!$iRepeat[0] && !$iRepeat[1]) {
1604
-                        $imageXmin =     $iPosition[0]; $imageXmax =     $iPosition[0]+$imageWidth;
1605
-                        $imageYmin =     $iPosition[1]; $imageYmax =     $iPosition[1]+$imageHeight;
1606
-                    } else if ($iRepeat[0] && !$iRepeat[1]) {
1607
-                        $imageYmin =     $iPosition[1]; $imageYmax =     $iPosition[1]+$imageHeight;
1608
-                    } else if (!$iRepeat[0] && $iRepeat[1]) {
1609
-                        $imageXmin =     $iPosition[0]; $imageXmax =     $iPosition[0]+$imageWidth;
1610
-                    }
1611
-
1612
-                    // build the path to display the image (because of radius)
1613
-                    $this->pdf->clippingPathStart($bX, $bY, $bW, $bH, $inTL, $inTR, $inBL, $inBR);
1614
-
1615
-                    // repeat the image
1616
-                    for ($iY=$imageYmin; $iY<$imageYmax; $iY+=$imageHeight) {
1617
-                        for ($iX=$imageXmin; $iX<$imageXmax; $iX+=$imageWidth) {
1618
-                            $cX = null;
1619
-                            $cY = null;
1620
-                            $cW = $imageWidth;
1621
-                            $cH = $imageHeight;
1622
-                            if ($imageYmax-$iY<$imageHeight) {
1623
-                                $cX = $iX;
1624
-                                $cY = $iY;
1625
-                                $cH = $imageYmax-$iY;
1626
-                            }
1627
-                            if ($imageXmax-$iX<$imageWidth) {
1628
-                                $cX = $iX;
1629
-                                $cY = $iY;
1630
-                                $cW = $imageXmax-$iX;
1631
-                            }
1632
-
1633
-                            $this->pdf->Image($iName, $iX, $iY, $imageWidth, $imageHeight, '', '');
1634
-                        }
1635
-                    }
1636
-
1637
-                    // end of the path
1638
-                    $this->pdf->clippingPathStop();
1639
-                }
1640
-            }
1641
-
1642
-            // adding some loose (0.01mm)
1643
-            $loose = 0.01;
1644
-            $x-= $loose;
1645
-            $y-= $loose;
1646
-            $w+= 2.*$loose;
1647
-            $h+= 2.*$loose;
1648
-            if ($border['l']['width']) $border['l']['width']+= 2.*$loose;
1649
-            if ($border['t']['width']) $border['t']['width']+= 2.*$loose;
1650
-            if ($border['r']['width']) $border['r']['width']+= 2.*$loose;
1651
-            if ($border['b']['width']) $border['b']['width']+= 2.*$loose;
1652
-
1653
-            // prepare the test on borders
1654
-            $testBl = ($border['l']['width'] && $border['l']['color'][0]!==null);
1655
-            $testBt = ($border['t']['width'] && $border['t']['color'][0]!==null);
1656
-            $testBr = ($border['r']['width'] && $border['r']['color'][0]!==null);
1657
-            $testBb = ($border['b']['width'] && $border['b']['color'][0]!==null);
1658
-
1659
-            // draw the radius bottom-left
1660
-            if (is_array($outBL) && ($testBb || $testBl)) {
1661
-                if ($inBL) {
1662
-                    $courbe = array();
1663
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h;
1664
-                    $courbe[] = $x;                        $courbe[] = $y+$h-$outBL[1];
1665
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$border['b']['width'];
1666
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$h-$outBL[1];
1667
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$outBL[1];
1668
-                } else {
1669
-                    $courbe = array();
1670
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h;
1671
-                    $courbe[] = $x;                        $courbe[] = $y+$h-$outBL[1];
1672
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$h-$border['b']['width'];
1673
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$outBL[1];
1674
-                }
1675
-                $this->_drawCurve($courbe, $border['l']['color']);
1676
-            }
1677
-
1678
-            // draw the radius left-top
1679
-            if (is_array($outTL) && ($testBt || $testBl)) {
1680
-                if ($inTL) {
1681
-                    $courbe = array();
1682
-                    $courbe[] = $x;                        $courbe[] = $y+$outTL[1];
1683
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y;
1684
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$outTL[1];
1685
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y+$border['t']['width'];
1686
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y+$outTL[1];
1687
-                } else {
1688
-                    $courbe = array();
1689
-                    $courbe[] = $x;                        $courbe[] = $y+$outTL[1];
1690
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y;
1691
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$border['t']['width'];
1692
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y+$outTL[1];
1693
-                }
1694
-                $this->_drawCurve($courbe, $border['t']['color']);
1695
-            }
1696
-
1697
-            // draw the radius top-right
1698
-            if (is_array($outTR) && ($testBt || $testBr)) {
1699
-                if ($inTR) {
1700
-                    $courbe = array();
1701
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y;
1702
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$outTR[1];
1703
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$border['t']['width'];
1704
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$outTR[1];
1705
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$outTR[1];
1706
-                } else {
1707
-                    $courbe = array();
1708
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y;
1709
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$outTR[1];
1710
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$border['t']['width'];
1711
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$outTR[1];
1712
-                }
1713
-                $this->_drawCurve($courbe, $border['r']['color']);
1714
-            }
1715
-
1716
-            // draw the radius right-bottom
1717
-            if (is_array($outBR) && ($testBb || $testBr)) {
1718
-                if ($inBR) {
1719
-                    $courbe = array();
1720
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$h-$outBR[1];
1721
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h;
1722
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$h-$outBR[1];
1723
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$border['b']['width'];
1724
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$outBR[1];
1725
-                } else {
1726
-                    $courbe = array();
1727
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$h-$outBR[1];
1728
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h;
1729
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$h-$border['b']['width'];
1730
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$outBR[1];
1731
-                }
1732
-                $this->_drawCurve($courbe, $border['b']['color']);
1733
-            }
1734
-
1735
-            // draw the left border
1736
-            if ($testBl) {
1737
-                $pt = array();
1738
-                $pt[] = $x;                       $pt[] = $y+$h;
1739
-                $pt[] = $x;                       $pt[] = $y+$h-$border['b']['width'];
1740
-                $pt[] = $x;                       $pt[] = $y+$border['t']['width'];
1741
-                $pt[] = $x;                       $pt[] = $y;
1742
-                $pt[] = $x+$border['l']['width']; $pt[] = $y+$border['t']['width'];
1743
-                $pt[] = $x+$border['l']['width']; $pt[] = $y+$h-$border['b']['width'];
1744
-
1745
-                $bord = 3;
1746
-                if (is_array($outBL)) {
1747
-                    $bord-=1;
1748
-                    $pt[3] -= $outBL[1] - $border['b']['width'];
1749
-                    if ($inBL) $pt[11]-= $inBL[1];
1750
-                    unset($pt[0]);unset($pt[1]);
1751
-                }
1752
-                if (is_array($outTL)) {
1753
-                    $bord-=2;
1754
-                    $pt[5] += $outTL[1]-$border['t']['width'];
1755
-                    if ($inTL) $pt[9] += $inTL[1];
1756
-                    unset($pt[6]);unset($pt[7]);
1757
-                }
1758
-
1759
-                $pt = array_values($pt);
1760
-                $this->_drawLine($pt, $border['l']['color'], $border['l']['type'], $border['l']['width'], $bord);
1761
-            }
1762
-
1763
-            // draw the top border
1764
-            if ($testBt) {
1765
-                $pt = array();
1766
-                $pt[] = $x;                          $pt[] = $y;
1767
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y;
1768
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y;
1769
-                $pt[] = $x+$w;                       $pt[] = $y;
1770
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$border['t']['width'];
1771
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y+$border['t']['width'];
1772
-
1773
-                $bord = 3;
1774
-                if (is_array($outTL)) {
1775
-                    $bord-=1;
1776
-                    $pt[2] += $outTL[0] - $border['l']['width'];
1777
-                    if ($inTL) $pt[10]+= $inTL[0];
1778
-                    unset($pt[0]);unset($pt[1]);
1779
-                }
1780
-                if (is_array($outTR)) {
1781
-                    $bord-=2;
1782
-                    $pt[4] -= $outTR[0] - $border['r']['width'];
1783
-                    if ($inTR) $pt[8] -= $inTR[0];
1784
-                    unset($pt[6]);unset($pt[7]);
1785
-                }
1786
-
1787
-                $pt = array_values($pt);
1788
-                $this->_drawLine($pt, $border['t']['color'], $border['t']['type'], $border['t']['width'], $bord);
1789
-            }
1790
-
1791
-            // draw the right border
1792
-            if ($testBr) {
1793
-                $pt = array();
1794
-                $pt[] = $x+$w;                       $pt[] = $y;
1795
-                $pt[] = $x+$w;                       $pt[] = $y+$border['t']['width'];
1796
-                $pt[] = $x+$w;                       $pt[] = $y+$h-$border['b']['width'];
1797
-                $pt[] = $x+$w;                       $pt[] = $y+$h;
1798
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h-$border['b']['width'];
1799
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$border['t']['width'];
1800
-
1801
-                $bord = 3;
1802
-                if (is_array($outTR)) {
1803
-                    $bord-=1;
1804
-                    $pt[3] += $outTR[1] - $border['t']['width'];
1805
-                    if ($inTR) $pt[11]+= $inTR[1];
1806
-                    unset($pt[0]);unset($pt[1]);
1807
-                }
1808
-                if (is_array($outBR)) {
1809
-                    $bord-=2;
1810
-                    $pt[5] -= $outBR[1] - $border['b']['width'];
1811
-                    if ($inBR) $pt[9] -= $inBR[1];
1812
-                    unset($pt[6]);unset($pt[7]);
1813
-                }
1814
-
1815
-                $pt = array_values($pt);
1816
-                $this->_drawLine($pt, $border['r']['color'], $border['r']['type'], $border['r']['width'], $bord);
1817
-            }
1818
-
1819
-            // draw the bottom border
1820
-            if ($testBb) {
1821
-                $pt = array();
1822
-                $pt[] = $x+$w;                       $pt[] = $y+$h;
1823
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h;
1824
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y+$h;
1825
-                $pt[] = $x;                          $pt[] = $y+$h;
1826
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y+$h-$border['b']['width'];
1827
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h-$border['b']['width'];
1828
-
1829
-                $bord = 3;
1830
-                if (is_array($outBL)) {
1831
-                    $bord-=2;
1832
-                    $pt[4] += $outBL[0] - $border['l']['width'];
1833
-                    if ($inBL) $pt[8] += $inBL[0];
1834
-                    unset($pt[6]);unset($pt[7]);
1835
-                }
1836
-                if (is_array($outBR)) {
1837
-                    $bord-=1;
1838
-                    $pt[2] -= $outBR[0] - $border['r']['width'];
1839
-                    if ($inBR) $pt[10]-= $inBR[0];
1840
-                    unset($pt[0]);unset($pt[1]);
1841
-
1842
-                }
1843
-
1844
-                $pt = array_values($pt);
1845
-                $this->_drawLine($pt, $border['b']['color'], $border['b']['type'], $border['b']['width'], $bord);
1846
-            }
1847
-
1848
-            if ($background['color']) {
1849
-                $this->pdf->setFillColorArray($background['color']);
1850
-            }
1851
-
1852
-            return true;
1853
-        }
1854
-
1855
-        /**
1856
-         * draw a curve (for border radius)
1857
-         *
1858
-         * @access protected
1859
-         * @param  array $pt
1860
-         * @param  array $color
1861
-         */
1862
-        protected function _drawCurve($pt, $color)
1863
-        {
1864
-            $this->pdf->setFillColorArray($color);
1865
-
1866
-            if (count($pt)==10)
1867
-                $this->pdf->drawCurve($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
1868
-            else
1869
-                $this->pdf->drawCorner($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7]);
1870
-        }
1871
-
1872
-        /**
1873
-         * draw a ligne with a specific type, and specific start and end for radius
1874
-         *
1875
-         * @access protected
1876
-         * @param  array   $pt
1877
-         * @param  float   $color
1878
-         * @param  string  $type (dashed, dotted, double, solid)
1879
-         * @param  float   $width
1880
-         * @param  integer $radius (binary from 0 to 3 with 1=>start with a radius, 2=>end with a radius)
1881
-         */
1882
-        protected function _drawLine($pt, $color, $type, $width, $radius=3)
1883
-        {
1884
-            // set the fill color
1885
-            $this->pdf->setFillColorArray($color);
1886
-
1887
-            // if dashed or dotted
1888
-            if ($type=='dashed' || $type=='dotted') {
1889
-
1890
-                // clean the end of the line, if radius
1891
-                if ($radius==1) {
1892
-                    $tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1893
-                    $this->pdf->Polygon($tmp, 'F');
1894
-
1895
-                    $tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1896
-                    $pt = $tmp;
1897
-                } else if ($radius==2) {
1898
-                    $tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7];
1899
-                    $this->pdf->Polygon($tmp, 'F');
1900
-
1901
-                    $tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1902
-                    $pt = $tmp;
1903
-                } else if ($radius==3) {
1904
-                    $tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
1905
-                    $this->pdf->Polygon($tmp, 'F');
1906
-
1907
-                    $tmp = array(); $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1908
-                    $this->pdf->Polygon($tmp, 'F');
1909
-
1910
-                    $tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[8]; $tmp[]=$pt[9]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
1911
-                    $pt = $tmp;
1912
-                }
1913
-
1914
-                // horisontal or vertical line
1915
-                if ($pt[2]==$pt[0]) {
1916
-                    $l = abs(($pt[3]-$pt[1])*0.5);
1917
-                    $px = 0;
1918
-                    $py = $width;
1919
-                    $x1 = $pt[0]; $y1 = ($pt[3]+$pt[1])*0.5;
1920
-                    $x2 = $pt[6]; $y2 = ($pt[7]+$pt[5])*0.5;
1921
-                } else {
1922
-                    $l = abs(($pt[2]-$pt[0])*0.5);
1923
-                    $px = $width;
1924
-                    $py = 0;
1925
-                    $x1 = ($pt[2]+$pt[0])*0.5; $y1 = $pt[1];
1926
-                    $x2 = ($pt[6]+$pt[4])*0.5; $y2 = $pt[7];
1927
-                }
1928
-
1929
-                // if dashed : 3x bigger than dotted
1930
-                if ($type=='dashed') {
1931
-                    $px = $px*3.;
1932
-                    $py = $py*3.;
1933
-                }
1934
-                $mode = ($l/($px+$py)<.5);
1935
-
1936
-                // display the dotted/dashed line
1937
-                for ($i=0; $l-($px+$py)*($i-0.5)>0; $i++) {
1938
-                    if (($i%2)==$mode) {
1939
-                        $j = $i-0.5;
1940
-                        $lx1 = $px*($j);   if ($lx1<-$l) $lx1 =-$l;
1941
-                        $ly1 = $py*($j);   if ($ly1<-$l) $ly1 =-$l;
1942
-                        $lx2 = $px*($j+1); if ($lx2>$l)  $lx2 = $l;
1943
-                        $ly2 = $py*($j+1); if ($ly2>$l)  $ly2 = $l;
1944
-
1945
-                        $tmp = array();
1946
-                        $tmp[] = $x1+$lx1; $tmp[] = $y1+$ly1;
1947
-                        $tmp[] = $x1+$lx2; $tmp[] = $y1+$ly2;
1948
-                        $tmp[] = $x2+$lx2; $tmp[] = $y2+$ly2;
1949
-                        $tmp[] = $x2+$lx1; $tmp[] = $y2+$ly1;
1950
-                        $this->pdf->Polygon($tmp, 'F');
1951
-
1952
-                        if ($j>0) {
1953
-                            $tmp = array();
1954
-                            $tmp[] = $x1-$lx1; $tmp[] = $y1-$ly1;
1955
-                            $tmp[] = $x1-$lx2; $tmp[] = $y1-$ly2;
1956
-                            $tmp[] = $x2-$lx2; $tmp[] = $y2-$ly2;
1957
-                            $tmp[] = $x2-$lx1; $tmp[] = $y2-$ly1;
1958
-                            $this->pdf->Polygon($tmp, 'F');
1959
-                        }
1960
-                    }
1961
-                }
1962
-            } else if ($type=='double') {
1963
-
1964
-                // if double, 2 lines : 0=>1/3 and 2/3=>1
1965
-                $pt1 = $pt;
1966
-                $pt2 = $pt;
1967
-
1968
-                if (count($pt)==12) {
1969
-                    // line 1
1970
-                    $pt1[0] = ($pt[0]-$pt[10])*0.33 + $pt[10];
1971
-                    $pt1[1] = ($pt[1]-$pt[11])*0.33 + $pt[11];
1972
-                    $pt1[2] = ($pt[2]-$pt[10])*0.33 + $pt[10];
1973
-                    $pt1[3] = ($pt[3]-$pt[11])*0.33 + $pt[11];
1974
-                    $pt1[4] = ($pt[4]-$pt[8])*0.33 + $pt[8];
1975
-                    $pt1[5] = ($pt[5]-$pt[9])*0.33 + $pt[9];
1976
-                    $pt1[6] = ($pt[6]-$pt[8])*0.33 + $pt[8];
1977
-                    $pt1[7] = ($pt[7]-$pt[9])*0.33 + $pt[9];
1978
-                    $pt2[10]= ($pt[10]-$pt[0])*0.33 + $pt[0];
1979
-                    $pt2[11]= ($pt[11]-$pt[1])*0.33 + $pt[1];
1980
-
1981
-                    // line 2
1982
-                    $pt2[2] = ($pt[2] -$pt[0])*0.33 + $pt[0];
1983
-                    $pt2[3] = ($pt[3] -$pt[1])*0.33 + $pt[1];
1984
-                    $pt2[4] = ($pt[4] -$pt[6])*0.33 + $pt[6];
1985
-                    $pt2[5] = ($pt[5] -$pt[7])*0.33 + $pt[7];
1986
-                    $pt2[8] = ($pt[8] -$pt[6])*0.33 + $pt[6];
1987
-                    $pt2[9] = ($pt[9] -$pt[7])*0.33 + $pt[7];
1988
-                } else {
1989
-                    // line 1
1990
-                    $pt1[0] = ($pt[0]-$pt[6])*0.33 + $pt[6];
1991
-                    $pt1[1] = ($pt[1]-$pt[7])*0.33 + $pt[7];
1992
-                    $pt1[2] = ($pt[2]-$pt[4])*0.33 + $pt[4];
1993
-                    $pt1[3] = ($pt[3]-$pt[5])*0.33 + $pt[5];
1994
-
1995
-                    // line 2
1996
-                    $pt2[6] = ($pt[6]-$pt[0])*0.33 + $pt[0];
1997
-                    $pt2[7] = ($pt[7]-$pt[1])*0.33 + $pt[1];
1998
-                    $pt2[4] = ($pt[4]-$pt[2])*0.33 + $pt[2];
1999
-                    $pt2[5] = ($pt[5]-$pt[3])*0.33 + $pt[3];
2000
-                }
2001
-                $this->pdf->Polygon($pt1, 'F');
2002
-                $this->pdf->Polygon($pt2, 'F');
2003
-            } else if ($type=='solid') {
2004
-                // solid line : draw directly the polygon
2005
-                $this->pdf->Polygon($pt, 'F');
2006
-            }
2007
-        }
2008
-
2009
-        /**
2010
-         * prepare a transform matrix, only for drawing a SVG graphic
2011
-         *
2012
-         * @access protected
2013
-         * @param  string $transform
2014
-         * @return array  $matrix
2015
-         */
2016
-        protected function _prepareTransform($transform)
2017
-        {
2018
-            // it can not be  empty
2019
-            if (!$transform) return null;
2020
-
2021
-            // sctions must be like scale(...)
2022
-            if (!preg_match_all('/([a-z]+)\(([^\)]*)\)/isU', $transform, $match)) return null;
2023
-
2024
-            // prepare the list of the actions
2025
-            $actions = array();
2026
-
2027
-            // for actions
2028
-            for ($k=0; $k<count($match[0]); $k++) {
2029
-
2030
-                // get the name of the action
2031
-                $name = strtolower($match[1][$k]);
2032
-
2033
-                // get the parameters of the action
2034
-                $val = explode(',', trim($match[2][$k]));
2035
-                foreach ($val as $i => $j) {
2036
-                    $val[$i] = trim($j);
2037
-                }
2038
-
2039
-                // prepare the matrix, depending on the action
2040
-                switch($name)
2041
-                {
2042
-                    case 'scale':
2043
-                        if (!isset($val[0])) $val[0] = 1.;      else $val[0] = 1.*$val[0];
2044
-                        if (!isset($val[1])) $val[1] = $val[0]; else $val[1] = 1.*$val[1];
2045
-                        $actions[] = array($val[0],0,0,$val[1],0,0);
2046
-                        break;
2047
-
2048
-                    case 'translate':
2049
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $this->parsingCss->ConvertToMM($val[0], $this->_isInDraw['w']);
2050
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['h']);
2051
-                        $actions[] = array(1,0,0,1,$val[0],$val[1]);
2052
-                        break;
2053
-
2054
-                    case 'rotate':
2055
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2056
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['w']);
2057
-                        if (!isset($val[2])) $val[2] = 0.; else $val[2] = $this->parsingCss->ConvertToMM($val[2], $this->_isInDraw['h']);
2058
-                        if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,-$val[1],-$val[2]);
2059
-                        $actions[] = array(cos($val[0]),sin($val[0]),-sin($val[0]),cos($val[0]),0,0);
2060
-                        if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,$val[1],$val[2]);
2061
-                        break;
2062
-
2063
-                    case 'skewx':
2064
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2065
-                        $actions[] = array(1,0,tan($val[0]),1,0,0);
2066
-                        break;
2067
-
2068
-                    case 'skewy':
2069
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2070
-                        $actions[] = array(1,tan($val[0]),0,1,0,0);
2071
-                        break;
2072
-                    case 'matrix':
2073
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*1.;
2074
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $val[1]*1.;
2075
-                        if (!isset($val[2])) $val[2] = 0.; else $val[2] = $val[2]*1.;
2076
-                        if (!isset($val[3])) $val[3] = 0.; else $val[3] = $val[3]*1.;
2077
-                        if (!isset($val[4])) $val[4] = 0.; else $val[4] = $this->parsingCss->ConvertToMM($val[4], $this->_isInDraw['w']);
2078
-                        if (!isset($val[5])) $val[5] = 0.; else $val[5] = $this->parsingCss->ConvertToMM($val[5], $this->_isInDraw['h']);
2079
-                        $actions[] =$val;
2080
-                        break;
2081
-                }
2082
-            }
2083
-
2084
-            // if ther is no actions => return
2085
-            if (!$actions) return null;
2086
-
2087
-            // get the first matrix
2088
-            $m = $actions[0]; unset($actions[0]);
2089
-
2090
-            // foreach matrix => multiply to the last matrix
2091
-            foreach ($actions as $n) {
2092
-                $m = array(
2093
-                    $m[0]*$n[0]+$m[2]*$n[1],
2094
-                    $m[1]*$n[0]+$m[3]*$n[1],
2095
-                    $m[0]*$n[2]+$m[2]*$n[3],
2096
-                    $m[1]*$n[2]+$m[3]*$n[3],
2097
-                    $m[0]*$n[4]+$m[2]*$n[5]+$m[4],
2098
-                    $m[1]*$n[4]+$m[3]*$n[5]+$m[5]
2099
-                );
2100
-            }
2101
-
2102
-            // return the matrix
2103
-            return $m;
2104
-        }
2105
-
2106
-        /**
2107
-         * @access protected
2108
-         * @param  &array $cases
2109
-         * @param  &array $corr
2110
-         */
2111
-        protected function _calculateTableCellSize(&$cases, &$corr)
2112
-        {
2113
-            if (!isset($corr[0])) return true;
2114
-
2115
-            // for each cell without colspan, we get the max width for each column
2116
-            $sw = array();
2117
-            for ($x=0; $x<count($corr[0]); $x++) {
2118
-                $m=0;
2119
-                for ($y=0; $y<count($corr); $y++) {
2120
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]==1) {
2121
-                        $m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']);
2122
-                    }
2123
-                }
2124
-                $sw[$x] = $m;
2125
-            }
2126
-
2127
-            // for each cell with colspan, we adapt the width of each column
2128
-            for ($x=0; $x<count($corr[0]); $x++) {
2129
-                for ($y=0; $y<count($corr); $y++) {
2130
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]>1) {
2131
-
2132
-                        // sum the max width of each column in colspan
2133
-                        $s = 0; for ($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
2134
-
2135
-                        // if the max width is < the width of the cell with colspan => we adapt the width of each max width
2136
-                        if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']) {
2137
-                            for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2138
-                                $sw[$x+$i] = $sw[$x+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2139
-                            }
2140
-                        }
2141
-                    }
2142
-                }
2143
-            }
2144
-
2145
-            // set the new width, for each cell
2146
-            for ($x=0; $x<count($corr[0]); $x++) {
2147
-                for ($y=0; $y<count($corr); $y++) {
2148
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x])) {
2149
-                        // without colspan
2150
-                        if ($corr[$y][$x][2]==1) {
2151
-                            $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $sw[$x];
2152
-                        // with colspan
2153
-                        } else {
2154
-                            $s = 0;
2155
-                            for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2156
-                                $s+= $sw[$x+$i];
2157
-                            }
2158
-                            $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $s;
2159
-                        }
2160
-                    }
2161
-                }
2162
-            }
2163
-
2164
-            // for each cell without rowspan, we get the max height for each line
2165
-            $sh = array();
2166
-            for ($y=0; $y<count($corr); $y++) {
2167
-                $m=0;
2168
-                for ($x=0; $x<count($corr[0]); $x++) {
2169
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]==1) {
2170
-                        $m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']);
2171
-                    }
2172
-                }
2173
-                $sh[$y] = $m;
2174
-            }
2175
-
2176
-            // for each cell with rowspan, we adapt the height of each line
2177
-            for ($y=0; $y<count($corr); $y++) {
2178
-                for ($x=0; $x<count($corr[0]); $x++) {
2179
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]>1) {
2180
-
2181
-                        // sum the max height of each line in rowspan
2182
-                        $s = 0; for ($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
2183
-
2184
-                        // if the max height is < the height of the cell with rowspan => we adapt the height of each max height
2185
-                        if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']) {
2186
-                            for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2187
-                                $sh[$y+$i] = $sh[$y+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'];
2188
-                            }
2189
-                        }
2190
-                    }
2191
-                }
2192
-            }
2193
-
2194
-            // set the new height, for each cell
2195
-            for ($y=0; $y<count($corr); $y++) {
2196
-                for ($x=0; $x<count($corr[0]); $x++) {
2197
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x])) {
2198
-                        // without rowspan
2199
-                        if ($corr[$y][$x][3]==1) {
2200
-                            $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $sh[$y];
2201
-                        // with rowspan
2202
-                        } else {
2203
-                            $s = 0;
2204
-                            for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2205
-                                $s+= $sh[$y+$i];
2206
-                            }
2207
-                            $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $s;
2208
-
2209
-                            for ($j=1; $j<$corr[$y][$x][3]; $j++) {
2210
-                                $tx = $x+1;
2211
-                                $ty = $y+$j;
2212
-                                for (true; isset($corr[$ty][$tx]) && !is_array($corr[$ty][$tx]); $tx++);
2213
-                                if (isset($corr[$ty][$tx])) {
2214
-                                    $cases[$corr[$ty][$tx][1]][$corr[$ty][$tx][0]]['dw']+= $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2215
-                                }
2216
-                            }
2217
-                        }
2218
-                    }
2219
-                }
2220
-            }
2221
-        }
2222
-
2223
-        /**
2224
-         * tag : PAGE
2225
-         * mode : OPEN
2226
-         *
2227
-         * @param  array $param
2228
-         * @return boolean
2229
-         */
2230
-        protected function _tag_open_PAGE($param)
2231
-        {
2232
-            if ($this->_isForOneLine) return false;
2233
-            if ($this->_debugActif) $this->_DEBUG_add('PAGE '.($this->_page+1), true);
2234
-
2235
-            $newPageSet= (!isset($param['pageset']) || $param['pageset']!='old');
2236
-
2237
-            $resetPageNumber = (isset($param['pagegroup']) && $param['pagegroup']=='new');
2238
-
2239
-            $this->_maxH = 0;
2240
-
2241
-            // if new page set asked
2242
-            if ($newPageSet) {
2243
-                $this->_subHEADER = array();
2244
-                $this->_subFOOTER = array();
2245
-
2246
-                // orientation
2247
-                $orientation = '';
2248
-                if (isset($param['orientation'])) {
2249
-                    $param['orientation'] = strtolower($param['orientation']);
2250
-                    if ($param['orientation']=='p')         $orientation = 'P';
2251
-                    if ($param['orientation']=='portrait')  $orientation = 'P';
2252
-
2253
-                    if ($param['orientation']=='l')         $orientation = 'L';
2254
-                    if ($param['orientation']=='paysage')   $orientation = 'L';
2255
-                    if ($param['orientation']=='landscape') $orientation = 'L';
2256
-                }
2257
-
2258
-                // format
2259
-                $format = null;
2260
-                if (isset($param['format'])) {
2261
-                    $format = strtolower($param['format']);
2262
-                    if (preg_match('/^([0-9]+)x([0-9]+)$/isU', $format, $match)) {
2263
-                        $format = array(intval($match[1]), intval($match[2]));
2264
-                    }
2265
-                }
2266
-
2267
-                // background
2268
-                $background = array();
2269
-                if (isset($param['backimg'])) {
2270
-                    $background['img']    = isset($param['backimg'])  ? $param['backimg']  : '';       // src of the image
2271
-                    $background['posX']   = isset($param['backimgx']) ? $param['backimgx'] : 'center'; // horizontale position of the image
2272
-                    $background['posY']   = isset($param['backimgy']) ? $param['backimgy'] : 'middle'; // vertical position of the image
2273
-                    $background['width']  = isset($param['backimgw']) ? $param['backimgw'] : '100%';   // width of the image (100% = page width)
2274
-
2275
-                    // convert the src of the image, if parameters
2276
-                    $background['img'] = str_replace('&amp;', '&', $background['img']);
2277
-
2278
-                    // convert the positions
2279
-                    if ($background['posX']=='left')    $background['posX'] = '0%';
2280
-                    if ($background['posX']=='center')  $background['posX'] = '50%';
2281
-                    if ($background['posX']=='right')   $background['posX'] = '100%';
2282
-                    if ($background['posY']=='top')     $background['posY'] = '0%';
2283
-                    if ($background['posY']=='middle')  $background['posY'] = '50%';
2284
-                    if ($background['posY']=='bottom')  $background['posY'] = '100%';
2285
-
2286
-                    if ($background['img']) {
2287
-                        // get the size of the image
2288
-                        // WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
2289
-                        $infos=@getimagesize($background['img']);
2290
-                        if (count($infos)>1) {
2291
-                            $imageWidth = $this->parsingCss->ConvertToMM($background['width'], $this->pdf->getW());
2292
-                            $imageHeight = $imageWidth*$infos[1]/$infos[0];
2293
-
2294
-                            $background['width'] = $imageWidth;
2295
-                            $background['posX']  = $this->parsingCss->ConvertToMM($background['posX'], $this->pdf->getW() - $imageWidth);
2296
-                            $background['posY']  = $this->parsingCss->ConvertToMM($background['posY'], $this->pdf->getH() - $imageHeight);
2297
-                        } else {
2298
-                            $background = array();
2299
-                        }
2300
-                    } else {
2301
-                        $background = array();
2302
-                    }
2303
-                }
2304
-
2305
-                // margins of the page
2306
-                $background['top']    = isset($param['backtop'])    ? $param['backtop']    : '0';
2307
-                $background['bottom'] = isset($param['backbottom']) ? $param['backbottom'] : '0';
2308
-                $background['left']   = isset($param['backleft'])   ? $param['backleft']   : '0';
2309
-                $background['right']  = isset($param['backright'])  ? $param['backright']  : '0';
2310
-
2311
-                // if no unit => mm
2312
-                if (preg_match('/^([0-9]*)$/isU', $background['top']))    $background['top']    .= 'mm';
2313
-                if (preg_match('/^([0-9]*)$/isU', $background['bottom'])) $background['bottom'] .= 'mm';
2314
-                if (preg_match('/^([0-9]*)$/isU', $background['left']))   $background['left']   .= 'mm';
2315
-                if (preg_match('/^([0-9]*)$/isU', $background['right']))  $background['right']  .= 'mm';
2316
-
2317
-                // convert to mm
2318
-                $background['top']    = $this->parsingCss->ConvertToMM($background['top'], $this->pdf->getH());
2319
-                $background['bottom'] = $this->parsingCss->ConvertToMM($background['bottom'], $this->pdf->getH());
2320
-                $background['left']   = $this->parsingCss->ConvertToMM($background['left'], $this->pdf->getW());
2321
-                $background['right']  = $this->parsingCss->ConvertToMM($background['right'], $this->pdf->getW());
2322
-
2323
-                // get the background color
2324
-                $res = false;
2325
-                $background['color']    = isset($param['backcolor'])    ? $this->parsingCss->convertToColor($param['backcolor'], $res) : null;
2326
-                if (!$res) $background['color'] = null;
2327
-
2328
-                $this->parsingCss->save();
2329
-                $this->parsingCss->analyse('PAGE', $param);
2330
-                $this->parsingCss->setPosition();
2331
-                $this->parsingCss->fontSet();
2332
-
2333
-                // new page
2334
-                $this->_setNewPage($format, $orientation, $background, null, $resetPageNumber);
2335
-
2336
-                // automatic footer
2337
-                if (isset($param['footer'])) {
2338
-                    $lst = explode(';', $param['footer']);
2339
-                    foreach ($lst as $key => $val) $lst[$key] = trim(strtolower($val));
2340
-                    $page    = in_array('page', $lst);
2341
-                    $date    = in_array('date', $lst);
2342
-                    $hour    = in_array('heure', $lst);
2343
-                    $form    = in_array('form', $lst);
2344
-                } else {
2345
-                    $page    = null;
2346
-                    $date    = null;
2347
-                    $hour    = null;
2348
-                    $form    = null;
2349
-                }
2350
-                $this->pdf->SetMyFooter($page, $date, $hour, $form);
2351
-            // else => we use the last page set used
2352
-            } else {
2353
-                $this->parsingCss->save();
2354
-                $this->parsingCss->analyse('PAGE', $param);
2355
-                $this->parsingCss->setPosition();
2356
-                $this->parsingCss->fontSet();
2357
-
2358
-                $this->_setNewPage(null, null, null, null, $resetPageNumber);
2359
-            }
2360
-
2361
-            return true;
2362
-        }
2363
-
2364
-        /**
2365
-         * tag : PAGE
2366
-         * mode : CLOSE
2367
-         *
2368
-         * @param  array $param
2369
-         * @return boolean
2370
-         */
2371
-        protected function _tag_close_PAGE($param)
2372
-        {
2373
-            if ($this->_isForOneLine) return false;
2374
-
2375
-            $this->_maxH = 0;
2376
-
2377
-            $this->parsingCss->load();
2378
-            $this->parsingCss->fontSet();
2379
-
2380
-            if ($this->_debugActif) $this->_DEBUG_add('PAGE '.$this->_page, false);
2381
-
2382
-            return true;
2383
-        }
2384
-
2385
-        /**
2386
-         * tag : PAGE_HEADER
2387
-         * mode : OPEN
2388
-         *
2389
-         * @param  array $param
2390
-         * @return boolean
2391
-         */
2392
-        protected function _tag_open_PAGE_HEADER($param)
2393
-        {
2394
-            if ($this->_isForOneLine) return false;
2395
-
2396
-            $this->_subHEADER = array();
2397
-            for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2398
-                $action = $this->parsingHtml->code[$this->_parsePos];
2399
-                if ($action['name']=='page_header') $action['name']='page_header_sub';
2400
-                $this->_subHEADER[] = $action;
2401
-                if (strtolower($action['name'])=='page_header_sub' && $action['close']) break;
2402
-            }
2403
-
2404
-            $this->_setPageHeader();
2405
-
2406
-            return true;
2407
-        }
2408
-
2409
-        /**
2410
-         * tag : PAGE_FOOTER
2411
-         * mode : OPEN
2412
-         *
2413
-         * @param  array $param
2414
-         * @return boolean
2415
-         */
2416
-        protected function _tag_open_PAGE_FOOTER($param)
2417
-        {
2418
-            if ($this->_isForOneLine) return false;
2419
-
2420
-            $this->_subFOOTER = array();
2421
-            for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2422
-                $action = $this->parsingHtml->code[$this->_parsePos];
2423
-                if ($action['name']=='page_footer') $action['name']='page_footer_sub';
2424
-                $this->_subFOOTER[] = $action;
2425
-                if (strtolower($action['name'])=='page_footer_sub' && $action['close']) break;
2426
-            }
2427
-
2428
-            $this->_setPageFooter();
2429
-
2430
-            return true;
2431
-        }
2432
-
2433
-        /**
2434
-         * It is not a real tag. Does not use it directly
2435
-         *
2436
-         * @param  array $param
2437
-         * @return boolean
2438
-         */
2439
-        protected function _tag_open_PAGE_HEADER_SUB($param)
2440
-        {
2441
-            if ($this->_isForOneLine) return false;
2442
-
2443
-            // save the current stat
2444
-            $this->_subSTATES = array();
2445
-            $this->_subSTATES['x']  = $this->pdf->getX();
2446
-            $this->_subSTATES['y']  = $this->pdf->getY();
2447
-            $this->_subSTATES['s']  = $this->parsingCss->value;
2448
-            $this->_subSTATES['t']  = $this->parsingCss->table;
2449
-            $this->_subSTATES['ml'] = $this->_margeLeft;
2450
-            $this->_subSTATES['mr'] = $this->_margeRight;
2451
-            $this->_subSTATES['mt'] = $this->_margeTop;
2452
-            $this->_subSTATES['mb'] = $this->_margeBottom;
2453
-            $this->_subSTATES['mp'] = $this->_pageMarges;
2454
-
2455
-            // new stat for the header
2456
-            $this->_pageMarges = array();
2457
-            $this->_margeLeft    = $this->_defaultLeft;
2458
-            $this->_margeRight   = $this->_defaultRight;
2459
-            $this->_margeTop     = $this->_defaultTop;
2460
-            $this->_margeBottom  = $this->_defaultBottom;
2461
-            $this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2462
-            $this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2463
-            $this->pdf->setXY($this->_defaultLeft, $this->_defaultTop);
2464
-
2465
-            $this->parsingCss->initStyle();
2466
-            $this->parsingCss->resetStyle();
2467
-            $this->parsingCss->value['width'] = $this->pdf->getW() - $this->_defaultLeft - $this->_defaultRight;
2468
-            $this->parsingCss->table = array();
2469
-
2470
-            $this->parsingCss->save();
2471
-            $this->parsingCss->analyse('page_header_sub', $param);
2472
-            $this->parsingCss->setPosition();
2473
-            $this->parsingCss->fontSet();
2474
-            $this->_setNewPositionForNewLine();
2475
-            return true;
2476
-        }
2477
-
2478
-        /**
2479
-         * It is not a real tag. Does not use it directly
2480
-         *
2481
-         * @param  array $param
2482
-         * @return boolean
2483
-         */
2484
-        protected function _tag_close_PAGE_HEADER_SUB($param)
2485
-        {
2486
-            if ($this->_isForOneLine) return false;
2487
-
2488
-            $this->parsingCss->load();
2489
-
2490
-            // restore the stat
2491
-            $this->parsingCss->value = $this->_subSTATES['s'];
2492
-            $this->parsingCss->table = $this->_subSTATES['t'];
2493
-            $this->_pageMarges       = $this->_subSTATES['mp'];
2494
-            $this->_margeLeft        = $this->_subSTATES['ml'];
2495
-            $this->_margeRight       = $this->_subSTATES['mr'];
2496
-            $this->_margeTop         = $this->_subSTATES['mt'];
2497
-            $this->_margeBottom      = $this->_subSTATES['mb'];
2498
-            $this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2499
-            $this->pdf->setbMargin($this->_margeBottom);
2500
-            $this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2501
-            $this->pdf->setXY($this->_subSTATES['x'], $this->_subSTATES['y']);
2502
-
2503
-            $this->parsingCss->fontSet();
2504
-            $this->_maxH = 0;
2505
-
2506
-            return true;
2507
-        }
2508
-
2509
-        /**
2510
-         * It is not a real tag. Does not use it directly
2511
-         *
2512
-         * @param  array $param
2513
-         * @return boolean
2514
-         */
2515
-        protected function _tag_open_PAGE_FOOTER_SUB($param)
2516
-        {
2517
-            if ($this->_isForOneLine) return false;
2518
-
2519
-            // save the current stat
2520
-            $this->_subSTATES = array();
2521
-            $this->_subSTATES['x']    = $this->pdf->getX();
2522
-            $this->_subSTATES['y']    = $this->pdf->getY();
2523
-            $this->_subSTATES['s']    = $this->parsingCss->value;
2524
-            $this->_subSTATES['t']    = $this->parsingCss->table;
2525
-            $this->_subSTATES['ml']    = $this->_margeLeft;
2526
-            $this->_subSTATES['mr']    = $this->_margeRight;
2527
-            $this->_subSTATES['mt']    = $this->_margeTop;
2528
-            $this->_subSTATES['mb']    = $this->_margeBottom;
2529
-            $this->_subSTATES['mp']    = $this->_pageMarges;
2530
-
2531
-            // new stat for the footer
2532
-            $this->_pageMarges  = array();
2533
-            $this->_margeLeft   = $this->_defaultLeft;
2534
-            $this->_margeRight  = $this->_defaultRight;
2535
-            $this->_margeTop    = $this->_defaultTop;
2536
-            $this->_margeBottom = $this->_defaultBottom;
2537
-            $this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2538
-            $this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2539
-            $this->pdf->setXY($this->_defaultLeft, $this->_defaultTop);
2540
-
2541
-            $this->parsingCss->initStyle();
2542
-            $this->parsingCss->resetStyle();
2543
-            $this->parsingCss->value['width']    = $this->pdf->getW() - $this->_defaultLeft - $this->_defaultRight;
2544
-            $this->parsingCss->table                = array();
2545
-
2546
-            // we create a sub HTML2PFDF, and we execute on it the content of the footer, to get the height of it
2547
-            $sub = null;
2548
-            $this->_createSubHTML($sub);
2549
-            $sub->parsingHtml->code = $this->parsingHtml->getLevel($this->_parsePos);
2550
-            $sub->_makeHTMLcode();
2551
-            $this->pdf->setY($this->pdf->getH() - $sub->_maxY - $this->_defaultBottom - 0.01);
2552
-            $this->_destroySubHTML($sub);
2553
-
2554
-            $this->parsingCss->save();
2555
-            $this->parsingCss->analyse('page_footer_sub', $param);
2556
-            $this->parsingCss->setPosition();
2557
-            $this->parsingCss->fontSet();
2558
-            $this->_setNewPositionForNewLine();
2559
-
2560
-            return true;
2561
-        }
2562
-
2563
-        /**
2564
-         * It is not a real tag. Does not use it directly
2565
-         *
2566
-         * @param  array $param
2567
-         * @return boolean
2568
-         */
2569
-        protected function _tag_close_PAGE_FOOTER_SUB($param)
2570
-        {
2571
-            if ($this->_isForOneLine) return false;
2572
-
2573
-            $this->parsingCss->load();
2574
-
2575
-            $this->parsingCss->value                = $this->_subSTATES['s'];
2576
-            $this->parsingCss->table                = $this->_subSTATES['t'];
2577
-            $this->_pageMarges                 = $this->_subSTATES['mp'];
2578
-            $this->_margeLeft                = $this->_subSTATES['ml'];
2579
-            $this->_margeRight                = $this->_subSTATES['mr'];
2580
-            $this->_margeTop                    = $this->_subSTATES['mt'];
2581
-            $this->_margeBottom                = $this->_subSTATES['mb'];
2582
-            $this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2583
-            $this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2584
-            $this->pdf->setXY($this->_subSTATES['x'], $this->_subSTATES['y']);
2585
-
2586
-            $this->parsingCss->fontSet();
2587
-            $this->_maxH = 0;
2588
-
2589
-            return true;
2590
-        }
2591
-
2592
-        /**
2593
-         * tag : NOBREAK
2594
-         * mode : OPEN
2595
-         *
2596
-         * @param  array $param
2597
-         * @return boolean
2598
-         */
2599
-        protected function _tag_open_NOBREAK($param)
2600
-        {
2601
-            if ($this->_isForOneLine) return false;
2602
-
2603
-            $this->_maxH = 0;
2604
-
2605
-            // create a sub HTML2PDF to execute the content of the tag, to get the dimensions
2606
-            $sub = null;
2607
-            $this->_createSubHTML($sub);
2608
-            $sub->parsingHtml->code = $this->parsingHtml->getLevel($this->_parsePos);
2609
-            $sub->_makeHTMLcode();
2610
-            $y = $this->pdf->getY();
2611
-
2612
-            // if the content does not fit on the page => new page
2613
-            if (
2614
-                $sub->_maxY < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin()) &&
2615
-                $y + $sub->_maxY>=($this->pdf->getH() - $this->pdf->getbMargin())
2616
-            ) {
2617
-                $this->_setNewPage();
2618
-            }
2619
-
2620
-            // destroy the sub HTML2PDF
2621
-            $this->_destroySubHTML($sub);
2622
-
2623
-            return true;
2624
-        }
2625
-
2626
-
2627
-        /**
2628
-         * tag : NOBREAK
2629
-         * mode : CLOSE
2630
-         *
2631
-         * @param  array $param
2632
-         * @return boolean
2633
-         */
2634
-        protected function _tag_close_NOBREAK($param)
2635
-        {
2636
-            if ($this->_isForOneLine) return false;
2637
-
2638
-            $this->_maxH = 0;
2639
-
2640
-            return true;
2641
-        }
2642
-
2643
-        /**
2644
-         * tag : DIV
2645
-         * mode : OPEN
2646
-         *
2647
-         * @param  array $param
2648
-         * @param  string $other name of tag that used the div tag
2649
-         * @return boolean
2650
-         */
2651
-        protected function _tag_open_DIV($param, $other = 'div')
2652
-        {
2653
-            if ($this->_isForOneLine) return false;
2654
-            if ($this->_debugActif) $this->_DEBUG_add(strtoupper($other), true);
2655
-
2656
-            $this->parsingCss->save();
2657
-            $this->parsingCss->analyse($other, $param);
2658
-            $this->parsingCss->fontSet();
2659
-
2660
-            // for fieldset and legend
2661
-            if (in_array($other, array('fieldset', 'legend'))) {
2662
-                if (isset($param['moveTop']))  $this->parsingCss->value['margin']['t']    += $param['moveTop'];
2663
-                if (isset($param['moveLeft'])) $this->parsingCss->value['margin']['l']    += $param['moveLeft'];
2664
-                if (isset($param['moveDown'])) $this->parsingCss->value['margin']['b']    += $param['moveDown'];
2665
-            }
2666
-
2667
-            $alignObject = null;
2668
-            if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
2669
-
2670
-            $marge = array();
2671
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2672
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2673
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2674
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2675
-
2676
-            // extract the content of the div
2677
-            $level = $this->parsingHtml->getLevel($this->_parsePos);
2678
-
2679
-            // create a sub HTML2PDF to get the dimensions of the content of the div
2680
-            $w = 0; $h = 0;
2681
-            if (count($level)) {
2682
-                $sub = null;
2683
-                $this->_createSubHTML($sub);
2684
-                $sub->parsingHtml->code = $level;
2685
-                $sub->_makeHTMLcode();
2686
-                $w = $sub->_maxX;
2687
-                $h = $sub->_maxY;
2688
-                $this->_destroySubHTML($sub);
2689
-            }
2690
-            $wReel = $w;
2691
-            $hReel = $h;
2692
-
2693
-            $w+= $marge['l']+$marge['r']+0.001;
2694
-            $h+= $marge['t']+$marge['b']+0.001;
2695
-
2696
-            if ($this->parsingCss->value['overflow']=='hidden') {
2697
-                $overW = max($w, $this->parsingCss->value['width']);
2698
-                $overH = max($h, $this->parsingCss->value['height']);
2699
-                $overflow = true;
2700
-                $this->parsingCss->value['old_maxX'] = $this->_maxX;
2701
-                $this->parsingCss->value['old_maxY'] = $this->_maxY;
2702
-                $this->parsingCss->value['old_maxH'] = $this->_maxH;
2703
-                $this->parsingCss->value['old_overflow'] = $this->_isInOverflow;
2704
-                $this->_isInOverflow = true;
2705
-            } else {
2706
-                $overW = null;
2707
-                $overH = null;
2708
-                $overflow = false;
2709
-                $this->parsingCss->value['width']    = max($w, $this->parsingCss->value['width']);
2710
-                $this->parsingCss->value['height']    = max($h, $this->parsingCss->value['height']);
2711
-            }
2712
-
2713
-            switch($this->parsingCss->value['rotate'])
2714
-            {
2715
-                case 90:
2716
-                    $tmp = $overH; $overH = $overW; $overW = $tmp;
2717
-                    $tmp = $hReel; $hReel = $wReel; $wReel = $tmp;
2718
-                    unset($tmp);
2719
-                    $w = $this->parsingCss->value['height'];
2720
-                    $h = $this->parsingCss->value['width'];
2721
-                    $tX =-$h;
2722
-                    $tY = 0;
2723
-                    break;
2724
-
2725
-                case 180:
2726
-                    $w = $this->parsingCss->value['width'];
2727
-                    $h = $this->parsingCss->value['height'];
2728
-                    $tX = -$w;
2729
-                    $tY = -$h;
2730
-                    break;
2731
-
2732
-                case 270:
2733
-                    $tmp = $overH; $overH = $overW; $overW = $tmp;
2734
-                    $tmp = $hReel; $hReel = $wReel; $wReel = $tmp;
2735
-                    unset($tmp);
2736
-                    $w = $this->parsingCss->value['height'];
2737
-                    $h = $this->parsingCss->value['width'];
2738
-                    $tX = 0;
2739
-                    $tY =-$w;
2740
-                    break;
2741
-
2742
-                default:
2743
-                    $w = $this->parsingCss->value['width'];
2744
-                    $h = $this->parsingCss->value['height'];
2745
-                    $tX = 0;
2746
-                    $tY = 0;
2747
-                    break;
2748
-            }
2749
-
2750
-            if (!$this->parsingCss->value['position']) {
2751
-                if (
2752
-                    $w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
2753
-                    $this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
2754
-                    )
2755
-                    $this->_tag_open_BR(array());
2756
-
2757
-                if (
2758
-                        ($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
2759
-                        ($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
2760
-                        !$this->_isInOverflow
2761
-                    )
2762
-                    $this->_setNewPage();
2763
-
2764
-                $old = $this->parsingCss->getOldValues();
2765
-                $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2766
-
2767
-                if ($parentWidth>$w) {
2768
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2769
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
2770
-                }
2771
-
2772
-                $this->parsingCss->setPosition();
2773
-            } else {
2774
-                $old = $this->parsingCss->getOldValues();
2775
-                $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2776
-
2777
-                if ($parentWidth>$w) {
2778
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2779
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
2780
-                }
2781
-
2782
-                $this->parsingCss->setPosition();
2783
-                $this->_saveMax();
2784
-                $this->_maxX = 0;
2785
-                $this->_maxY = 0;
2786
-                $this->_maxH = 0;
2787
-                $this->_maxE = 0;
2788
-            }
2789
-
2790
-            if ($this->parsingCss->value['rotate']) {
2791
-                $this->pdf->startTransform();
2792
-                $this->pdf->setRotation($this->parsingCss->value['rotate']);
2793
-                $this->pdf->setTranslate($tX, $tY);
2794
-            }
2795
-
2796
-            $this->_drawRectangle(
2797
-                $this->parsingCss->value['x'],
2798
-                $this->parsingCss->value['y'],
2799
-                $this->parsingCss->value['width'],
2800
-                $this->parsingCss->value['height'],
2801
-                $this->parsingCss->value['border'],
2802
-                $this->parsingCss->value['padding'],
2803
-                0,
2804
-                $this->parsingCss->value['background']
2805
-            );
2806
-
2807
-            $marge = array();
2808
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2809
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2810
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2811
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2812
-
2813
-            $this->parsingCss->value['width'] -= $marge['l']+$marge['r'];
2814
-            $this->parsingCss->value['height']-= $marge['t']+$marge['b'];
2815
-
2816
-            $xCorr = 0;
2817
-            $yCorr = 0;
2818
-            if (!$this->_subPart && !$this->_isSubPart) {
2819
-                switch($this->parsingCss->value['text-align'])
2820
-                {
2821
-                    case 'right':
2822
-                        $xCorr = ($this->parsingCss->value['width']-$wReel);
2823
-                        break;
2824
-                    case 'center':
2825
-                        $xCorr = ($this->parsingCss->value['width']-$wReel)*0.5;
2826
-                        break;
2827
-                }
2828
-                if ($xCorr>0) $xCorr=0;
2829
-                switch($this->parsingCss->value['vertical-align'])
2830
-                {
2831
-                    case 'bottom':
2832
-                        $yCorr = ($this->parsingCss->value['height']-$hReel);
2833
-                        break;
2834
-                    case 'middle':
2835
-                        $yCorr = ($this->parsingCss->value['height']-$hReel)*0.5;
2836
-                        break;
2837
-                }
2838
-            }
2839
-
2840
-            if ($overflow) {
2841
-                $overW-= $marge['l']+$marge['r'];
2842
-                $overH-= $marge['t']+$marge['b'];
2843
-                $this->pdf->clippingPathStart(
2844
-                    $this->parsingCss->value['x']+$marge['l'],
2845
-                    $this->parsingCss->value['y']+$marge['t'],
2846
-                    $this->parsingCss->value['width'],
2847
-                    $this->parsingCss->value['height']
2848
-                );
2849
-
2850
-                $this->parsingCss->value['x']+= $xCorr;
2851
-
2852
-                // marges from the dimension of the content
2853
-                $mL = $this->parsingCss->value['x']+$marge['l'];
2854
-                $mR = $this->pdf->getW() - $mL - $overW;
2855
-            } else {
2856
-                // marges from the dimension of the div
2857
-                $mL = $this->parsingCss->value['x']+$marge['l'];
2858
-                $mR = $this->pdf->getW() - $mL - $this->parsingCss->value['width'];
2859
-            }
2860
-
2861
-            $x = $this->parsingCss->value['x']+$marge['l'];
2862
-            $y = $this->parsingCss->value['y']+$marge['t']+$yCorr;
2863
-            $this->_saveMargin($mL, 0, $mR);
2864
-            $this->pdf->setXY($x, $y);
2865
-
2866
-            $this->_setNewPositionForNewLine();
2867
-
2868
-            return true;
2869
-        }
2870
-
2871
-        /**
2872
-         * tag : BLOCKQUOTE
2873
-         * mode : OPEN
2874
-         *
2875
-         * @param  array $param
2876
-         * @return boolean
2877
-         */
2878
-        protected function _tag_open_BLOCKQUOTE($param)
2879
-        {
2880
-            return $this->_tag_open_DIV($param, 'blockquote');
2881
-        }
2882
-
2883
-        /**
2884
-         * tag : LEGEND
2885
-         * mode : OPEN
2886
-         *
2887
-         * @param  array $param
2888
-         * @return boolean
2889
-         */
2890
-        protected function _tag_open_LEGEND($param)
2891
-        {
2892
-            return $this->_tag_open_DIV($param, 'legend');
2893
-        }
2894
-
2895
-        /**
2896
-         * tag : FIELDSET
2897
-         * mode : OPEN
2898
-         *
2899
-         * @author Pavel Kochman
2900
-         * @param  array $param
2901
-         * @return boolean
2902
-         */
2903
-        protected function _tag_open_FIELDSET($param)
2904
-        {
2905
-
2906
-            $this->parsingCss->save();
2907
-            $this->parsingCss->analyse('fieldset', $param);
2908
-
2909
-            // get height of LEGEND element and make fieldset corrections
2910
-            for ($tempPos = $this->_parsePos + 1; $tempPos<count($this->parsingHtml->code); $tempPos++) {
2911
-                $action = $this->parsingHtml->code[$tempPos];
2912
-                if ($action['name'] == 'fieldset') break;
2913
-                if ($action['name'] == 'legend' && !$action['close']) {
2914
-                    $legendOpenPos = $tempPos;
2915
-
2916
-                    $sub = null;
2917
-                    $this->_createSubHTML($sub);
2918
-                    $sub->parsingHtml->code = $this->parsingHtml->getLevel($tempPos - 1);
2919
-
2920
-                    $res = null;
2921
-                    for ($sub->_parsePos = 0; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
2922
-                        $action = $sub->parsingHtml->code[$sub->_parsePos];
2923
-                        $sub->_executeAction($action);
2924
-
2925
-                        if ($action['name'] == 'legend' && $action['close'])
2926
-                            break;
2927
-                    }
2928
-
2929
-                    $legendH = $sub->_maxY;
2930
-                    $this->_destroySubHTML($sub);
2931
-
2932
-                    $move = $this->parsingCss->value['padding']['t'] + $this->parsingCss->value['border']['t']['width'] + 0.03;
2933
-
2934
-                    $param['moveTop'] = $legendH / 2;
2935
-
2936
-                    $this->parsingHtml->code[$legendOpenPos]['param']['moveTop'] = - ($legendH / 2 + $move);
2937
-                    $this->parsingHtml->code[$legendOpenPos]['param']['moveLeft'] = 2 - $this->parsingCss->value['border']['l']['width'] - $this->parsingCss->value['padding']['l'];
2938
-                    $this->parsingHtml->code[$legendOpenPos]['param']['moveDown'] = $move;
2939
-                    break;
2940
-                }
2941
-            }
2942
-            $this->parsingCss->load();
2943
-
2944
-            return $this->_tag_open_DIV($param, 'fieldset');
2945
-        }
2946
-
2947
-        /**
2948
-         * tag : DIV
2949
-         * mode : CLOSE
2950
-         *
2951
-         * @param  array $param
2952
-         * @param  string $other name of tag that used the div tag
2953
-         * @return boolean
2954
-         */
2955
-        protected function _tag_close_DIV($param, $other='div')
2956
-        {
2957
-            if ($this->_isForOneLine) return false;
2958
-
2959
-            if ($this->parsingCss->value['overflow']=='hidden') {
2960
-                $this->_maxX = $this->parsingCss->value['old_maxX'];
2961
-                $this->_maxY = $this->parsingCss->value['old_maxY'];
2962
-                $this->_maxH = $this->parsingCss->value['old_maxH'];
2963
-                $this->_isInOverflow = $this->parsingCss->value['old_overflow'];
2964
-                $this->pdf->clippingPathStop();
2965
-            }
2966
-
2967
-            if ($this->parsingCss->value['rotate'])
2968
-                $this->pdf->stopTransform();
2969
-
2970
-            $marge = array();
2971
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2972
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2973
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2974
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2975
-
2976
-            $x = $this->parsingCss->value['x'];
2977
-            $y = $this->parsingCss->value['y'];
2978
-            $w = $this->parsingCss->value['width']+$marge['l']+$marge['r']+$this->parsingCss->value['margin']['r'];
2979
-            $h = $this->parsingCss->value['height']+$marge['t']+$marge['b']+$this->parsingCss->value['margin']['b'];
2980
-
2981
-            switch($this->parsingCss->value['rotate'])
2982
-            {
2983
-                case 90:
2984
-                    $t = $w; $w = $h; $h = $t;
2985
-                    break;
2986
-
2987
-                case 270:
2988
-                    $t = $w; $w = $h; $h = $t;
2989
-                    break;
2990
-
2991
-                default:
2992
-                    break;
2993
-            }
2994
-
2995
-
2996
-            if ($this->parsingCss->value['position']!='absolute') {
2997
-                $this->pdf->setXY($x+$w, $y);
2998
-
2999
-                $this->_maxX = max($this->_maxX, $x+$w);
3000
-                $this->_maxY = max($this->_maxY, $y+$h);
3001
-                $this->_maxH = max($this->_maxH, $h);
3002
-            } else {
3003
-                $this->pdf->setXY($this->parsingCss->value['xc'], $this->parsingCss->value['yc']);
3004
-
3005
-                $this->_loadMax();
3006
-            }
3007
-
3008
-            $block = ($this->parsingCss->value['display']!='inline' && $this->parsingCss->value['position']!='absolute');
3009
-
3010
-            $this->parsingCss->load();
3011
-            $this->parsingCss->fontSet();
3012
-            $this->_loadMargin();
3013
-
3014
-            if ($block) $this->_tag_open_BR(array());
3015
-            if ($this->_debugActif) $this->_DEBUG_add(strtoupper($other), false);
3016
-
3017
-            return true;
3018
-        }
3019
-
3020
-        /**
3021
-         * tag : BLOCKQUOTE
3022
-         * mode : CLOSE
3023
-         *
3024
-         * @param  array $param
3025
-         * @return boolean
3026
-         */
3027
-        protected function _tag_close_BLOCKQUOTE($param)
3028
-        {
3029
-            return $this->_tag_close_DIV($param, 'blockquote');
3030
-        }
3031
-
3032
-        /**
3033
-         * tag : FIELDSET
3034
-         * mode : CLOSE
3035
-         *
3036
-         * @param  array $param
3037
-         * @return boolean
3038
-         */
3039
-        protected function _tag_close_FIELDSET($param)
3040
-        {
3041
-            return $this->_tag_close_DIV($param, 'fieldset');
3042
-        }
3043
-
3044
-        /**
3045
-         * tag : LEGEND
3046
-         * mode : CLOSE
3047
-         *
3048
-         * @param  array $param
3049
-         * @return boolean
3050
-         */
3051
-        protected function _tag_close_LEGEND($param)
3052
-        {
3053
-            return $this->_tag_close_DIV($param, 'legend');
3054
-        }
3055
-
3056
-        /**
3057
-         * tag : BARCODE
3058
-         * mode : OPEN
3059
-         *
3060
-         * @param  array $param
3061
-         * @return boolean
3062
-         */
3063
-        protected function _tag_open_BARCODE($param)
3064
-        {
3065
-            // for  compatibility with old versions < 3.29
3066
-            $lstBarcode = array();
3067
-            $lstBarcode['UPC_A']  =    'UPCA';
3068
-            $lstBarcode['CODE39'] =    'C39';
3069
-
3070
-            if (!isset($param['type']))     $param['type'] = 'C39';
3071
-            if (!isset($param['value']))    $param['value']    = 0;
3072
-            if (!isset($param['label']))    $param['label']    = 'label';
3073
-            if (!isset($param['style']['color'])) $param['style']['color'] = '#000000';
3074
-
3075
-            if ($this->_testIsDeprecated && (isset($param['bar_h']) || isset($param['bar_w'])))
3076
-                throw new HTML2PDF_exception(9, array('BARCODE', 'bar_h, bar_w'));
3077
-
3078
-            $param['type'] = strtoupper($param['type']);
3079
-            if (isset($lstBarcode[$param['type']])) $param['type'] = $lstBarcode[$param['type']];
3080
-
3081
-            $this->parsingCss->save();
3082
-            $this->parsingCss->analyse('barcode', $param);
3083
-            $this->parsingCss->setPosition();
3084
-            $this->parsingCss->fontSet();
3085
-
3086
-            $x = $this->pdf->getX();
3087
-            $y = $this->pdf->getY();
3088
-            $w = $this->parsingCss->value['width'];    if (!$w) $w = $this->parsingCss->ConvertToMM('50mm');
3089
-            $h = $this->parsingCss->value['height'];    if (!$h) $h = $this->parsingCss->ConvertToMM('10mm');
3090
-            $txt = ($param['label']!=='none' ? $this->parsingCss->value['font-size'] : false);
3091
-            $c = $this->parsingCss->value['color'];
3092
-            $infos = $this->pdf->myBarcode($param['value'], $param['type'], $x, $y, $w, $h, $txt, $c);
3093
-
3094
-            $this->_maxX = max($this->_maxX, $x+$infos[0]);
3095
-            $this->_maxY = max($this->_maxY, $y+$infos[1]);
3096
-            $this->_maxH = max($this->_maxH, $infos[1]);
3097
-            $this->_maxE++;
3098
-
3099
-            $this->pdf->setXY($x+$infos[0], $y);
3100
-
3101
-            $this->parsingCss->load();
3102
-            $this->parsingCss->fontSet();
3103
-
3104
-            return true;
3105
-        }
3106
-
3107
-        /**
3108
-         * tag : BARCODE
3109
-         * mode : CLOSE
3110
-         *
3111
-         * @param  array $param
3112
-         * @return boolean
3113
-         */
3114
-        protected function _tag_close_BARCODE($param)
3115
-        {
3116
-            // there is nothing to do here
3117
-
3118
-            return true;
3119
-        }
3120
-
3121
-        /**
3122
-         * tag : QRCODE
3123
-         * mode : OPEN
3124
-         *
3125
-         * @param  array $param
3126
-         * @return boolean
3127
-         */
3128
-        protected function _tag_open_QRCODE($param)
3129
-        {
3130
-            if ($this->_testIsDeprecated && (isset($param['size']) || isset($param['noborder'])))
3131
-                throw new HTML2PDF_exception(9, array('QRCODE', 'size, noborder'));
3132
-
3133
-            if ($this->_debugActif) $this->_DEBUG_add('QRCODE');
3134
-
3135
-            if (!isset($param['value']))                     $param['value'] = '';
3136
-            if (!isset($param['ec']))                        $param['ec'] = 'H';
3137
-            if (!isset($param['style']['color']))            $param['style']['color'] = '#000000';
3138
-            if (!isset($param['style']['background-color'])) $param['style']['background-color'] = '#FFFFFF';
3139
-            if (isset($param['style']['border'])) {
3140
-                $borders = $param['style']['border']!='none';
3141
-                unset($param['style']['border']);
3142
-            } else {
3143
-                $borders = true;
3144
-            }
3145
-
3146
-            if ($param['value']==='') return true;
3147
-            if (!in_array($param['ec'], array('L', 'M', 'Q', 'H'))) $param['ec'] = 'H';
3148
-
3149
-            $this->parsingCss->save();
3150
-            $this->parsingCss->analyse('qrcode', $param);
3151
-            $this->parsingCss->setPosition();
3152
-            $this->parsingCss->fontSet();
3153
-
3154
-            $x = $this->pdf->getX();
3155
-            $y = $this->pdf->getY();
3156
-            $w = $this->parsingCss->value['width'];
3157
-            $h = $this->parsingCss->value['height'];
3158
-            $size = max($w, $h); if (!$size) $size = $this->parsingCss->ConvertToMM('50mm');
3159
-
3160
-            $style = array(
3161
-                    'fgcolor' => $this->parsingCss->value['color'],
3162
-                    'bgcolor' => $this->parsingCss->value['background']['color'],
3163
-                );
3164
-
3165
-            if ($borders) {
3166
-                $style['border'] = true;
3167
-                $style['padding'] = 'auto';
3168
-            } else {
3169
-                $style['border'] = false;
3170
-                $style['padding'] = 0;
3171
-            }
3172
-
3173
-            if (!$this->_subPart && !$this->_isSubPart) {
3174
-                $this->pdf->write2DBarcode($param['value'], 'QRCODE,'.$param['ec'], $x, $y, $size, $size, $style);
3175
-            }
3176
-
3177
-            $this->_maxX = max($this->_maxX, $x+$size);
3178
-            $this->_maxY = max($this->_maxY, $y+$size);
3179
-            $this->_maxH = max($this->_maxH, $size);
3180
-            $this->_maxE++;
3181
-
3182
-            $this->pdf->setX($x+$size);
3183
-
3184
-            $this->parsingCss->load();
3185
-            $this->parsingCss->fontSet();
3186
-
3187
-            return true;
3188
-        }
3189
-
3190
-        /**
3191
-         * tag : QRCODE
3192
-         * mode : CLOSE
3193
-         *
3194
-         * @param  array $param
3195
-         * @return boolean
3196
-         */
3197
-        protected function _tag_close_QRCODE($param)
3198
-        {
3199
-            // there is nothing to do here
3200
-
3201
-            return true;
3202
-        }
3203
-
3204
-        /**
3205
-         * tag : BOOKMARK
3206
-         * mode : OPEN
3207
-         *
3208
-         * @param  array $param
3209
-         * @return boolean
3210
-         */
3211
-        protected function _tag_open_BOOKMARK($param)
3212
-        {
3213
-            $titre = isset($param['title']) ? trim($param['title']) : '';
3214
-            $level = isset($param['level']) ? floor($param['level']) : 0;
3215
-
3216
-            if ($level<0) $level = 0;
3217
-            if ($titre) $this->pdf->Bookmark($titre, $level, -1);
3218
-
3219
-            return true;
3220
-        }
3221
-
3222
-        /**
3223
-         * tag : BOOKMARK
3224
-         * mode : CLOSE
3225
-         *
3226
-         * @param  array $param
3227
-         * @return boolean
3228
-         */
3229
-        protected function _tag_close_BOOKMARK($param)
3230
-        {
3231
-            // there is nothing to do here
3232
-
3233
-            return true;
3234
-        }
3235
-
3236
-        /**
3237
-         * this is not a real TAG, it is just to write texts
3238
-         *
3239
-         * @param  array $param
3240
-         * @return boolean
3241
-         */
3242
-        protected function _tag_open_WRITE($param)
3243
-        {
3244
-            $fill = ($this->parsingCss->value['background']['color']!==null && $this->parsingCss->value['background']['image']===null);
3245
-            if (in_array($this->parsingCss->value['id_tag'], array('fieldset', 'legend', 'div', 'table', 'tr', 'td', 'th'))) {
3246
-                $fill = false;
3247
-            }
3248
-
3249
-            // get the text to write
3250
-            $txt = $param['txt'];
3251
-
3252
-            if ($this->_isAfterFloat) {
3253
-                $txt = ltrim($txt);
3254
-                $this->_isAfterFloat = false;
3255
-            }
3256
-
3257
-            $txt = str_replace('[[page_nb]]', $this->pdf->getMyAliasNbPages(), $txt);
3258
-            $txt = str_replace('[[page_cu]]', $this->pdf->getMyNumPage($this->_page), $txt);
3259
-
3260
-            if ($this->parsingCss->value['text-transform']!='none') {
3261
-                if ($this->parsingCss->value['text-transform']=='capitalize')
3262
-                    $txt = ucwords($txt);
3263
-                else if ($this->parsingCss->value['text-transform']=='uppercase')
3264
-                    $txt = strtoupper($txt);
3265
-                else if ($this->parsingCss->value['text-transform']=='lowercase')
3266
-                    $txt = strtolower($txt);
3267
-            }
3268
-
3269
-            // size of the text
3270
-            $h  = 1.08*$this->parsingCss->value['font-size'];
3271
-            $dh = $h*$this->parsingCss->value['mini-decal'];
3272
-            $lh = $this->parsingCss->getLineHeight();
3273
-
3274
-            // identify the align
3275
-            $align = 'L';
3276
-            if ($this->parsingCss->value['text-align']=='li_right') {
3277
-                $w = $this->parsingCss->value['width'];
3278
-                $align = 'R';
3279
-            }
3280
-
3281
-            // calculate the width of each words, and of all the sentence
3282
-            $w = 0;
3283
-            $words = explode(' ', $txt);
3284
-            foreach ($words as $k => $word) {
3285
-                $words[$k] = array($word, $this->pdf->GetStringWidth($word));
3286
-                $w+= $words[$k][1];
3287
-            }
3288
-            $space = $this->pdf->GetStringWidth(' ');
3289
-            $w+= $space*(count($words)-1);
3290
-
3291
-            // position in the text
3292
-            $currPos = 0;
3293
-
3294
-            // the bigger width of the text, after automatic break line
3295
-            $maxX = 0;
3296
-
3297
-            // position of the text
3298
-            $x = $this->pdf->getX();
3299
-            $y = $this->pdf->getY();
3300
-            $dy = $this->_getElementY($lh);
3301
-
3302
-            // margins
3303
-            list($left, $right) = $this->_getMargins($y);
3304
-
3305
-            // number of lines after automatic break line
3306
-            $nb = 0;
3307
-
3308
-            // while we have words, and the text does not fit on the line => we cut the sentence
3309
-            while ($x+$w>$right && $x<$right+$space && count($words)) {
3310
-                // adding words 1 by 1 to fit on the line
3311
-                $i=0;
3312
-                $old = array('', 0);
3313
-                $str = $words[0];
3314
-                $add = false;
3315
-                while (($x+$str[1])<$right) {
3316
-                    $i++;
3317
-                    $add = true;
3318
-
3319
-                    array_shift($words);
3320
-                    $old = $str;
3321
-
3322
-                    if (!count($words)) break;
3323
-                    $str[0].= ' '.$words[0][0];
3324
-                    $str[1]+= $space+$words[0][1];
3325
-                }
3326
-                $str = $old;
3327
-
3328
-                // if  nothing fit on the line, and if the first word does not fit on the line => the word is too long, we put it
3329
-                if ($i==0 && (($left+$words[0][1])>=$right)) {
3330
-                    $str = $words[0];
3331
-                    array_shift($words);
3332
-                    $i++;
3333
-                    $add = true;
3334
-                }
3335
-                $currPos+= ($currPos ? 1 : 0)+strlen($str[0]);
3336
-
3337
-                // write the extract sentence that fit on the page
3338
-                $wc = ($align=='L' ? $str[1] : $this->parsingCss->value['width']);
3339
-                if ($right - $left<$wc) $wc = $right - $left;
3340
-
3341
-                if (strlen($str[0])) {
3342
-                    $this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3343
-                    $this->pdf->Cell($wc, $h, $str[0], 0, 0, $align, $fill, $this->_isInLink);
3344
-                    $this->pdf->setXY($this->pdf->getX(), $y);
3345
-                }
3346
-                $this->_maxH = max($this->_maxH, $lh);
3347
-
3348
-                // max width
3349
-                $maxX = max($maxX, $this->pdf->getX());
3350
-
3351
-                // new position and new width for the "while"
3352
-                $w-= $str[1];
3353
-                $y = $this->pdf->getY();
3354
-                $x = $this->pdf->getX();
3355
-                $dy = $this->_getElementY($lh);
3356
-
3357
-                // if we have again words to write
3358
-                if (count($words)) {
3359
-                    // remove the space at the end
3360
-                    if ($add) $w-= $space;
3361
-
3362
-                    // if we don't add any word, and if the first word is empty => useless space to skip
3363
-                    if (!$add && $words[0][0]==='') {
3364
-                        array_shift($words);
3365
-                    }
3366
-
3367
-                    // if it is just to calculate for one line => adding the number of words
3368
-                    if ($this->_isForOneLine) {
3369
-                        $this->_maxE+= $i;
3370
-                        $this->_maxX = max($this->_maxX, $maxX);
3371
-                        return null;
3372
-                    }
3373
-
3374
-                    // automatic line break
3375
-                    $this->_tag_open_BR(array('style' => ''), $currPos);
3376
-
3377
-                    // new position
3378
-                    $y = $this->pdf->getY();
3379
-                    $x = $this->pdf->getX();
3380
-                    $dy = $this->_getElementY($lh);
3381
-
3382
-                    // if the next line does  not fit on the page => new page
3383
-                    if ($y + $h>=$this->pdf->getH() - $this->pdf->getbMargin()) {
3384
-                        if (!$this->_isInOverflow && !$this->_isInFooter) {
3385
-                            $this->_setNewPage(null, '', null, $currPos);
3386
-                            $y = $this->pdf->getY();
3387
-                            $x = $this->pdf->getX();
3388
-                            $dy = $this->_getElementY($lh);
3389
-                        }
3390
-                    }
3391
-
3392
-                    // if more than 10000 line => error
3393
-                    $nb++;
3394
-                    if ($nb>10000) {
3395
-                        $txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3396
-                        throw new HTML2PDF_exception(2, array($txt, $right-$left, $w));
3397
-                    }
3398
-
3399
-                    // new margins for the new line
3400
-                    list($left, $right) = $this->_getMargins($y);
3401
-                }
3402
-            }
3403
-
3404
-            // if we have words after automatic cut, it is because they fit on the line => we write the text
3405
-            if (count($words)) {
3406
-                $txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3407
-                $w+= $this->pdf->getWordSpacing()*(count($words));
3408
-                $this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3409
-                $this->pdf->Cell(($align=='L' ? $w : $this->parsingCss->value['width']), $h, $txt, 0, 0, $align, $fill, $this->_isInLink);
3410
-                $this->pdf->setXY($this->pdf->getX(), $y);
3411
-                $this->_maxH = max($this->_maxH, $lh);
3412
-                $this->_maxE+= count($words);
3413
-            }
3414
-
3415
-            $maxX = max($maxX, $this->pdf->getX());
3416
-            $maxY = $this->pdf->getY()+$h;
3417
-
3418
-            $this->_maxX = max($this->_maxX, $maxX);
3419
-            $this->_maxY = max($this->_maxY, $maxY);
3420
-
3421
-            return true;
3422
-        }
3423
-
3424
-        /**
3425
-         * tag : BR
3426
-         * mode : OPEN
3427
-         *
3428
-         * @param  array   $param
3429
-         * @param  integer $curr real position in the html parseur (if break line in the write of a text)
3430
-         * @return boolean
3431
-         */
3432
-        protected function _tag_open_BR($param, $curr = null)
3433
-        {
3434
-            if ($this->_isForOneLine) return false;
3435
-
3436
-            $h = max($this->_maxH, $this->parsingCss->getLineHeight());
3437
-
3438
-            if ($this->_maxH==0) $this->_maxY = max($this->_maxY, $this->pdf->getY()+$h);
3439
-
3440
-            $this->_makeBreakLine($h, $curr);
3441
-
3442
-            $this->_maxH = 0;
3443
-            $this->_maxE = 0;
3444
-
3445
-            return true;
3446
-        }
3447
-
3448
-        /**
3449
-         * tag : HR
3450
-         * mode : OPEN
3451
-         *
3452
-         * @param  array $param
3453
-         * @return boolean
3454
-         */
3455
-        protected function _tag_open_HR($param)
3456
-        {
3457
-            if ($this->_isForOneLine) return false;
3458
-            $oldAlign = $this->parsingCss->value['text-align'];
3459
-            $this->parsingCss->value['text-align'] = 'left';
3460
-
3461
-            if ($this->_maxH) $this->_tag_open_BR($param);
3462
-
3463
-            $fontSize = $this->parsingCss->value['font-size'];
3464
-            $this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
3465
-            $this->parsingCss->value['font-size']=0;
3466
-
3467
-            $param['style']['width'] = '100%';
3468
-
3469
-            $this->parsingCss->save();
3470
-            $this->parsingCss->value['height']=$this->parsingCss->ConvertToMM('1mm');
3471
-
3472
-            $this->parsingCss->analyse('hr', $param);
3473
-            $this->parsingCss->setPosition();
3474
-            $this->parsingCss->fontSet();
3475
-
3476
-            $h = $this->parsingCss->value['height'];
3477
-            if ($h)    $h-= $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3478
-            if ($h<=0) $h = $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3479
-
3480
-            $this->_drawRectangle($this->pdf->getX(), $this->pdf->getY(), $this->parsingCss->value['width'], $h, $this->parsingCss->value['border'], 0, 0, $this->parsingCss->value['background']);
3481
-            $this->_maxH = $h;
3482
-
3483
-            $this->parsingCss->load();
3484
-            $this->parsingCss->fontSet();
3485
-
3486
-            $this->_tag_open_BR($param);
3487
-
3488
-            $this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
3489
-            $this->parsingCss->value['font-size']=$fontSize;
3490
-
3491
-            $this->parsingCss->value['text-align'] = $oldAlign;
3492
-            $this->_setNewPositionForNewLine();
3493
-
3494
-            return true;
3495
-        }
3496
-
3497
-        /**
3498
-         * tag : B
3499
-         * mode : OPEN
3500
-         *
3501
-         * @param  array $param
3502
-         * @param  string $other
3503
-         * @return boolean
3504
-         */
3505
-        protected function _tag_open_B($param, $other = 'b')
3506
-        {
3507
-            $this->parsingCss->save();
3508
-            $this->parsingCss->value['font-bold'] = true;
3509
-            $this->parsingCss->analyse($other, $param);
3510
-            $this->parsingCss->setPosition();
3511
-            $this->parsingCss->fontSet();
3512
-
3513
-            return true;
3514
-        }
3515
-
3516
-        /**
3517
-         * tag : STRONG
3518
-         * mode : OPEN
3519
-         *
3520
-         * @param  array $param
3521
-         * @return boolean
3522
-         */
3523
-        protected function _tag_open_STRONG($param)
3524
-        {
3525
-            return $this->_tag_open_B($param, 'strong');
3526
-        }
3527
-
3528
-        /**
3529
-         * tag : B
3530
-         * mode : CLOSE
3531
-         *
3532
-         * @param    array $param
3533
-         * @return boolean
3534
-         */
3535
-        protected function _tag_close_B($param)
3536
-        {
3537
-            $this->parsingCss->load();
3538
-            $this->parsingCss->fontSet();
3539
-
3540
-            return true;
3541
-        }
3542
-
3543
-        /**
3544
-         * tag : STRONG
3545
-         * mode : CLOSE
3546
-         *
3547
-         * @param  array $param
3548
-         * @return boolean
3549
-         */
3550
-        protected function _tag_close_STRONG($param)
3551
-        {
3552
-            return $this->_tag_close_B($param);
3553
-        }
3554
-
3555
-        /**
3556
-         * tag : I
3557
-         * mode : OPEN
3558
-         *
3559
-         * @param  array $param
3560
-         * @param  string $other
3561
-         * @return boolean
3562
-         */
3563
-        protected function _tag_open_I($param, $other = 'i')
3564
-        {
3565
-            $this->parsingCss->save();
3566
-            $this->parsingCss->value['font-italic'] = true;
3567
-            $this->parsingCss->analyse($other, $param);
3568
-            $this->parsingCss->setPosition();
3569
-            $this->parsingCss->fontSet();
3570
-
3571
-            return true;
3572
-        }
3573
-
3574
-        /**
3575
-         * tag : ADDRESS
3576
-         * mode : OPEN
3577
-         *
3578
-         * @param  array $param
3579
-         * @return boolean
3580
-         */
3581
-        protected function _tag_open_ADDRESS($param)
3582
-        {
3583
-            return $this->_tag_open_I($param, 'address');
3584
-        }
3585
-
3586
-        /**
3587
-         * tag : CITE
3588
-         * mode : OPEN
3589
-         *
3590
-         * @param  array $param
3591
-         * @return boolean
3592
-         */
3593
-        protected function _tag_open_CITE($param)
3594
-        {
3595
-            return $this->_tag_open_I($param, 'cite');
3596
-        }
3597
-
3598
-        /**
3599
-         * tag : EM
3600
-         * mode : OPEN
3601
-         *
3602
-         * @param  array $param
3603
-         * @return boolean
3604
-         */
3605
-        protected function _tag_open_EM($param)
3606
-        {
3607
-            return $this->_tag_open_I($param, 'em');
3608
-        }
3609
-
3610
-        /**
3611
-         * tag : SAMP
3612
-         * mode : OPEN
3613
-         *
3614
-         * @param  array $param
3615
-         * @return boolean
3616
-         */
3617
-        protected function _tag_open_SAMP($param)
3618
-        {
3619
-            return $this->_tag_open_I($param, 'samp');
3620
-        }
3621
-
3622
-        /**
3623
-         * tag : I
3624
-         * mode : CLOSE
3625
-         *
3626
-         * @param  array $param
3627
-         * @return boolean
3628
-         */
3629
-        protected function _tag_close_I($param)
3630
-        {
3631
-            $this->parsingCss->load();
3632
-            $this->parsingCss->fontSet();
3633
-
3634
-            return true;
3635
-        }
3636
-
3637
-        /**
3638
-         * tag : ADDRESS
3639
-         * mode : CLOSE
3640
-         *
3641
-         * @param  array $param
3642
-         * @return boolean
3643
-         */
3644
-        protected function _tag_close_ADDRESS($param)
3645
-        {
3646
-            return $this->_tag_close_I($param);
3647
-        }
3648
-
3649
-        /**
3650
-         * tag : CITE
3651
-         * mode : CLOSE
3652
-         *
3653
-         * @param  array $param
3654
-         * @return boolean
3655
-         */
3656
-        protected function _tag_close_CITE($param)
3657
-        {
3658
-            return $this->_tag_close_I($param);
3659
-        }
3660
-
3661
-        /**
3662
-         * tag : EM
3663
-         * mode : CLOSE
3664
-         *
3665
-         * @param  array $param
3666
-         * @return boolean
3667
-         */
3668
-        protected function _tag_close_EM($param)
3669
-        {
3670
-            return $this->_tag_close_I($param);
3671
-        }
3672
-
3673
-        /**
3674
-         * tag : SAMP
3675
-         * mode : CLOSE
3676
-         *
3677
-         * @param  array $param
3678
-         * @return boolean
3679
-         */
3680
-        protected function _tag_close_SAMP($param)
3681
-        {
3682
-            return $this->_tag_close_I($param);
3683
-        }
3684
-
3685
-        /**
3686
-         * tag : S
3687
-         * mode : OPEN
3688
-         *
3689
-         * @param  array $param
3690
-         * @param  string $other
3691
-         * @return boolean
3692
-         */
3693
-        protected function _tag_open_S($param, $other = 's')
3694
-        {
3695
-            $this->parsingCss->save();
3696
-            $this->parsingCss->value['font-linethrough'] = true;
3697
-            $this->parsingCss->analyse($other, $param);
3698
-            $this->parsingCss->setPosition();
3699
-            $this->parsingCss->fontSet();
3700
-
3701
-            return true;
3702
-        }
3703
-
3704
-        /**
3705
-         * tag : DEL
3706
-         * mode : OPEN
3707
-         *
3708
-         * @param  array $param
3709
-         * @return boolean
3710
-         */
3711
-        protected function _tag_open_DEL($param)
3712
-        {
3713
-            return $this->_tag_open_S($param, 'del');
3714
-        }
3715
-
3716
-        /**
3717
-         * tag : S
3718
-         * mode : CLOSE
3719
-         *
3720
-         * @param    array $param
3721
-         * @return boolean
3722
-         */
3723
-        protected function _tag_close_S($param)
3724
-        {
3725
-            $this->parsingCss->load();
3726
-            $this->parsingCss->fontSet();
3727
-
3728
-            return true;
3729
-        }
3730
-
3731
-        /**
3732
-         * tag : DEL
3733
-         * mode : CLOSE
3734
-         *
3735
-         * @param  array $param
3736
-         * @return boolean
3737
-         */
3738
-        protected function _tag_close_DEL($param)
3739
-        {
3740
-            return $this->_tag_close_S($param);
3741
-        }
3742
-
3743
-        /**
3744
-         * tag : U
3745
-         * mode : OPEN
3746
-         *
3747
-         * @param  array $param
3748
-         * @param  string $other
3749
-         * @return boolean
3750
-         */
3751
-        protected function _tag_open_U($param, $other='u')
3752
-        {
3753
-            $this->parsingCss->save();
3754
-            $this->parsingCss->value['font-underline'] = true;
3755
-            $this->parsingCss->analyse($other, $param);
3756
-            $this->parsingCss->setPosition();
3757
-            $this->parsingCss->fontSet();
3758
-
3759
-            return true;
3760
-        }
3761
-
3762
-        /**
3763
-         * tag : INS
3764
-         * mode : OPEN
3765
-         *
3766
-         * @param  array $param
3767
-         * @return boolean
3768
-         */
3769
-        protected function _tag_open_INS($param)
3770
-        {
3771
-            return $this->_tag_open_U($param, 'ins');
3772
-        }
3773
-
3774
-        /**
3775
-         * tag : U
3776
-         * mode : CLOSE
3777
-         *
3778
-         * @param    array $param
3779
-         * @return boolean
3780
-         */
3781
-        protected function _tag_close_U($param)
3782
-        {
3783
-            $this->parsingCss->load();
3784
-            $this->parsingCss->fontSet();
3785
-
3786
-            return true;
3787
-        }
3788
-
3789
-        /**
3790
-         * tag : INS
3791
-         * mode : CLOSE
3792
-         *
3793
-         * @param  array $param
3794
-         * @return boolean
3795
-         */
3796
-        protected function _tag_close_INS($param)
3797
-        {
3798
-            return $this->_tag_close_U($param);
3799
-        }
3800
-
3801
-        /**
3802
-         * tag : A
3803
-         * mode : OPEN
3804
-         *
3805
-         * @param  array $param
3806
-         * @return boolean
3807
-         */
3808
-        protected function _tag_open_A($param)
3809
-        {
3810
-            $this->_isInLink = str_replace('&amp;', '&', isset($param['href']) ? $param['href'] : '');
3811
-
3812
-            if (isset($param['name'])) {
3813
-                $name =     $param['name'];
3814
-                if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
3815
-
3816
-                if (!$this->_lstAnchor[$name][1]) {
3817
-                    $this->_lstAnchor[$name][1] = true;
3818
-                    $this->pdf->SetLink($this->_lstAnchor[$name][0], -1, -1);
3819
-                }
3820
-            }
3821
-
3822
-            if (preg_match('/^#([^#]+)$/isU', $this->_isInLink, $match)) {
3823
-                $name = $match[1];
3824
-                if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
3825
-
3826
-                $this->_isInLink = $this->_lstAnchor[$name][0];
3827
-            }
3828
-
3829
-            $this->parsingCss->save();
3830
-            $this->parsingCss->value['font-underline'] = true;
3831
-            $this->parsingCss->value['color'] = array(20, 20, 250);
3832
-            $this->parsingCss->analyse('a', $param);
3833
-            $this->parsingCss->setPosition();
3834
-            $this->parsingCss->fontSet();
3835
-
3836
-            return true;
3837
-        }
3838
-
3839
-        /**
3840
-         * tag : A
3841
-         * mode : CLOSE
3842
-         *
3843
-         * @param  array $param
3844
-         * @return boolean
3845
-         */
3846
-        protected function _tag_close_A($param)
3847
-        {
3848
-            $this->_isInLink    = '';
3849
-            $this->parsingCss->load();
3850
-            $this->parsingCss->fontSet();
3851
-
3852
-            return true;
3853
-        }
3854
-
3855
-        /**
3856
-         * tag : H1
3857
-         * mode : OPEN
3858
-         *
3859
-         * @param  array $param
3860
-         * @param  string $other
3861
-         * @return boolean
3862
-         */
3863
-        protected function _tag_open_H1($param, $other = 'h1')
3864
-        {
3865
-            if ($this->_isForOneLine) return false;
3866
-
3867
-            if ($this->_maxH) $this->_tag_open_BR(array());
3868
-            $this->parsingCss->save();
3869
-            $this->parsingCss->value['font-bold'] = true;
3870
-
3871
-            $size = array('h1' => '28px', 'h2' => '24px', 'h3' => '20px', 'h4' => '16px', 'h5' => '12px', 'h6' => '9px');
3872
-            $this->parsingCss->value['margin']['l'] = 0;
3873
-            $this->parsingCss->value['margin']['r'] = 0;
3874
-            $this->parsingCss->value['margin']['t'] = $this->parsingCss->ConvertToMM('16px');
3875
-            $this->parsingCss->value['margin']['b'] = $this->parsingCss->ConvertToMM('16px');
3876
-            $this->parsingCss->value['font-size'] = $this->parsingCss->ConvertToMM($size[$other]);
3877
-
3878
-            $this->parsingCss->analyse($other, $param);
3879
-            $this->parsingCss->setPosition();
3880
-            $this->parsingCss->fontSet();
3881
-            $this->_setNewPositionForNewLine();
3882
-
3883
-            return true;
3884
-        }
3885
-
3886
-        /**
3887
-         * tag : H2
3888
-         * mode : OPEN
3889
-         *
3890
-         * @param  array $param
3891
-         * @return boolean
3892
-         */
3893
-        protected function _tag_open_H2($param)
3894
-        {
3895
-            return $this->_tag_open_H1($param, 'h2');
3896
-        }
3897
-
3898
-        /**
3899
-         * tag : H3
3900
-         * mode : OPEN
3901
-         *
3902
-         * @param  array $param
3903
-         * @return boolean
3904
-         */
3905
-        protected function _tag_open_H3($param)
3906
-        {
3907
-            return $this->_tag_open_H1($param, 'h3');
3908
-        }
3909
-
3910
-        /**
3911
-         * tag : H4
3912
-         * mode : OPEN
3913
-         *
3914
-         * @param  array $param
3915
-         * @return boolean
3916
-         */
3917
-        protected function _tag_open_H4($param)
3918
-        {
3919
-            return $this->_tag_open_H1($param, 'h4');
3920
-        }
3921
-
3922
-        /**
3923
-         * tag : H5
3924
-         * mode : OPEN
3925
-         *
3926
-         * @param  array $param
3927
-         * @return boolean
3928
-         */
3929
-        protected function _tag_open_H5($param)
3930
-        {
3931
-            return $this->_tag_open_H1($param, 'h5');
3932
-        }
3933
-
3934
-        /**
3935
-         * tag : H6
3936
-         * mode : OPEN
3937
-         *
3938
-         * @param  array $param
3939
-         * @return boolean
3940
-         */
3941
-        protected function _tag_open_H6($param)
3942
-        {
3943
-            return $this->_tag_open_H1($param, 'h6');
3944
-        }
3945
-
3946
-        /**
3947
-         * tag : H1
3948
-         * mode : CLOSE
3949
-         *
3950
-         * @param  array $param
3951
-         * @return boolean
3952
-         */
3953
-        protected function _tag_close_H1($param)
3954
-        {
3955
-            if ($this->_isForOneLine) return false;
3956
-
3957
-            $this->_maxH+= $this->parsingCss->value['margin']['b'];
3958
-            $h = max($this->_maxH, $this->parsingCss->getLineHeight());
3959
-
3960
-            $this->parsingCss->load();
3961
-            $this->parsingCss->fontSet();
3962
-
3963
-            $this->_makeBreakLine($h);
3964
-            $this->_maxH = 0;
3965
-
3966
-            $this->_maxY = max($this->_maxY, $this->pdf->getY());
3967
-
3968
-            return true;
3969
-        }
3970
-
3971
-        /**
3972
-         * tag : H2
3973
-         * mode : CLOSE
3974
-         *
3975
-         * @param  array $param
3976
-         * @return boolean
3977
-         */
3978
-        protected function _tag_close_H2($param)
3979
-        {
3980
-            return $this->_tag_close_H1($param);
3981
-        }
3982
-
3983
-        /**
3984
-         * tag : H3
3985
-         * mode : CLOSE
3986
-         *
3987
-         * @param  array $param
3988
-         * @return boolean
3989
-         */
3990
-        protected function _tag_close_H3($param)
3991
-        {
3992
-            return $this->_tag_close_H1($param);
3993
-        }
3994
-
3995
-        /**
3996
-         * tag : H4
3997
-         * mode : CLOSE
3998
-         *
3999
-         * @param  array $param
4000
-         * @return boolean
4001
-         */
4002
-        protected function _tag_close_H4($param)
4003
-        {
4004
-            return $this->_tag_close_H1($param);
4005
-        }
4006
-
4007
-        /**
4008
-         * tag : H5
4009
-         * mode : CLOSE
4010
-         *
4011
-         * @param  array $param
4012
-         * @return boolean
4013
-         */
4014
-        protected function _tag_close_H5($param)
4015
-        {
4016
-            return $this->_tag_close_H1($param);
4017
-        }
4018
-
4019
-        /**
4020
-         * tag : H6
4021
-         * mode : CLOSE
4022
-         *
4023
-         * @param  array $param
4024
-         * @return boolean
4025
-         */
4026
-        protected function _tag_close_H6($param)
4027
-        {
4028
-            return $this->_tag_close_H1($param);
4029
-        }
4030
-
4031
-        /**
4032
-         * tag : SPAN
4033
-         * mode : OPEN
4034
-         *
4035
-         * @param  array $param
4036
-         * @param  string $other
4037
-         * @return boolean
4038
-         */
4039
-        protected function _tag_open_SPAN($param, $other = 'span')
4040
-        {
4041
-            $this->parsingCss->save();
4042
-            $this->parsingCss->analyse($other, $param);
4043
-            $this->parsingCss->setPosition();
4044
-            $this->parsingCss->fontSet();
4045
-
4046
-            return true;
4047
-        }
4048
-
4049
-        /**
4050
-         * tag : FONT
4051
-         * mode : OPEN
4052
-         *
4053
-         * @param  array $param
4054
-         * @return boolean
4055
-         */
4056
-        protected function _tag_open_FONT($param)
4057
-        {
4058
-            return $this->_tag_open_SPAN($param, 'font');
4059
-        }
4060
-
4061
-        /**
4062
-         * tag : LABEL
4063
-         * mode : OPEN
4064
-         *
4065
-         * @param  array $param
4066
-         * @return boolean
4067
-         */
4068
-        protected function _tag_open_LABEL($param)
4069
-        {
4070
-            return $this->_tag_open_SPAN($param, 'label');
4071
-        }
4072
-
4073
-        /**
4074
-         * tag : SPAN
4075
-         * mode : CLOSE
4076
-         *
4077
-         * @param  array $param
4078
-         * @return boolean
4079
-         */
4080
-        protected function _tag_close_SPAN($param)
4081
-        {
4082
-            $this->parsingCss->restorePosition();
4083
-            $this->parsingCss->load();
4084
-            $this->parsingCss->fontSet();
4085
-
4086
-            return true;
4087
-        }
4088
-
4089
-        /**
4090
-         * tag : FONT
4091
-         * mode : CLOSE
4092
-         *
4093
-         * @param  array $param
4094
-         * @return boolean
4095
-         */
4096
-        protected function _tag_close_FONT($param)
4097
-        {
4098
-            return $this->_tag_close_SPAN($param);
4099
-        }
4100
-
4101
-        /**
4102
-         * tag : LABEL
4103
-         * mode : CLOSE
4104
-         *
4105
-         * @param  array $param
4106
-         * @return boolean
4107
-         */
4108
-        protected function _tag_close_LABEL($param)
4109
-        {
4110
-            return $this->_tag_close_SPAN($param);
4111
-        }
4112
-
4113
-        /**
4114
-         * tag : P
4115
-         * mode : OPEN
4116
-         *
4117
-         * @param    array $param
4118
-         * @return boolean
4119
-         */
4120
-        protected function _tag_open_P($param)
4121
-        {
4122
-            if ($this->_isForOneLine) return false;
4123
-
4124
-            if (!in_array($this->_previousCall, array('_tag_close_P', '_tag_close_UL'))) {
4125
-                if ($this->_maxH) $this->_tag_open_BR(array());
4126
-            }
4127
-
4128
-            $this->parsingCss->save();
4129
-            $this->parsingCss->analyse('p', $param);
4130
-            $this->parsingCss->setPosition();
4131
-            $this->parsingCss->fontSet();
4132
-
4133
-             // cancel the effects of the setPosition
4134
-            $this->pdf->setXY($this->pdf->getX()-$this->parsingCss->value['margin']['l'], $this->pdf->getY()-$this->parsingCss->value['margin']['t']);
4135
-
4136
-            list($mL, $mR) = $this->_getMargins($this->pdf->getY());
4137
-            $mR = $this->pdf->getW()-$mR;
4138
-            $mL+= $this->parsingCss->value['margin']['l']+$this->parsingCss->value['padding']['l'];
4139
-            $mR+= $this->parsingCss->value['margin']['r']+$this->parsingCss->value['padding']['r'];
4140
-            $this->_saveMargin($mL, 0, $mR);
4141
-
4142
-            if ($this->parsingCss->value['text-indent']>0) {
4143
-                $y = $this->pdf->getY()+$this->parsingCss->value['margin']['t']+$this->parsingCss->value['padding']['t'];
4144
-                $this->_pageMarges[floor($y*100)] = array($mL+$this->parsingCss->value['text-indent'], $this->pdf->getW()-$mR);
4145
-                $y+= $this->parsingCss->getLineHeight()*0.1;
4146
-                $this->_pageMarges[floor($y*100)] = array($mL, $this->pdf->getW()-$mR);
4147
-            }
4148
-            $this->_makeBreakLine($this->parsingCss->value['margin']['t']+$this->parsingCss->value['padding']['t']);
4149
-            $this->_isInParagraph = array($mL, $mR);
4150
-            return true;
4151
-        }
4152
-
4153
-        /**
4154
-         * tag : P
4155
-         * mode : CLOSE
4156
-         *
4157
-         * @param  array $param
4158
-         * @return boolean
4159
-         */
4160
-        protected function _tag_close_P($param)
4161
-        {
4162
-            if ($this->_isForOneLine) return false;
4163
-
4164
-            if ($this->_maxH) $this->_tag_open_BR(array());
4165
-            $this->_isInParagraph = false;
4166
-            $this->_loadMargin();
4167
-            $h = $this->parsingCss->value['margin']['b']+$this->parsingCss->value['padding']['b'];
4168
-
4169
-            $this->parsingCss->load();
4170
-            $this->parsingCss->fontSet();
4171
-            $this->_makeBreakLine($h);
4172
-
4173
-            return true;
4174
-        }
4175
-
4176
-        /**
4177
-         * tag : PRE
4178
-         * mode : OPEN
4179
-         *
4180
-         * @param  array $param
4181
-         * @param  string $other
4182
-         * @return boolean
4183
-         */
4184
-        protected function _tag_open_PRE($param, $other = 'pre')
4185
-        {
4186
-            if ($other=='pre' && $this->_maxH) $this->_tag_open_BR(array());
4187
-
4188
-            $this->parsingCss->save();
4189
-            $this->parsingCss->value['font-family'] = 'courier';
4190
-            $this->parsingCss->analyse($other, $param);
4191
-            $this->parsingCss->setPosition();
4192
-            $this->parsingCss->fontSet();
4193
-
4194
-            if ($other=='pre') return $this->_tag_open_DIV($param, $other);
4195
-
4196
-            return true;
4197
-        }
4198
-
4199
-        /**
4200
-         * tag : CODE
4201
-         * mode : OPEN
4202
-         *
4203
-         * @param  array $param
4204
-         * @param  string $other
4205
-         * @return boolean
4206
-         */
4207
-        protected function _tag_open_CODE($param)
4208
-        {
4209
-            return $this->_tag_open_PRE($param, 'code');
4210
-        }
4211
-
4212
-        /**
4213
-         * tag : PRE
4214
-         * mode : CLOSE
4215
-         *
4216
-         * @param  array $param
4217
-         * @param  string $other
4218
-         * @return boolean
4219
-         */
4220
-        protected function _tag_close_PRE($param, $other = 'pre')
4221
-        {
4222
-            if ($other=='pre') {
4223
-                if ($this->_isForOneLine) return false;
4224
-
4225
-                $this->_tag_close_DIV($param, $other);
4226
-                $this->_tag_open_BR(array());
4227
-            }
4228
-            $this->parsingCss->load();
4229
-            $this->parsingCss->fontSet();
4230
-
4231
-            return true;
4232
-        }
4233
-
4234
-        /**
4235
-         * tag : CODE
4236
-         * mode : CLOSE
4237
-         *
4238
-         * @param  array $param
4239
-         * @return boolean
4240
-         */
4241
-        protected function _tag_close_CODE($param)
4242
-        {
4243
-            return $this->_tag_close_PRE($param, 'code');
4244
-        }
4245
-
4246
-        /**
4247
-         * tag : BIG
4248
-         * mode : OPEN
4249
-         *
4250
-         * @param    array $param
4251
-         * @return boolean
4252
-         */
4253
-        protected function _tag_open_BIG($param)
4254
-        {
4255
-            $this->parsingCss->save();
4256
-            $this->parsingCss->value['mini-decal']-= $this->parsingCss->value['mini-size']*0.12;
4257
-            $this->parsingCss->value['mini-size'] *= 1.2;
4258
-            $this->parsingCss->analyse('big', $param);
4259
-            $this->parsingCss->setPosition();
4260
-            $this->parsingCss->fontSet();
4261
-            return true;
4262
-        }
4263
-
4264
-        /**
4265
-         * tag : BIG
4266
-         * mode : CLOSE
4267
-         *
4268
-         * @param    array $param
4269
-         * @return boolean
4270
-         */
4271
-        protected function _tag_close_BIG($param)
4272
-        {
4273
-            $this->parsingCss->load();
4274
-            $this->parsingCss->fontSet();
4275
-
4276
-            return true;
4277
-        }
4278
-
4279
-        /**
4280
-         * tag : SMALL
4281
-         * mode : OPEN
4282
-         *
4283
-         * @param    array $param
4284
-         * @return boolean
4285
-         */
4286
-        protected function _tag_open_SMALL($param)
4287
-        {
4288
-            $this->parsingCss->save();
4289
-            $this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.05;
4290
-            $this->parsingCss->value['mini-size'] *= 0.82;
4291
-            $this->parsingCss->analyse('small', $param);
4292
-            $this->parsingCss->setPosition();
4293
-            $this->parsingCss->fontSet();
4294
-            return true;
4295
-        }
4296
-
4297
-        /**
4298
-         * tag : SMALL
4299
-         * mode : CLOSE
4300
-         *
4301
-         * @param    array $param
4302
-         * @return boolean
4303
-         */
4304
-        protected function _tag_close_SMALL($param)
4305
-        {
4306
-            $this->parsingCss->load();
4307
-            $this->parsingCss->fontSet();
4308
-
4309
-            return true;
4310
-        }
4311
-
4312
-        /**
4313
-         * tag : SUP
4314
-         * mode : OPEN
4315
-         *
4316
-         * @param    array $param
4317
-         * @return boolean
4318
-         */
4319
-        protected function _tag_open_SUP($param)
4320
-        {
4321
-            $this->parsingCss->save();
4322
-            $this->parsingCss->value['mini-decal']-= $this->parsingCss->value['mini-size']*0.15;
4323
-            $this->parsingCss->value['mini-size'] *= 0.75;
4324
-            $this->parsingCss->analyse('sup', $param);
4325
-            $this->parsingCss->setPosition();
4326
-            $this->parsingCss->fontSet();
4327
-
4328
-            return true;
4329
-        }
4330
-
4331
-        /**
4332
-         * tag : SUP
4333
-         * mode : CLOSE
4334
-         *
4335
-         * @param    array $param
4336
-         * @return boolean
4337
-         */
4338
-        protected function _tag_close_SUP($param)
4339
-        {
4340
-            $this->parsingCss->load();
4341
-            $this->parsingCss->fontSet();
4342
-
4343
-            return true;
4344
-        }
4345
-
4346
-        /**
4347
-         * tag : SUB
4348
-         * mode : OPEN
4349
-         *
4350
-         * @param    array $param
4351
-         * @return boolean
4352
-         */
4353
-        protected function _tag_open_SUB($param)
4354
-        {
4355
-            $this->parsingCss->save();
4356
-            $this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.15;
4357
-            $this->parsingCss->value['mini-size'] *= 0.75;
4358
-            $this->parsingCss->analyse('sub', $param);
4359
-            $this->parsingCss->setPosition();
4360
-            $this->parsingCss->fontSet();
4361
-            return true;
4362
-        }
4363
-
4364
-        /**
4365
-         * tag : SUB
4366
-         * mode : CLOSE
4367
-         *
4368
-         * @param    array $param
4369
-         * @return boolean
4370
-         */
4371
-        protected function _tag_close_SUB($param)
4372
-        {
4373
-            $this->parsingCss->load();
4374
-            $this->parsingCss->fontSet();
4375
-
4376
-            return true;
4377
-        }
4378
-
4379
-        /**
4380
-         * tag : UL
4381
-         * mode : OPEN
4382
-         *
4383
-         * @param  array $param
4384
-         * @param  string $other
4385
-         * @return boolean
4386
-         */
4387
-        protected function _tag_open_UL($param, $other = 'ul')
4388
-        {
4389
-            if ($this->_isForOneLine) return false;
4390
-
4391
-            if (!in_array($this->_previousCall, array('_tag_close_P', '_tag_close_UL'))) {
4392
-                if ($this->_maxH) $this->_tag_open_BR(array());
4393
-                if (!count($this->_defList)) $this->_tag_open_BR(array());
4394
-            }
4395
-
4396
-            if (!isset($param['style']['width'])) $param['allwidth'] = true;
4397
-            $param['cellspacing'] = 0;
4398
-
4399
-            // a list is like a table
4400
-            $this->_tag_open_TABLE($param, $other);
4401
-
4402
-            // add a level of list
4403
-            $this->_listeAddLevel($other, $this->parsingCss->value['list-style-type'], $this->parsingCss->value['list-style-image']);
4404
-
4405
-            return true;
4406
-        }
4407
-
4408
-        /**
4409
-         * tag : OL
4410
-         * mode : OPEN
4411
-         *
4412
-         * @param  array $param
4413
-         * @return boolean
4414
-         */
4415
-        protected function _tag_open_OL($param)
4416
-        {
4417
-            return $this->_tag_open_UL($param, 'ol');
4418
-        }
4419
-
4420
-        /**
4421
-         * tag : UL
4422
-         * mode : CLOSE
4423
-         *
4424
-         * @param  array $param
4425
-         * @return boolean
4426
-         */
4427
-        protected function _tag_close_UL($param)
4428
-        {
4429
-            if ($this->_isForOneLine) return false;
4430
-
4431
-            $this->_tag_close_TABLE($param);
4432
-
4433
-            $this->_listeDelLevel();
4434
-
4435
-            if (!$this->_subPart) {
4436
-                if (!count($this->_defList)) $this->_tag_open_BR(array());
4437
-            }
4438
-
4439
-            return true;
4440
-        }
4441
-
4442
-        /**
4443
-         * tag : OL
4444
-         * mode : CLOSE
4445
-         *
4446
-         * @param  array $param
4447
-         * @return boolean
4448
-         */
4449
-        protected function _tag_close_OL($param)
4450
-        {
4451
-            return $this->_tag_close_UL($param);
4452
-        }
4453
-
4454
-        /**
4455
-         * tag : LI
4456
-         * mode : OPEN
4457
-         *
4458
-         * @param  array $param
4459
-         * @return boolean
4460
-         */
4461
-        protected function _tag_open_LI($param)
4462
-        {
4463
-            if ($this->_isForOneLine) return false;
4464
-
4465
-            $this->_listeAddLi();
4466
-
4467
-            if (!isset($param['style']['width'])) $param['style']['width'] = '100%';
4468
-
4469
-            $paramPUCE = $param;
4470
-
4471
-            $inf = $this->_listeGetLi();
4472
-            if ($inf[0]) {
4473
-                $paramPUCE['style']['font-family']     = $inf[0];
4474
-                $paramPUCE['style']['text-align']      = 'li_right';
4475
-                $paramPUCE['style']['vertical-align']  = 'top';
4476
-                $paramPUCE['style']['width']           = $this->_listeGetWidth();
4477
-                $paramPUCE['style']['padding-right']   = $this->_listeGetPadding();
4478
-                $paramPUCE['txt'] = $inf[2];
4479
-            } else {
4480
-                $paramPUCE['style']['text-align']      = 'li_right';
4481
-                $paramPUCE['style']['vertical-align']  = 'top';
4482
-                $paramPUCE['style']['width']           = $this->_listeGetWidth();
4483
-                $paramPUCE['style']['padding-right']   = $this->_listeGetPadding();
4484
-                $paramPUCE['src'] = $inf[2];
4485
-                $paramPUCE['sub_li'] = true;
4486
-            }
4487
-
4488
-            $this->_tag_open_TR($param, 'li');
4489
-
4490
-            $this->parsingCss->save();
4491
-
4492
-            // if small LI
4493
-            if ($inf[1]) {
4494
-                $this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.045;
4495
-                $this->parsingCss->value['mini-size'] *= 0.75;
4496
-            }
4497
-
4498
-            // if we are in a sub html => prepare. Else : display
4499
-            if ($this->_subPart) {
4500
-                // TD for the puce
4501
-                $tmpPos = $this->_tempPos;
4502
-                $tmpLst1 = $this->parsingHtml->code[$tmpPos+1];
4503
-                $tmpLst2 = $this->parsingHtml->code[$tmpPos+2];
4504
-                $this->parsingHtml->code[$tmpPos+1] = array();
4505
-                $this->parsingHtml->code[$tmpPos+1]['name']    = (isset($paramPUCE['src'])) ? 'img' : 'write';
4506
-                $this->parsingHtml->code[$tmpPos+1]['param']    = $paramPUCE; unset($this->parsingHtml->code[$tmpPos+1]['param']['style']['width']);
4507
-                $this->parsingHtml->code[$tmpPos+1]['close']    = 0;
4508
-                $this->parsingHtml->code[$tmpPos+2] = array();
4509
-                $this->parsingHtml->code[$tmpPos+2]['name']    = 'li';
4510
-                $this->parsingHtml->code[$tmpPos+2]['param']    = $paramPUCE;
4511
-                $this->parsingHtml->code[$tmpPos+2]['close']    = 1;
4512
-                $this->_tag_open_TD($paramPUCE, 'li_sub');
4513
-                $this->_tag_close_TD($param);
4514
-                $this->_tempPos = $tmpPos;
4515
-                $this->parsingHtml->code[$tmpPos+1] = $tmpLst1;
4516
-                $this->parsingHtml->code[$tmpPos+2] = $tmpLst2;
4517
-            } else {
4518
-                // TD for the puce
4519
-                $this->_tag_open_TD($paramPUCE, 'li_sub');
4520
-                unset($paramPUCE['style']['width']);
4521
-                if (isset($paramPUCE['src']))    $this->_tag_open_IMG($paramPUCE);
4522
-                else                            $this->_tag_open_WRITE($paramPUCE);
4523
-                $this->_tag_close_TD($paramPUCE);
4524
-            }
4525
-            $this->parsingCss->load();
4526
-
4527
-
4528
-            // TD for the content
4529
-            $this->_tag_open_TD($param, 'li');
4530
-
4531
-            return true;
4532
-        }
4533
-
4534
-        /**
4535
-         * tag : LI
4536
-         * mode : CLOSE
4537
-         *
4538
-         * @param  array $param
4539
-         * @return boolean
4540
-         */
4541
-        protected function _tag_close_LI($param)
4542
-        {
4543
-            if ($this->_isForOneLine) return false;
4544
-
4545
-            $this->_tag_close_TD($param);
4546
-
4547
-            $this->_tag_close_TR($param);
4548
-
4549
-            return true;
4550
-        }
4551
-
4552
-        /**
4553
-         * tag : TBODY
4554
-         * mode : OPEN
4555
-         *
4556
-         * @param  array $param
4557
-         * @return boolean
4558
-         */
4559
-        protected function _tag_open_TBODY($param)
4560
-        {
4561
-            if ($this->_isForOneLine) return false;
4562
-
4563
-            $this->parsingCss->save();
4564
-            $this->parsingCss->analyse('tbody', $param);
4565
-            $this->parsingCss->setPosition();
4566
-            $this->parsingCss->fontSet();
4567
-
4568
-            return true;
4569
-        }
4570
-
4571
-        /**
4572
-         * tag : TBODY
4573
-         * mode : CLOSE
4574
-         *
4575
-         * @param  array $param
4576
-         * @return boolean
4577
-         */
4578
-        protected function _tag_close_TBODY($param)
4579
-        {
4580
-            if ($this->_isForOneLine) return false;
4581
-
4582
-            $this->parsingCss->load();
4583
-            $this->parsingCss->fontSet();
4584
-
4585
-            return true;
4586
-        }
4587
-
4588
-        /**
4589
-         * tag : THEAD
4590
-         * mode : OPEN
4591
-         *
4592
-         * @param  array $param
4593
-         * @return boolean
4594
-         */
4595
-        protected function _tag_open_THEAD($param)
4596
-        {
4597
-            if ($this->_isForOneLine) return false;
4598
-
4599
-            $this->parsingCss->save();
4600
-            $this->parsingCss->analyse('thead', $param);
4601
-            $this->parsingCss->setPosition();
4602
-            $this->parsingCss->fontSet();
4603
-
4604
-            // if we are in a sub part, save the number of the first TR in the thead
4605
-            if ($this->_subPart) {
4606
-                HTML2PDF::$_tables[$param['num']]['thead']['tr'][0] = HTML2PDF::$_tables[$param['num']]['tr_curr'];
4607
-                HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();
4608
-                for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4609
-                    $action = $this->parsingHtml->code[$pos];
4610
-                    if (strtolower($action['name'])=='thead') $action['name'] = 'thead_sub';
4611
-                    HTML2PDF::$_tables[$param['num']]['thead']['code'][] = $action;
4612
-                    if (strtolower($action['name'])=='thead_sub' && $action['close']) break;
4613
-                }
4614
-            } else {
4615
-                $level = $this->parsingHtml->getLevel($this->_parsePos);
4616
-                $this->_parsePos+= count($level);
4617
-                HTML2PDF::$_tables[$param['num']]['tr_curr']+= count(HTML2PDF::$_tables[$param['num']]['thead']['tr']);
4618
-            }
4619
-
4620
-            return true;
4621
-        }
4622
-
4623
-        /**
4624
-         * tag : THEAD
4625
-         * mode : CLOSE
4626
-         *
4627
-         * @param  array $param
4628
-         * @return boolean
4629
-         */
4630
-        protected function _tag_close_THEAD($param)
4631
-        {
4632
-            if ($this->_isForOneLine) return false;
4633
-
4634
-            $this->parsingCss->load();
4635
-            $this->parsingCss->fontSet();
4636
-
4637
-            // if we are in a sub HTM, construct the list of the TR in the thead
4638
-            if ($this->_subPart) {
4639
-                $min = HTML2PDF::$_tables[$param['num']]['thead']['tr'][0];
4640
-                $max = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
4641
-                HTML2PDF::$_tables[$param['num']]['thead']['tr'] = range($min, $max);
4642
-            }
4643
-
4644
-            return true;
4645
-        }
4646
-
4647
-        /**
4648
-         * tag : TFOOT
4649
-         * mode : OPEN
4650
-         *
4651
-         * @param  array $param
4652
-         * @return boolean
4653
-         */
4654
-        protected function _tag_open_TFOOT($param)
4655
-        {
4656
-            if ($this->_isForOneLine) return false;
4657
-
4658
-            $this->parsingCss->save();
4659
-            $this->parsingCss->analyse('tfoot', $param);
4660
-            $this->parsingCss->setPosition();
4661
-            $this->parsingCss->fontSet();
4662
-
4663
-            // if we are in a sub part, save the number of the first TR in the tfoot
4664
-            if ($this->_subPart) {
4665
-                HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0] = HTML2PDF::$_tables[$param['num']]['tr_curr'];
4666
-                HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();
4667
-                for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4668
-                    $action = $this->parsingHtml->code[$pos];
4669
-                    if (strtolower($action['name'])=='tfoot') $action['name'] = 'tfoot_sub';
4670
-                    HTML2PDF::$_tables[$param['num']]['tfoot']['code'][] = $action;
4671
-                    if (strtolower($action['name'])=='tfoot_sub' && $action['close']) break;
4672
-                }
4673
-            } else {
4674
-                $level = $this->parsingHtml->getLevel($this->_parsePos);
4675
-                $this->_parsePos+= count($level);
4676
-                HTML2PDF::$_tables[$param['num']]['tr_curr']+= count(HTML2PDF::$_tables[$param['num']]['tfoot']['tr']);
4677
-            }
4678
-
4679
-            return true;
4680
-        }
4681
-
4682
-        /**
4683
-         * tag : TFOOT
4684
-         * mode : CLOSE
4685
-         *
4686
-         * @param  array $param
4687
-         * @return boolean
4688
-         */
4689
-        protected function _tag_close_TFOOT($param)
4690
-        {
4691
-            if ($this->_isForOneLine) return false;
4692
-
4693
-            $this->parsingCss->load();
4694
-            $this->parsingCss->fontSet();
4695
-
4696
-            // if we are in a sub HTM, construct the list of the TR in the tfoot
4697
-            if ($this->_subPart) {
4698
-                $min = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
4699
-                $max = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
4700
-                HTML2PDF::$_tables[$param['num']]['tfoot']['tr'] = range($min, $max);
4701
-            }
4702
-
4703
-            return true;
4704
-        }
4705
-
4706
-        /**
4707
-         * It is not a real TAG, does not use it !
4708
-         *
4709
-         * @param  array $param
4710
-         * @return boolean
4711
-         */
4712
-        protected function _tag_open_THEAD_SUB($param)
4713
-        {
4714
-            if ($this->_isForOneLine) return false;
4715
-
4716
-            $this->parsingCss->save();
4717
-            $this->parsingCss->analyse('thead', $param);
4718
-            $this->parsingCss->setPosition();
4719
-            $this->parsingCss->fontSet();
4720
-
4721
-            return true;
4722
-        }
4723
-
4724
-        /**
4725
-         * It is not a real TAG, does not use it !
4726
-         *
4727
-         * @param  array $param
4728
-         * @return boolean
4729
-         */
4730
-        protected function _tag_close_THEAD_SUB($param)
4731
-        {
4732
-            if ($this->_isForOneLine) return false;
4733
-
4734
-            $this->parsingCss->load();
4735
-            $this->parsingCss->fontSet();
4736
-
4737
-            return true;
4738
-        }
4739
-
4740
-        /**
4741
-         * It is not a real TAG, does not use it !
4742
-         *
4743
-         * @param    array $param
4744
-         * @return boolean
4745
-         */
4746
-        protected function _tag_open_TFOOT_SUB($param)
4747
-        {
4748
-            if ($this->_isForOneLine) return false;
4749
-
4750
-            $this->parsingCss->save();
4751
-            $this->parsingCss->analyse('tfoot', $param);
4752
-            $this->parsingCss->setPosition();
4753
-            $this->parsingCss->fontSet();
4754
-
4755
-            return true;
4756
-        }
4757
-
4758
-        /**
4759
-         * It is not a real TAG, does not use it !
4760
-         *
4761
-         * @param  array $param
4762
-         * @return boolean
4763
-         */
4764
-        protected function _tag_close_TFOOT_SUB($param)
4765
-        {
4766
-            if ($this->_isForOneLine) return false;
4767
-
4768
-            $this->parsingCss->load();
4769
-            $this->parsingCss->fontSet();
4770
-
4771
-            return true;
4772
-        }
4773
-
4774
-        /**
4775
-         * tag : FORM
4776
-         * mode : OPEN
4777
-         *
4778
-         * @param  array $param
4779
-         * @return boolean
4780
-         */
4781
-        protected function _tag_open_FORM($param)
4782
-        {
4783
-            $this->parsingCss->save();
4784
-            $this->parsingCss->analyse('form', $param);
4785
-            $this->parsingCss->setPosition();
4786
-            $this->parsingCss->fontSet();
4787
-
4788
-            $this->pdf->setFormDefaultProp(
4789
-                array(
4790
-                    'lineWidth'=>1,
4791
-                    'borderStyle'=>'solid',
4792
-                    'fillColor'=>array(220, 220, 255),
4793
-                    'strokeColor'=>array(128, 128, 200)
4794
-                )
4795
-            );
4796
-
4797
-            $this->_isInForm = isset($param['action']) ? $param['action'] : '';
4798
-
4799
-            return true;
4800
-        }
4801
-
4802
-        /**
4803
-         * tag : FORM
4804
-         * mode : CLOSE
4805
-         *
4806
-         * @param  array $param
4807
-         * @return boolean
4808
-         */
4809
-        protected function _tag_close_FORM($param)
4810
-        {
4811
-            $this->_isInForm = false;
4812
-            $this->parsingCss->load();
4813
-            $this->parsingCss->fontSet();
4814
-
4815
-            return true;
4816
-        }
4817
-
4818
-        /**
4819
-         * tag : TABLE
4820
-         * mode : OPEN
4821
-         *
4822
-         * @param  array $param
4823
-         * @return boolean
4824
-         */
4825
-        protected function _tag_open_TABLE($param, $other = 'table')
4826
-        {
4827
-            if ($this->_maxH) {
4828
-                if ($this->_isForOneLine) return false;
4829
-                $this->_tag_open_BR(array());
4830
-            }
4831
-
4832
-            if ($this->_isForOneLine) {
4833
-                $this->_maxX = $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
4834
-                return false;
4835
-            }
4836
-
4837
-            $this->_maxH = 0;
4838
-
4839
-            $alignObject = isset($param['align']) ? strtolower($param['align']) : 'left';
4840
-            if (isset($param['align'])) unset($param['align']);
4841
-            if (!in_array($alignObject, array('left', 'center', 'right'))) $alignObject = 'left';
4842
-
4843
-            $this->parsingCss->save();
4844
-            $this->parsingCss->analyse($other, $param);
4845
-            $this->parsingCss->setPosition();
4846
-            $this->parsingCss->fontSet();
4847
-
4848
-            if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
4849
-
4850
-            // collapse table ?
4851
-            $collapse = false;
4852
-            if ($other=='table') {
4853
-                $collapse = isset($this->parsingCss->value['border']['collapse']) ? $this->parsingCss->value['border']['collapse'] : false;
4854
-            }
4855
-
4856
-            // if collapse => no borders for the table, only for TD
4857
-            if ($collapse) {
4858
-                $param['style']['border'] = 'none';
4859
-                $param['cellspacing'] = 0;
4860
-                $none = $this->parsingCss->readBorder('none');
4861
-                $this->parsingCss->value['border']['t'] = $none;
4862
-                $this->parsingCss->value['border']['r'] = $none;
4863
-                $this->parsingCss->value['border']['b'] = $none;
4864
-                $this->parsingCss->value['border']['l'] = $none;
4865
-            }
4866
-
4867
-            // if we are in a SUB html => prepare the properties of the table
4868
-            if ($this->_subPart) {
4869
-                if ($this->_debugActif) $this->_DEBUG_add('Table n'.$param['num'], true);
4870
-                HTML2PDF::$_tables[$param['num']] = array();
4871
-                HTML2PDF::$_tables[$param['num']]['border']          = isset($param['border']) ? $this->parsingCss->readBorder($param['border']) : null;
4872
-                HTML2PDF::$_tables[$param['num']]['cellpadding']     = $this->parsingCss->ConvertToMM(isset($param['cellpadding']) ? $param['cellpadding'] : '1px');
4873
-                HTML2PDF::$_tables[$param['num']]['cellspacing']     = $this->parsingCss->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px');
4874
-                HTML2PDF::$_tables[$param['num']]['cases']           = array();          // properties of each TR/TD
4875
-                HTML2PDF::$_tables[$param['num']]['corr']            = array();          // link between TR/TD and colspan/rowspan
4876
-                HTML2PDF::$_tables[$param['num']]['corr_x']          = 0;                // position in 'cases'
4877
-                HTML2PDF::$_tables[$param['num']]['corr_y']          = 0;                // position in 'cases'
4878
-                HTML2PDF::$_tables[$param['num']]['td_curr']         = 0;                // current column
4879
-                HTML2PDF::$_tables[$param['num']]['tr_curr']         = 0;                // current row
4880
-                HTML2PDF::$_tables[$param['num']]['curr_x']          = $this->pdf->getX();
4881
-                HTML2PDF::$_tables[$param['num']]['curr_y']          = $this->pdf->getY();
4882
-                HTML2PDF::$_tables[$param['num']]['width']           = 0;                // global width
4883
-                HTML2PDF::$_tables[$param['num']]['height']          = 0;                // global height
4884
-                HTML2PDF::$_tables[$param['num']]['align']           = $alignObject;
4885
-                HTML2PDF::$_tables[$param['num']]['marge']           = array();
4886
-                HTML2PDF::$_tables[$param['num']]['marge']['t']      = $this->parsingCss->value['padding']['t']+$this->parsingCss->value['border']['t']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4887
-                HTML2PDF::$_tables[$param['num']]['marge']['r']      = $this->parsingCss->value['padding']['r']+$this->parsingCss->value['border']['r']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4888
-                HTML2PDF::$_tables[$param['num']]['marge']['b']      = $this->parsingCss->value['padding']['b']+$this->parsingCss->value['border']['b']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4889
-                HTML2PDF::$_tables[$param['num']]['marge']['l']      = $this->parsingCss->value['padding']['l']+$this->parsingCss->value['border']['l']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4890
-                HTML2PDF::$_tables[$param['num']]['page']            = 0;                // number of pages
4891
-                HTML2PDF::$_tables[$param['num']]['new_page']        = true;             // flag : new page for the current TR
4892
-                HTML2PDF::$_tables[$param['num']]['style_value']     = null;             // CSS style of the table
4893
-                HTML2PDF::$_tables[$param['num']]['thead']           = array();          // properties on the thead
4894
-                HTML2PDF::$_tables[$param['num']]['tfoot']           = array();          // properties on the tfoot
4895
-                HTML2PDF::$_tables[$param['num']]['thead']['tr']     = array();          // list of the TRs in the thead
4896
-                HTML2PDF::$_tables[$param['num']]['tfoot']['tr']     = array();          // list of the TRs in the tfoot
4897
-                HTML2PDF::$_tables[$param['num']]['thead']['height']    = 0;             // thead height
4898
-                HTML2PDF::$_tables[$param['num']]['tfoot']['height']    = 0;             // tfoot height
4899
-                HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();            // HTML content of the thead
4900
-                HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();            // HTML content of the tfoot
4901
-                HTML2PDF::$_tables[$param['num']]['cols']        = array();              // properties of the COLs
4902
-
4903
-                $this->_saveMargin($this->pdf->getlMargin(), $this->pdf->gettMargin(), $this->pdf->getrMargin());
4904
-
4905
-                $this->parsingCss->value['width']-= HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4906
-            } else {
4907
-                // we start from the first page and the first page of the table
4908
-                HTML2PDF::$_tables[$param['num']]['page'] = 0;
4909
-                HTML2PDF::$_tables[$param['num']]['td_curr']    = 0;
4910
-                HTML2PDF::$_tables[$param['num']]['tr_curr']    = 0;
4911
-                HTML2PDF::$_tables[$param['num']]['td_x']        = HTML2PDF::$_tables[$param['num']]['marge']['l']+HTML2PDF::$_tables[$param['num']]['curr_x'];
4912
-                HTML2PDF::$_tables[$param['num']]['td_y']        = HTML2PDF::$_tables[$param['num']]['marge']['t']+HTML2PDF::$_tables[$param['num']]['curr_y'];
4913
-
4914
-                // draw the borders/background of the first page/part of the table
4915
-                $this->_drawRectangle(
4916
-                    HTML2PDF::$_tables[$param['num']]['curr_x'],
4917
-                    HTML2PDF::$_tables[$param['num']]['curr_y'],
4918
-                    HTML2PDF::$_tables[$param['num']]['width'],
4919
-                    isset(HTML2PDF::$_tables[$param['num']]['height'][0]) ? HTML2PDF::$_tables[$param['num']]['height'][0] : null,
4920
-                    $this->parsingCss->value['border'],
4921
-                    $this->parsingCss->value['padding'],
4922
-                    0,
4923
-                    $this->parsingCss->value['background']
4924
-                );
4925
-
4926
-                HTML2PDF::$_tables[$param['num']]['style_value'] = $this->parsingCss->value;
4927
-            }
4928
-
4929
-            return true;
4930
-        }
4931
-
4932
-        /**
4933
-         * tag : TABLE
4934
-         * mode : CLOSE
4935
-         *
4936
-         * @param  array $param
4937
-         * @return boolean
4938
-         */
4939
-        protected function _tag_close_TABLE($param)
4940
-        {
4941
-            if ($this->_isForOneLine) return false;
4942
-
4943
-            $this->_maxH = 0;
4944
-
4945
-            // if we are in a sub HTML
4946
-            if ($this->_subPart) {
4947
-                // calculate the size of each case
4948
-                $this->_calculateTableCellSize(HTML2PDF::$_tables[$param['num']]['cases'], HTML2PDF::$_tables[$param['num']]['corr']);
4949
-
4950
-                // calculate the height of the thead and the tfoot
4951
-                $lst = array('thead', 'tfoot');
4952
-                foreach ($lst as $mode) {
4953
-                    HTML2PDF::$_tables[$param['num']][$mode]['height'] = 0;
4954
-                    foreach (HTML2PDF::$_tables[$param['num']][$mode]['tr'] as $tr) {
4955
-                        // hauteur de la ligne tr
4956
-                        $h = 0;
4957
-                        for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$tr]); $i++)
4958
-                            if (HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['rowspan']==1)
4959
-                                $h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['h']);
4960
-                        HTML2PDF::$_tables[$param['num']][$mode]['height']+= $h;
4961
-                    }
4962
-                }
4963
-
4964
-                // calculate the width of the table
4965
-                HTML2PDF::$_tables[$param['num']]['width'] = HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4966
-                if (isset(HTML2PDF::$_tables[$param['num']]['cases'][0])) {
4967
-                    foreach (HTML2PDF::$_tables[$param['num']]['cases'][0] as $case) {
4968
-                        HTML2PDF::$_tables[$param['num']]['width']+= $case['w'];
4969
-                    }
4970
-                }
4971
-
4972
-                // X position of the table
4973
-                $old = $this->parsingCss->getOldValues();
4974
-                $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
4975
-                $x = HTML2PDF::$_tables[$param['num']]['curr_x'];
4976
-                $w = HTML2PDF::$_tables[$param['num']]['width'];
4977
-                if ($parentWidth>$w) {
4978
-                    if (HTML2PDF::$_tables[$param['num']]['align']=='center')
4979
-                        $x = $x + ($parentWidth-$w)*0.5;
4980
-                    else if (HTML2PDF::$_tables[$param['num']]['align']=='right')
4981
-                        $x = $x + $parentWidth-$w;
4982
-
4983
-                    HTML2PDF::$_tables[$param['num']]['curr_x'] = $x;
4984
-                }
4985
-
4986
-                // calculate the height of the table
4987
-                HTML2PDF::$_tables[$param['num']]['height'] = array();
4988
-
4989
-                // minimum of the height because of margins, and of the thead and tfoot height
4990
-                $h0 = HTML2PDF::$_tables[$param['num']]['marge']['t'] + HTML2PDF::$_tables[$param['num']]['marge']['b'];
4991
-                $h0+= HTML2PDF::$_tables[$param['num']]['thead']['height'] + HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
4992
-
4993
-                // max height of the page
4994
-                $max = $this->pdf->getH() - $this->pdf->getbMargin();
4995
-
4996
-                // current position on the page
4997
-                $y = HTML2PDF::$_tables[$param['num']]['curr_y'];
4998
-                $height = $h0;
4999
-
5000
-                // we get the height of each line
5001
-                for ($k=0; $k<count(HTML2PDF::$_tables[$param['num']]['cases']); $k++) {
5002
-
5003
-                    // if it is a TR of the thead or of the tfoot => skip
5004
-                    if (in_array($k, HTML2PDF::$_tables[$param['num']]['thead']['tr'])) continue;
5005
-                    if (in_array($k, HTML2PDF::$_tables[$param['num']]['tfoot']['tr'])) continue;
5006
-
5007
-                    // height of the line
5008
-                    $th = 0;
5009
-                    $h = 0;
5010
-                    for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$k]); $i++) {
5011
-                        $h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5012
-
5013
-                        if (HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['rowspan']==1)
5014
-                            $th = max($th, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5015
-                    }
5016
-
5017
-                    // if the row does not fit on the page => new page
5018
-                    if ($y+$h+$height>$max) {
5019
-                        if ($height==$h0) $height = null;
5020
-                        HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5021
-                        $height = $h0;
5022
-                        $y = $this->_margeTop;
5023
-                    }
5024
-                    $height+= $th;
5025
-                }
5026
-
5027
-                // if ther is a height at the end, add it
5028
-                if ($height!=$h0 || $k==0) HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5029
-            } else {
5030
-                // if we have tfoor, draw it
5031
-                if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
5032
-                    $tmpTR = HTML2PDF::$_tables[$param['num']]['tr_curr'];
5033
-                    $tmpTD = HTML2PDF::$_tables[$param['num']]['td_curr'];
5034
-                    $oldParsePos = $this->_parsePos;
5035
-                    $oldParseCode = $this->parsingHtml->code;
5036
-
5037
-                    HTML2PDF::$_tables[$param['num']]['tr_curr'] = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
5038
-                    HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5039
-                    $this->_parsePos = 0;
5040
-                    $this->parsingHtml->code = HTML2PDF::$_tables[$param['num']]['tfoot']['code'];
5041
-                    $this->_isInTfoot = true;
5042
-                    $this->_makeHTMLcode();
5043
-                    $this->_isInTfoot = false;
5044
-
5045
-                    $this->_parsePos =     $oldParsePos;
5046
-                    $this->parsingHtml->code = $oldParseCode;
5047
-                    HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5048
-                    HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
5049
-                }
5050
-
5051
-                // get the positions of the end of the table
5052
-                $x = HTML2PDF::$_tables[$param['num']]['curr_x'] + HTML2PDF::$_tables[$param['num']]['width'];
5053
-                if (count(HTML2PDF::$_tables[$param['num']]['height'])>1)
5054
-                    $y = $this->_margeTop+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5055
-                else if (count(HTML2PDF::$_tables[$param['num']]['height'])==1)
5056
-                    $y = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5057
-                else
5058
-                    $y = HTML2PDF::$_tables[$param['num']]['curr_y'];
5059
-
5060
-                $this->_maxX = max($this->_maxX, $x);
5061
-                $this->_maxY = max($this->_maxY, $y);
5062
-
5063
-                $this->pdf->setXY($this->pdf->getlMargin(), $y);
5064
-
5065
-                $this->_loadMargin();
5066
-
5067
-                if ($this->_debugActif) $this->_DEBUG_add('Table '.$param['num'], false);
5068
-            }
5069
-
5070
-            $this->parsingCss->load();
5071
-            $this->parsingCss->fontSet();
5072
-
5073
-
5074
-            return true;
5075
-        }
5076
-
5077
-        /**
5078
-         * tag : COL
5079
-         * mode : OPEN
5080
-         *
5081
-         * @param  array $param
5082
-         * @return boolean
5083
-         */
5084
-        protected function _tag_open_COL($param)
5085
-        {
5086
-            $span = isset($param['span']) ? $param['span'] : 1;
5087
-            for ($k=0; $k<$span; $k++)
5088
-                HTML2PDF::$_tables[$param['num']]['cols'][] = $param;
5089
-        }
5090
-
5091
-        /**
5092
-         * tag : COL
5093
-         * mode : CLOSE
5094
-         *
5095
-         * @param  array $param
5096
-         * @return boolean
5097
-         */
5098
-        protected function _tag_close_COL($param)
5099
-        {
5100
-            // there is nothing to do here
5101
-
5102
-            return true;
5103
-        }
5104
-
5105
-        /**
5106
-         * tag : TR
5107
-         * mode : OPEN
5108
-         *
5109
-         * @param  array $param
5110
-         * @return boolean
5111
-         */
5112
-        protected function _tag_open_TR($param, $other = 'tr')
5113
-        {
5114
-            if ($this->_isForOneLine) return false;
5115
-
5116
-            $this->_maxH = 0;
5117
-
5118
-            $this->parsingCss->save();
5119
-            $this->parsingCss->analyse($other, $param);
5120
-            $this->parsingCss->setPosition();
5121
-            $this->parsingCss->fontSet();
5122
-
5123
-            // position in the table
5124
-            HTML2PDF::$_tables[$param['num']]['tr_curr']++;
5125
-            HTML2PDF::$_tables[$param['num']]['td_curr']= 0;
5126
-
5127
-            // if we are not in a sub html
5128
-            if (!$this->_subPart) {
5129
-
5130
-                // Y after the row
5131
-                $ty=null;
5132
-                for ($ii=0; $ii<count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1]); $ii++) {
5133
-                    $ty = max($ty, HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['h']);
5134
-                }
5135
-
5136
-                // height of the tfoot
5137
-                $hfoot = HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
5138
-
5139
-                // if the line does not fit on the page => new page
5140
-                if (!$this->_isInTfoot && HTML2PDF::$_tables[$param['num']]['td_y'] + HTML2PDF::$_tables[$param['num']]['marge']['b'] + $ty +$hfoot> $this->pdf->getH() - $this->pdf->getbMargin()) {
5141
-
5142
-                    // fi ther is a tfoot => draw it
5143
-                    if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
5144
-                        $tmpTR = HTML2PDF::$_tables[$param['num']]['tr_curr'];
5145
-                        $tmpTD = HTML2PDF::$_tables[$param['num']]['td_curr'];
5146
-                        $oldParsePos = $this->_parsePos;
5147
-                        $oldParseCode = $this->parsingHtml->code;
5148
-
5149
-                        HTML2PDF::$_tables[$param['num']]['tr_curr'] = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
5150
-                        HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5151
-                        $this->_parsePos = 0;
5152
-                        $this->parsingHtml->code = HTML2PDF::$_tables[$param['num']]['tfoot']['code'];
5153
-                        $this->_isInTfoot = true;
5154
-                        $this->_makeHTMLcode();
5155
-                        $this->_isInTfoot = false;
5156
-
5157
-                        $this->_parsePos =     $oldParsePos;
5158
-                        $this->parsingHtml->code = $oldParseCode;
5159
-                        HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5160
-                        HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
5161
-                    }
5162
-
5163
-                    // new page
5164
-                    HTML2PDF::$_tables[$param['num']]['new_page'] = true;
5165
-                    $this->_setNewPage();
5166
-
5167
-                    // new position
5168
-                    HTML2PDF::$_tables[$param['num']]['page']++;
5169
-                    HTML2PDF::$_tables[$param['num']]['curr_y'] = $this->pdf->getY();
5170
-                    HTML2PDF::$_tables[$param['num']]['td_y'] = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['marge']['t'];
5171
-
5172
-                    // if we have the height of the tbale on the page => draw borders and background
5173
-                    if (isset(HTML2PDF::$_tables[$param['num']]['height'][HTML2PDF::$_tables[$param['num']]['page']])) {
5174
-                        $old = $this->parsingCss->value;
5175
-                        $this->parsingCss->value = HTML2PDF::$_tables[$param['num']]['style_value'];
5176
-
5177
-                        $this->_drawRectangle(
5178
-                            HTML2PDF::$_tables[$param['num']]['curr_x'],
5179
-                            HTML2PDF::$_tables[$param['num']]['curr_y'],
5180
-                            HTML2PDF::$_tables[$param['num']]['width'],
5181
-                            HTML2PDF::$_tables[$param['num']]['height'][HTML2PDF::$_tables[$param['num']]['page']],
5182
-                            $this->parsingCss->value['border'],
5183
-                            $this->parsingCss->value['padding'],
5184
-                            HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5,
5185
-                            $this->parsingCss->value['background']
5186
-                        );
5187
-
5188
-                        $this->parsingCss->value = $old;
5189
-                    }
5190
-                }
5191
-
5192
-                // if we are in a new page, and if we have a thead => draw it
5193
-                if (HTML2PDF::$_tables[$param['num']]['new_page'] && count(HTML2PDF::$_tables[$param['num']]['thead']['code'])) {
5194
-                    HTML2PDF::$_tables[$param['num']]['new_page'] = false;
5195
-                    $tmpTR = HTML2PDF::$_tables[$param['num']]['tr_curr'];
5196
-                    $tmpTD = HTML2PDF::$_tables[$param['num']]['td_curr'];
5197
-                    $oldParsePos = $this->_parsePos;
5198
-                    $oldParseCode = $this->parsingHtml->code;
5199
-
5200
-                    HTML2PDF::$_tables[$param['num']]['tr_curr'] = HTML2PDF::$_tables[$param['num']]['thead']['tr'][0];
5201
-                    HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5202
-                    $this->_parsePos = 0;
5203
-                    $this->parsingHtml->code = HTML2PDF::$_tables[$param['num']]['thead']['code'];
5204
-                    $this->_isInThead = true;
5205
-                    $this->_makeHTMLcode();
5206
-                    $this->_isInThead = false;
5207
-
5208
-                    $this->_parsePos =     $oldParsePos;
5209
-                    $this->parsingHtml->code = $oldParseCode;
5210
-                    HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5211
-                    HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
5212
-                    HTML2PDF::$_tables[$param['num']]['new_page'] = true;
5213
-                }
5214
-            // else (in a sub HTML)
5215
-            } else {
5216
-                // prepare it
5217
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1] = array();
5218
-                if (!isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']]))
5219
-                    HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']] = array();
5220
-
5221
-                HTML2PDF::$_tables[$param['num']]['corr_x']=0;
5222
-                while(isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']]))
5223
-                    HTML2PDF::$_tables[$param['num']]['corr_x']++;
5224
-            }
5225
-
5226
-            return true;
5227
-        }
5228
-
5229
-        /**
5230
-         * tag : TR
5231
-         * mode : CLOSE
5232
-         *
5233
-         * @param  array $param
5234
-         * @return boolean
5235
-         */
5236
-        protected function _tag_close_TR($param)
5237
-        {
5238
-            if ($this->_isForOneLine) return false;
5239
-
5240
-            $this->_maxH = 0;
5241
-
5242
-            $this->parsingCss->load();
5243
-            $this->parsingCss->fontSet();
5244
-
5245
-            // if we are not in a sub HTML
5246
-            if (!$this->_subPart) {
5247
-
5248
-                // Y of the current line
5249
-                $ty=null;
5250
-                for ($ii=0; $ii<count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1]); $ii++) {
5251
-                    if (HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['rowspan']==1) {
5252
-                        $ty = HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['h'];
5253
-                    }
5254
-                }
5255
-
5256
-                // new position
5257
-                HTML2PDF::$_tables[$param['num']]['td_x'] = HTML2PDF::$_tables[$param['num']]['curr_x']+HTML2PDF::$_tables[$param['num']]['marge']['l'];
5258
-                HTML2PDF::$_tables[$param['num']]['td_y']+= $ty;
5259
-                HTML2PDF::$_tables[$param['num']]['new_page'] = false;
5260
-            } else {
5261
-                HTML2PDF::$_tables[$param['num']]['corr_y']++;
5262
-            }
5263
-
5264
-            return true;
5265
-        }
5266
-
5267
-        /**
5268
-         * tag : TD
5269
-         * mode : OPEN
5270
-         *
5271
-         * @param  array $param
5272
-         * @return boolean
5273
-         */
5274
-        protected function _tag_open_TD($param, $other = 'td')
5275
-        {
5276
-            if ($this->_isForOneLine) return false;
5277
-
5278
-            $this->_maxH = 0;
5279
-
5280
-            $param['cellpadding'] = HTML2PDF::$_tables[$param['num']]['cellpadding'].'mm';
5281
-            $param['cellspacing'] = HTML2PDF::$_tables[$param['num']]['cellspacing'].'mm';
5282
-
5283
-            // specific style for LI
5284
-            if ($other=='li') {
5285
-                $specialLi = true;
5286
-            } else {
5287
-                $specialLi = false;
5288
-                if ($other=='li_sub') {
5289
-                    $param['style']['border'] = 'none';
5290
-                    $param['style']['background-color']    = 'transparent';
5291
-                    $param['style']['background-image']    = 'none';
5292
-                    $param['style']['background-position'] = '';
5293
-                    $param['style']['background-repeat']   = '';
5294
-                    $other = 'li';
5295
-                }
5296
-            }
5297
-
5298
-            // get the properties of the TD
5299
-            $x = HTML2PDF::$_tables[$param['num']]['td_curr'];
5300
-            $y = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
5301
-            $colspan = isset($param['colspan']) ? $param['colspan'] : 1;
5302
-            $rowspan = isset($param['rowspan']) ? $param['rowspan'] : 1;
5303
-
5304
-            // flag for collapse table
5305
-            $collapse = false;
5306
-
5307
-            // specific traitment for TD and TH
5308
-            if (in_array($other, array('td', 'th'))) {
5309
-                // id of the column
5310
-                $numCol = isset(HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Xr']) ? HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Xr'] : HTML2PDF::$_tables[$param['num']]['corr_x'];
5311
-
5312
-                // we get the properties of the COL tag, if exist
5313
-                if (isset(HTML2PDF::$_tables[$param['num']]['cols'][$numCol])) {
5314
-
5315
-                    $colParam = HTML2PDF::$_tables[$param['num']]['cols'][$numCol];
5316
-
5317
-                    // for colspans => we get all the neede widths
5318
-                    $colParam['style']['width'] = array();
5319
-                    for ($k=0; $k<$colspan; $k++) {
5320
-                        if (isset(HTML2PDF::$_tables[$param['num']]['cols'][$numCol+$k]['style']['width'])) {
5321
-                            $colParam['style']['width'][] = HTML2PDF::$_tables[$param['num']]['cols'][$numCol+$k]['style']['width'];
5322
-                        }
5323
-                    }
5324
-
5325
-                    // calculate the total width of the column
5326
-                    $total = '';
5327
-                    $last = $this->parsingCss->getLastWidth();
5328
-                    if (count($colParam['style']['width'])) {
5329
-                        $total = $colParam['style']['width'][0]; unset($colParam['style']['width'][0]);
5330
-                        foreach ($colParam['style']['width'] as $width) {
5331
-                            if (substr($total, -1)=='%' && substr($width, -1)=='%')
5332
-                                $total = (str_replace('%', '', $total)+str_replace('%', '', $width)).'%';
5333
-                            else
5334
-                                $total = ($this->parsingCss->ConvertToMM($total, $last) + $this->parsingCss->ConvertToMM($width, $last)).'mm';
5335
-                        }
5336
-                    }
5337
-
5338
-                    // get the final width
5339
-                    if ($total) {
5340
-                        $colParam['style']['width'] = $total;
5341
-                    } else {
5342
-                        unset($colParam['style']['width']);
5343
-                    }
5344
-
5345
-
5346
-                    // merge the styles of the COL and the TD
5347
-                    $param['style'] = array_merge($colParam['style'], $param['style']);
5348
-
5349
-                    // merge the class of the COL and the TD
5350
-                    if (isset($colParam['class'])) {
5351
-                        $param['class'] = $colParam['class'].(isset($param['class']) ? ' '.$param['class'] : '');
5352
-                    }
5353
-                }
5354
-
5355
-                $collapse = isset($this->parsingCss->value['border']['collapse']) ? $this->parsingCss->value['border']['collapse'] : false;
5356
-            }
5357
-
5358
-            $this->parsingCss->save();
5359
-
5360
-            // legacy for TD and TH
5361
-            $legacy = null;
5362
-            if (in_array($other, array('td', 'th'))) {
5363
-                $legacy = array();
5364
-
5365
-                $old = $this->parsingCss->getLastValue('background');
5366
-                if ($old && ($old['color'] || $old['image']))
5367
-                    $legacy['background'] = $old;
5368
-
5369
-                if (HTML2PDF::$_tables[$param['num']]['border']) {
5370
-                    $legacy['border'] = array();
5371
-                    $legacy['border']['l'] = HTML2PDF::$_tables[$param['num']]['border'];
5372
-                    $legacy['border']['t'] = HTML2PDF::$_tables[$param['num']]['border'];
5373
-                    $legacy['border']['r'] = HTML2PDF::$_tables[$param['num']]['border'];
5374
-                    $legacy['border']['b'] = HTML2PDF::$_tables[$param['num']]['border'];
5375
-                }
5376
-            }
5377
-            $return = $this->parsingCss->analyse($other, $param, $legacy);
5378
-
5379
-            if ($specialLi) {
5380
-                $this->parsingCss->value['width']-= $this->parsingCss->ConvertToMM($this->_listeGetWidth());
5381
-                $this->parsingCss->value['width']-= $this->parsingCss->ConvertToMM($this->_listeGetPadding());
5382
-            }
5383
-            $this->parsingCss->setPosition();
5384
-            $this->parsingCss->fontSet();
5385
-
5386
-            // if tale collapse => modify the borders
5387
-            if ($collapse) {
5388
-                if (!$this->_subPart) {
5389
-                    if (
5390
-                        (HTML2PDF::$_tables[$param['num']]['tr_curr']>1 && !HTML2PDF::$_tables[$param['num']]['new_page']) ||
5391
-                        (!$this->_isInThead && count(HTML2PDF::$_tables[$param['num']]['thead']['code']))
5392
-                    ) {
5393
-                        $this->parsingCss->value['border']['t'] = $this->parsingCss->readBorder('none');
5394
-                    }
5395
-                }
5396
-
5397
-                if (HTML2PDF::$_tables[$param['num']]['td_curr']>0) {
5398
-                    if (!$return) $this->parsingCss->value['width']+= $this->parsingCss->value['border']['l']['width'];
5399
-                    $this->parsingCss->value['border']['l'] = $this->parsingCss->readBorder('none');
5400
-                }
5401
-            }
5402
-
5403
-            // margins of the table
5404
-            $marge = array();
5405
-            $marge['t'] = $this->parsingCss->value['padding']['t']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['t']['width'];
5406
-            $marge['r'] = $this->parsingCss->value['padding']['r']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['r']['width'];
5407
-            $marge['b'] = $this->parsingCss->value['padding']['b']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['b']['width'];
5408
-            $marge['l'] = $this->parsingCss->value['padding']['l']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['l']['width'];
5409
-
5410
-            // if we are in a sub HTML
5411
-            if ($this->_subPart) {
5412
-                // new position in the table
5413
-                HTML2PDF::$_tables[$param['num']]['td_curr']++;
5414
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x] = array();
5415
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'] = 0;
5416
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'] = 0;
5417
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['dw'] = 0;
5418
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['colspan'] = $colspan;
5419
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['rowspan'] = $rowspan;
5420
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Xr'] = HTML2PDF::$_tables[$param['num']]['corr_x'];
5421
-                HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Yr'] = HTML2PDF::$_tables[$param['num']]['corr_y'];
5422
-
5423
-                // prepare the mapping for rowspan and colspan
5424
-                for ($j=0; $j<$rowspan; $j++) {
5425
-                    for ($i=0; $i<$colspan; $i++) {
5426
-                        HTML2PDF::$_tables[$param['num']]['corr']
5427
-                            [HTML2PDF::$_tables[$param['num']]['corr_y']+$j]
5428
-                            [HTML2PDF::$_tables[$param['num']]['corr_x']+$i] = ($i+$j>0) ? '' : array($x,$y,$colspan,$rowspan);
5429
-                    }
5430
-                }
5431
-                HTML2PDF::$_tables[$param['num']]['corr_x']+= $colspan;
5432
-                while (isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']])) {
5433
-                    HTML2PDF::$_tables[$param['num']]['corr_x']++;
5434
-                }
5435
-
5436
-                // extract the content of the TD, and calculate his size
5437
-                $level = $this->parsingHtml->getLevel($this->_tempPos);
5438
-                $this->_createSubHTML($this->_subHtml);
5439
-                $this->_subHtml->parsingHtml->code = $level;
5440
-                $this->_subHtml->_makeHTMLcode();
5441
-                $this->_tempPos+= count($level);
5442
-            } else {
5443
-                // new position in the table
5444
-                HTML2PDF::$_tables[$param['num']]['td_curr']++;
5445
-                HTML2PDF::$_tables[$param['num']]['td_x']+= HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['dw'];
5446
-
5447
-                // borders and background of the TD
5448
-                $this->_drawRectangle(
5449
-                    HTML2PDF::$_tables[$param['num']]['td_x'],
5450
-                    HTML2PDF::$_tables[$param['num']]['td_y'],
5451
-                    HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'],
5452
-                    HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'],
5453
-                    $this->parsingCss->value['border'],
5454
-                    $this->parsingCss->value['padding'],
5455
-                    HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5,
5456
-                    $this->parsingCss->value['background']
5457
-                );
5458
-
5459
-                $this->parsingCss->value['width'] = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'] - $marge['l'] - $marge['r'];
5460
-
5461
-                // marges = size of the TD
5462
-                $mL = HTML2PDF::$_tables[$param['num']]['td_x']+$marge['l'];
5463
-                $mR = $this->pdf->getW() - $mL - $this->parsingCss->value['width'];
5464
-                $this->_saveMargin($mL, 0, $mR);
5465
-
5466
-                // position of the content, from vertical-align
5467
-                $hCorr = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'];
5468
-                $hReel = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['real_h'];
5469
-                switch($this->parsingCss->value['vertical-align'])
5470
-                {
5471
-                    case 'bottom':
5472
-                        $yCorr = $hCorr-$hReel;
5473
-                        break;
5474
-
5475
-                    case 'middle':
5476
-                        $yCorr = ($hCorr-$hReel)*0.5;
5477
-                        break;
5478
-
5479
-                    case 'top':
5480
-                    default:
5481
-                        $yCorr = 0;
5482
-                        break;
5483
-                }
5484
-
5485
-                //  position of the content
5486
-                $x = HTML2PDF::$_tables[$param['num']]['td_x']+$marge['l'];
5487
-                $y = HTML2PDF::$_tables[$param['num']]['td_y']+$marge['t']+$yCorr;
5488
-                $this->pdf->setXY($x, $y);
5489
-                $this->_setNewPositionForNewLine();
5490
-            }
5491
-
5492
-            return true;
5493
-        }
5494
-
5495
-        /**
5496
-         * tag : TD
5497
-         * mode : CLOSE
5498
-         *
5499
-         * @param    array $param
5500
-         * @return boolean
5501
-         */
5502
-        protected function _tag_close_TD($param)
5503
-        {
5504
-            if ($this->_isForOneLine) return false;
5505
-
5506
-            $this->_maxH = 0;
5507
-
5508
-            // get the margins
5509
-            $marge = array();
5510
-            $marge['t'] = $this->parsingCss->value['padding']['t']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['t']['width'];
5511
-            $marge['r'] = $this->parsingCss->value['padding']['r']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['r']['width'];
5512
-            $marge['b'] = $this->parsingCss->value['padding']['b']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['b']['width'];
5513
-            $marge['l'] = $this->parsingCss->value['padding']['l']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['l']['width'];
5514
-            $marge['t']+= 0.001;
5515
-            $marge['r']+= 0.001;
5516
-            $marge['b']+= 0.001;
5517
-            $marge['l']+= 0.001;
5518
-
5519
-            // if we are in a sub HTML
5520
-            if ($this->_subPart) {
5521
-
5522
-                // it msut take only one page
5523
-                if ($this->_testTdInOnepage && $this->_subHtml->pdf->getPage()>1) {
5524
-                    throw new HTML2PDF_exception(7);
5525
-                }
5526
-
5527
-                // size of the content of the TD
5528
-                $w0 = $this->_subHtml->_maxX + $marge['l'] + $marge['r'];
5529
-                $h0 = $this->_subHtml->_maxY + $marge['t'] + $marge['b'];
5530
-
5531
-                // size from the CSS style
5532
-                $w2 = $this->parsingCss->value['width'] + $marge['l'] + $marge['r'];
5533
-                $h2 = $this->parsingCss->value['height'] + $marge['t'] + $marge['b'];
5534
-
5535
-                // final size of the TD
5536
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['w'] = max(array($w0, $w2));
5537
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['h'] = max(array($h0, $h2));
5538
-
5539
-                // real position of the content
5540
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['real_w'] = $w0;
5541
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['real_h'] = $h0;
5542
-
5543
-                // destroy the sub HTML
5544
-                $this->_destroySubHTML($this->_subHtml);
5545
-            } else {
5546
-                $this->_loadMargin();
5547
-
5548
-                HTML2PDF::$_tables[$param['num']]['td_x']+= HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['w'];
5549
-            }
5550
-
5551
-            $this->parsingCss->load();
5552
-            $this->parsingCss->fontSet();
5553
-
5554
-            return true;
5555
-        }
5556
-
5557
-
5558
-        /**
5559
-         * tag : TH
5560
-         * mode : OPEN
5561
-         *
5562
-         * @param  array $param
5563
-         * @return boolean
5564
-         */
5565
-        protected function _tag_open_TH($param)
5566
-        {
5567
-            if ($this->_isForOneLine) return false;
5568
-
5569
-            $this->parsingCss->save();
5570
-            $this->parsingCss->value['font-bold'] = true;
5571
-
5572
-            $this->_tag_open_TD($param, 'th');
5573
-
5574
-            return true;
5575
-        }
5576
-
5577
-        /**
5578
-         * tag : TH
5579
-         * mode : CLOSE
5580
-         *
5581
-         * @param  array $param
5582
-         * @return boolean
5583
-         */
5584
-        protected function _tag_close_TH($param)
5585
-        {
5586
-            if ($this->_isForOneLine) return false;
5587
-
5588
-            $this->_tag_close_TD($param);
5589
-
5590
-            $this->parsingCss->load();
5591
-
5592
-            return true;
5593
-        }
5594
-
5595
-        /**
5596
-         * tag : IMG
5597
-         * mode : OPEN
5598
-         *
5599
-         * @param  array $param
5600
-         * @return boolean
5601
-         */
5602
-        protected function _tag_open_IMG($param)
5603
-        {
5604
-            $src    = str_replace('&amp;', '&', $param['src']);
5605
-
5606
-            $this->parsingCss->save();
5607
-            $this->parsingCss->value['width']    = 0;
5608
-            $this->parsingCss->value['height']    = 0;
5609
-            $this->parsingCss->value['border']    = array('type' => 'none', 'width' => 0, 'color' => array(0, 0, 0));
5610
-            $this->parsingCss->value['background'] = array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
5611
-            $this->parsingCss->analyse('img', $param);
5612
-            $this->parsingCss->setPosition();
5613
-            $this->parsingCss->fontSet();
5614
-
5615
-            $res = $this->_drawImage($src, isset($param['sub_li']));
5616
-            if (!$res) return $res;
5617
-
5618
-            $this->parsingCss->load();
5619
-            $this->parsingCss->fontSet();
5620
-            $this->_maxE++;
5621
-
5622
-            return true;
5623
-        }
5624
-
5625
-        /**
5626
-         * tag : SELECT
5627
-         * mode : OPEN
5628
-         *
5629
-         * @param  array $param
5630
-         * @return boolean
5631
-         */
5632
-        protected function _tag_open_SELECT($param)
5633
-        {
5634
-            if (!isset($param['name'])) {
5635
-                $param['name'] = 'champs_pdf_'.(count($this->_lstField)+1);
5636
-            }
5637
-
5638
-            $param['name'] = strtolower($param['name']);
5639
-
5640
-            if (isset($this->_lstField[$param['name']])) {
5641
-                $this->_lstField[$param['name']]++;
5642
-            } else {
5643
-                $this->_lstField[$param['name']] = 1;
5644
-            }
5645
-
5646
-            $this->parsingCss->save();
5647
-            $this->parsingCss->analyse('select', $param);
5648
-            $this->parsingCss->setPosition();
5649
-            $this->parsingCss->fontSet();
5650
-
5651
-            $this->_lstSelect = array();
5652
-            $this->_lstSelect['name']    = $param['name'];
5653
-            $this->_lstSelect['multi']    = isset($param['multiple']) ? true : false;
5654
-            $this->_lstSelect['size']    = isset($param['size']) ? $param['size'] : 1;
5655
-            $this->_lstSelect['options']    = array();
5656
-
5657
-            if ($this->_lstSelect['multi'] && $this->_lstSelect['size']<3) $this->_lstSelect['size'] = 3;
5658
-
5659
-            return true;
5660
-        }
5661
-
5662
-        /**
5663
-         * tag : OPTION
5664
-         * mode : OPEN
5665
-         *
5666
-         * @param    array $param
5667
-         * @return boolean
5668
-         */
5669
-        protected function _tag_open_OPTION($param)
5670
-        {
5671
-            // get the content of the option : it is the text of the option
5672
-            $level = $this->parsingHtml->getLevel($this->_parsePos);
5673
-            $this->_parsePos+= count($level);
5674
-            $value = isset($param['value']) ? $param['value'] : 'aut_tag_open_opt_'.(count($this->_lstSelect)+1);
5675
-
5676
-            $this->_lstSelect['options'][$value] = isset($level[0]['param']['txt']) ? $level[0]['param']['txt'] : '';
5677
-
5678
-            return true;
5679
-        }
5680
-
5681
-        /**
5682
-         * tag : OPTION
5683
-         * mode : CLOSE
5684
-         *
5685
-         * @param    array $param
5686
-         * @return boolean
5687
-         */
5688
-        protected function _tag_close_OPTION($param)
5689
-        {
5690
-            // nothing to do here
5691
-
5692
-            return true;
5693
-        }
5694
-
5695
-        /**
5696
-         * tag : SELECT
5697
-         * mode : CLOSE
5698
-         *
5699
-         * @param  array $param
5700
-         * @return boolean
5701
-         */
5702
-        protected function _tag_close_SELECT()
5703
-        {
5704
-            // position of the select
5705
-            $x = $this->pdf->getX();
5706
-            $y = $this->pdf->getY();
5707
-            $f = 1.08*$this->parsingCss->value['font-size'];
5708
-
5709
-            // width
5710
-            $w = $this->parsingCss->value['width']; if (!$w) $w = 50;
5711
-
5712
-            // height (automatic)
5713
-            $h = ($f*1.07*$this->_lstSelect['size'] + 1);
5714
-
5715
-            $prop = $this->parsingCss->getFormStyle();
5716
-
5717
-            // multy select
5718
-            if ($this->_lstSelect['multi']) {
5719
-                $prop['multipleSelection'] = 'true';
5720
-            }
5721
-
5722
-
5723
-            // single or multi select
5724
-            if ($this->_lstSelect['size']>1) {
5725
-                $this->pdf->ListBox($this->_lstSelect['name'], $w, $h, $this->_lstSelect['options'], $prop);
5726
-            } else {
5727
-                $this->pdf->ComboBox($this->_lstSelect['name'], $w, $h, $this->_lstSelect['options'], $prop);
5728
-            }
5729
-
5730
-            $this->_maxX = max($this->_maxX, $x+$w);
5731
-            $this->_maxY = max($this->_maxY, $y+$h);
5732
-            $this->_maxH = max($this->_maxH, $h);
5733
-            $this->_maxE++;
5734
-            $this->pdf->setX($x+$w);
5735
-
5736
-            $this->parsingCss->load();
5737
-            $this->parsingCss->fontSet();
5738
-
5739
-            $this->_lstSelect = array();
5740
-
5741
-            return true;
5742
-        }
5743
-
5744
-        /**
5745
-         * tag : TEXTAREA
5746
-         * mode : OPEN
5747
-         *
5748
-         * @param    array $param
5749
-         * @return boolean
5750
-         */
5751
-        protected function _tag_open_TEXTAREA($param)
5752
-        {
5753
-            if (!isset($param['name'])) {
5754
-                $param['name'] = 'champs_pdf_'.(count($this->_lstField)+1);
5755
-            }
5756
-
5757
-            $param['name'] = strtolower($param['name']);
5758
-
5759
-            if (isset($this->_lstField[$param['name']])) {
5760
-                $this->_lstField[$param['name']]++;
5761
-            } else {
5762
-                $this->_lstField[$param['name']] = 1;
5763
-            }
5764
-
5765
-            $this->parsingCss->save();
5766
-            $this->parsingCss->analyse('textarea', $param);
5767
-            $this->parsingCss->setPosition();
5768
-            $this->parsingCss->fontSet();
5769
-
5770
-            $x = $this->pdf->getX();
5771
-            $y = $this->pdf->getY();
5772
-            $fx = 0.65*$this->parsingCss->value['font-size'];
5773
-            $fy = 1.08*$this->parsingCss->value['font-size'];
5774
-
5775
-            // extract the content the textarea : value
5776
-            $level = $this->parsingHtml->getLevel($this->_parsePos);
5777
-            $this->_parsePos+= count($level);
5778
-
5779
-            // automatic size, from cols and rows properties
5780
-            $w = $fx*(isset($param['cols']) ? $param['cols'] : 22)+1;
5781
-            $h = $fy*1.07*(isset($param['rows']) ? $param['rows'] : 3)+3;
5782
-
5783
-            $prop = $this->parsingCss->getFormStyle();
5784
-
5785
-            $prop['multiline'] = true;
5786
-            $prop['value'] = isset($level[0]['param']['txt']) ? $level[0]['param']['txt'] : '';
5787
-
5788
-            $this->pdf->TextField($param['name'], $w, $h, $prop, array(), $x, $y);
5789
-
5790
-            $this->_maxX = max($this->_maxX, $x+$w);
5791
-            $this->_maxY = max($this->_maxY, $y+$h);
5792
-            $this->_maxH = max($this->_maxH, $h);
5793
-            $this->_maxE++;
5794
-            $this->pdf->setX($x+$w);
5795
-
5796
-            return true;
5797
-        }
5798
-
5799
-        /**
5800
-         * tag : TEXTAREA
5801
-         * mode : CLOSE
5802
-         *
5803
-         * @param  array $param
5804
-         * @return boolean
5805
-         */
5806
-        protected function _tag_close_TEXTAREA()
5807
-        {
5808
-            $this->parsingCss->load();
5809
-            $this->parsingCss->fontSet();
5810
-
5811
-            return true;
5812
-        }
5813
-
5814
-        /**
5815
-         * tag : INPUT
5816
-         * mode : OPEN
5817
-         *
5818
-         * @param  array $param
5819
-         * @return boolean
5820
-         */
5821
-        protected function _tag_open_INPUT($param)
5822
-        {
5823
-            if (!isset($param['name']))  $param['name']  = 'champs_pdf_'.(count($this->_lstField)+1);
5824
-            if (!isset($param['value'])) $param['value'] = '';
5825
-            if (!isset($param['type']))  $param['type']  = 'text';
5826
-
5827
-            $param['name'] = strtolower($param['name']);
5828
-            $param['type'] = strtolower($param['type']);
5829
-
5830
-            // the type must be valid
5831
-            if (!in_array($param['type'], array('text', 'checkbox', 'radio', 'hidden', 'submit', 'reset', 'button'))) {
5832
-                $param['type'] = 'text';
5833
-            }
5834
-
5835
-            if (isset($this->_lstField[$param['name']])) {
5836
-                $this->_lstField[$param['name']]++;
5837
-            } else {
5838
-                $this->_lstField[$param['name']] = 1;
5839
-            }
5840
-
5841
-            $this->parsingCss->save();
5842
-            $this->parsingCss->analyse('input', $param);
5843
-            $this->parsingCss->setPosition();
5844
-            $this->parsingCss->fontSet();
5845
-
5846
-            $name = $param['name'];
5847
-
5848
-            $x = $this->pdf->getX();
5849
-            $y = $this->pdf->getY();
5850
-            $f = 1.08*$this->parsingCss->value['font-size'];
5851
-
5852
-            $prop = $this->parsingCss->getFormStyle();
5853
-
5854
-            switch($param['type'])
5855
-            {
5856
-                case 'checkbox':
5857
-                    $w = 3;
5858
-                    $h = $w;
5859
-                    if ($h<$f) $y+= ($f-$h)*0.5;
5860
-                    $checked = (isset($param['checked']) && $param['checked']=='checked');
5861
-                    $this->pdf->CheckBox($name, $w, $checked, $prop, array(), ($param['value'] ? $param['value'] : 'Yes'), $x, $y);
5862
-                    break;
5863
-
5864
-                case 'radio':
5865
-                    $w = 3;
5866
-                    $h = $w;
5867
-                    if ($h<$f) $y+= ($f-$h)*0.5;
5868
-                    $checked = (isset($param['checked']) && $param['checked']=='checked');
5869
-                    $this->pdf->RadioButton($name, $w, $prop, array(), ($param['value'] ? $param['value'] : 'On'), $checked, $x, $y);
5870
-                    break;
5871
-
5872
-                case 'hidden':
5873
-                    $w = 0;
5874
-                    $h = 0;
5875
-                    $prop['value'] = $param['value'];
5876
-                    $this->pdf->TextField($name, $w, $h, $prop, array(), $x, $y);
5877
-                    break;
5878
-
5879
-                case 'text':
5880
-                    $w = $this->parsingCss->value['width']; if (!$w) $w = 40;
5881
-                    $h = $f*1.3;
5882
-                    $prop['value'] = $param['value'];
5883
-                    $this->pdf->TextField($name, $w, $h, $prop, array(), $x, $y);
5884
-                    break;
5885
-
5886
-                case 'submit':
5887
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5888
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5889
-                    $action = array('S'=>'SubmitForm', 'F'=>$this->_isInForm, 'Flags'=>array('ExportFormat'));
5890
-                    $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5891
-                    break;
5892
-
5893
-                case 'reset':
5894
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5895
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5896
-                    $action = array('S'=>'ResetForm');
5897
-                    $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5898
-                    break;
5899
-
5900
-                case 'button':
5901
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5902
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5903
-                    $action = isset($param['onclick']) ? $param['onclick'] : '';
5904
-                    $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5905
-                    break;
5906
-
5907
-                default:
5908
-                    $w = 0;
5909
-                    $h = 0;
5910
-                    break;
5911
-            }
5912
-
5913
-            $this->_maxX = max($this->_maxX, $x+$w);
5914
-            $this->_maxY = max($this->_maxY, $y+$h);
5915
-            $this->_maxH = max($this->_maxH, $h);
5916
-            $this->_maxE++;
5917
-            $this->pdf->setX($x+$w);
5918
-
5919
-            $this->parsingCss->load();
5920
-            $this->parsingCss->fontSet();
5921
-
5922
-            return true;
5923
-        }
5924
-
5925
-        /**
5926
-         * tag : DRAW
5927
-         * mode : OPEN
5928
-         *
5929
-         * @param  array $param
5930
-         * @return boolean
5931
-         */
5932
-        protected function _tag_open_DRAW($param)
5933
-        {
5934
-            if ($this->_isForOneLine) return false;
5935
-            if ($this->_debugActif) $this->_DEBUG_add('DRAW', true);
5936
-
5937
-            $this->parsingCss->save();
5938
-            $this->parsingCss->analyse('draw', $param);
5939
-            $this->parsingCss->fontSet();
5940
-
5941
-            $alignObject = null;
5942
-            if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
5943
-
5944
-            $overW = $this->parsingCss->value['width'];
5945
-            $overH = $this->parsingCss->value['height'];
5946
-            $this->parsingCss->value['old_maxX'] = $this->_maxX;
5947
-            $this->parsingCss->value['old_maxY'] = $this->_maxY;
5948
-            $this->parsingCss->value['old_maxH'] = $this->_maxH;
5949
-
5950
-            $w = $this->parsingCss->value['width'];
5951
-            $h = $this->parsingCss->value['height'];
5952
-
5953
-            if (!$this->parsingCss->value['position']) {
5954
-                if (
5955
-                    $w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
5956
-                    $this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
5957
-                    )
5958
-                    $this->_tag_open_BR(array());
5959
-
5960
-                if (
5961
-                        ($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
5962
-                        ($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
5963
-                        !$this->_isInOverflow
5964
-                    )
5965
-                    $this->_setNewPage();
5966
-
5967
-                $old = $this->parsingCss->getOldValues();
5968
-                $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5969
-
5970
-                if ($parentWidth>$w) {
5971
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5972
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
5973
-                }
5974
-
5975
-                $this->parsingCss->setPosition();
5976
-            } else {
5977
-                $old = $this->parsingCss->getOldValues();
5978
-                $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5979
-
5980
-                if ($parentWidth>$w) {
5981
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5982
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
5983
-                }
5984
-
5985
-                $this->parsingCss->setPosition();
5986
-                $this->_saveMax();
5987
-                $this->_maxX = 0;
5988
-                $this->_maxY = 0;
5989
-                $this->_maxH = 0;
5990
-                $this->_maxE = 0;
5991
-            }
5992
-
5993
-            $this->_drawRectangle(
5994
-                $this->parsingCss->value['x'],
5995
-                $this->parsingCss->value['y'],
5996
-                $this->parsingCss->value['width'],
5997
-                $this->parsingCss->value['height'],
5998
-                $this->parsingCss->value['border'],
5999
-                $this->parsingCss->value['padding'],
6000
-                0,
6001
-                $this->parsingCss->value['background']
6002
-            );
6003
-
6004
-            $marge = array();
6005
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'];
6006
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'];
6007
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'];
6008
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'];
6009
-
6010
-            $this->parsingCss->value['width'] -= $marge['l']+$marge['r'];
6011
-            $this->parsingCss->value['height']-= $marge['t']+$marge['b'];
6012
-
6013
-            $overW-= $marge['l']+$marge['r'];
6014
-            $overH-= $marge['t']+$marge['b'];
6015
-
6016
-            // clipping to draw only in the size opf the DRAW tag
6017
-            $this->pdf->clippingPathStart(
6018
-                $this->parsingCss->value['x']+$marge['l'],
6019
-                $this->parsingCss->value['y']+$marge['t'],
6020
-                $this->parsingCss->value['width'],
6021
-                $this->parsingCss->value['height']
6022
-            );
6023
-
6024
-            // left and right of the DRAW tag
6025
-            $mL = $this->parsingCss->value['x']+$marge['l'];
6026
-            $mR = $this->pdf->getW() - $mL - $overW;
6027
-
6028
-            // position of the DRAW tag
6029
-            $x = $this->parsingCss->value['x']+$marge['l'];
6030
-            $y = $this->parsingCss->value['y']+$marge['t'];
6031
-
6032
-            // prepare the drawing area
6033
-            $this->_saveMargin($mL, 0, $mR);
6034
-            $this->pdf->setXY($x, $y);
6035
-
6036
-            // we are in a draw tag
6037
-            $this->_isInDraw = array(
6038
-                'x' => $x,
6039
-                'y' => $y,
6040
-                'w' => $overW,
6041
-                'h' => $overH,
6042
-            );
6043
-
6044
-            // init the translate matrix : (0,0) => ($x, $y)
6045
-            $this->pdf->doTransform(array(1,0,0,1,$x,$y));
6046
-            $this->pdf->SetAlpha(1.);
6047
-            return true;
6048
-        }
6049
-
6050
-        /**
6051
-         * tag : DRAW
6052
-         * mode : CLOSE
6053
-         *
6054
-         * @param  array $param
6055
-         * @return boolean
6056
-         */
6057
-        protected function _tag_close_DRAW($param)
6058
-        {
6059
-            if ($this->_isForOneLine) return false;
6060
-
6061
-            $this->pdf->SetAlpha(1.);
6062
-            $this->pdf->undoTransform();
6063
-            $this->pdf->clippingPathStop();
6064
-
6065
-            $this->_maxX = $this->parsingCss->value['old_maxX'];
6066
-            $this->_maxY = $this->parsingCss->value['old_maxY'];
6067
-            $this->_maxH = $this->parsingCss->value['old_maxH'];
6068
-
6069
-            $marge = array();
6070
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'];
6071
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'];
6072
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'];
6073
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'];
6074
-
6075
-            $x = $this->parsingCss->value['x'];
6076
-            $y = $this->parsingCss->value['y'];
6077
-            $w = $this->parsingCss->value['width']+$marge['l']+$marge['r'];
6078
-            $h = $this->parsingCss->value['height']+$marge['t']+$marge['b'];
6079
-
6080
-            if ($this->parsingCss->value['position']!='absolute') {
6081
-                $this->pdf->setXY($x+$w, $y);
6082
-
6083
-                $this->_maxX = max($this->_maxX, $x+$w);
6084
-                $this->_maxY = max($this->_maxY, $y+$h);
6085
-                $this->_maxH = max($this->_maxH, $h);
6086
-                $this->_maxE++;
6087
-            } else {
6088
-                // position
6089
-                $this->pdf->setXY($this->parsingCss->value['xc'], $this->parsingCss->value['yc']);
6090
-
6091
-                $this->_loadMax();
6092
-            }
6093
-
6094
-            $block = ($this->parsingCss->value['display']!='inline' && $this->parsingCss->value['position']!='absolute');
6095
-
6096
-            $this->parsingCss->load();
6097
-            $this->parsingCss->fontSet();
6098
-            $this->_loadMargin();
6099
-
6100
-            if ($block) $this->_tag_open_BR(array());
6101
-            if ($this->_debugActif) $this->_DEBUG_add('DRAW', false);
6102
-
6103
-            $this->_isInDraw = null;
6104
-
6105
-            return true;
6106
-        }
6107
-
6108
-        /**
6109
-         * tag : LINE
6110
-         * mode : OPEN
6111
-         *
6112
-         * @param  array $param
6113
-         * @return boolean
6114
-         */
6115
-        protected function _tag_open_LINE($param)
6116
-        {
6117
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'LINE');
6118
-
6119
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6120
-            $this->parsingCss->save();
6121
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6122
-            $styles['fill'] = null;
6123
-            $style = $this->pdf->svgSetStyle($styles);
6124
-
6125
-            $x1 = isset($param['x1']) ? $this->parsingCss->ConvertToMM($param['x1'], $this->_isInDraw['w']) : 0.;
6126
-            $y1 = isset($param['y1']) ? $this->parsingCss->ConvertToMM($param['y1'], $this->_isInDraw['h']) : 0.;
6127
-            $x2 = isset($param['x2']) ? $this->parsingCss->ConvertToMM($param['x2'], $this->_isInDraw['w']) : 0.;
6128
-            $y2 = isset($param['y2']) ? $this->parsingCss->ConvertToMM($param['y2'], $this->_isInDraw['h']) : 0.;
6129
-            $this->pdf->svgLine($x1, $y1, $x2, $y2);
6130
-
6131
-            $this->pdf->undoTransform();
6132
-            $this->parsingCss->load();
6133
-        }
6134
-
6135
-        /**
6136
-         * tag : RECT
6137
-         * mode : OPEN
6138
-         *
6139
-         * @param  array $param
6140
-         * @return boolean
6141
-         */
6142
-        protected function _tag_open_RECT($param)
6143
-        {
6144
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'RECT');
6145
-
6146
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6147
-            $this->parsingCss->save();
6148
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6149
-            $style = $this->pdf->svgSetStyle($styles);
6150
-
6151
-            $x = isset($param['x']) ? $this->parsingCss->ConvertToMM($param['x'], $this->_isInDraw['w']) : 0.;
6152
-            $y = isset($param['y']) ? $this->parsingCss->ConvertToMM($param['y'], $this->_isInDraw['h']) : 0.;
6153
-            $w = isset($param['w']) ? $this->parsingCss->ConvertToMM($param['w'], $this->_isInDraw['w']) : 0.;
6154
-            $h = isset($param['h']) ? $this->parsingCss->ConvertToMM($param['h'], $this->_isInDraw['h']) : 0.;
6155
-
6156
-            $this->pdf->svgRect($x, $y, $w, $h, $style);
6157
-
6158
-            $this->pdf->undoTransform();
6159
-            $this->parsingCss->load();
6160
-        }
6161
-
6162
-        /**
6163
-         * tag : CIRCLE
6164
-         * mode : OPEN
6165
-         *
6166
-         * @param  array $param
6167
-         * @return boolean
6168
-         */
6169
-        protected function _tag_open_CIRCLE($param)
6170
-        {
6171
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'CIRCLE');
6172
-
6173
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6174
-            $this->parsingCss->save();
6175
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6176
-            $style = $this->pdf->svgSetStyle($styles);
6177
-
6178
-            $cx = isset($param['cx']) ? $this->parsingCss->ConvertToMM($param['cx'], $this->_isInDraw['w']) : 0.;
6179
-            $cy = isset($param['cy']) ? $this->parsingCss->ConvertToMM($param['cy'], $this->_isInDraw['h']) : 0.;
6180
-            $r = isset($param['r']) ? $this->parsingCss->ConvertToMM($param['r'], $this->_isInDraw['w']) : 0.;
6181
-            $this->pdf->svgEllipse($cx, $cy, $r, $r, $style);
6182
-
6183
-            $this->pdf->undoTransform();
6184
-            $this->parsingCss->load();
6185
-        }
6186
-
6187
-        /**
6188
-         * tag : ELLIPSE
6189
-         * mode : OPEN
6190
-         *
6191
-         * @param  array $param
6192
-         * @return boolean
6193
-         */
6194
-        protected function _tag_open_ELLIPSE($param)
6195
-        {
6196
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'ELLIPSE');
6197
-
6198
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6199
-            $this->parsingCss->save();
6200
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6201
-            $style = $this->pdf->svgSetStyle($styles);
6202
-
6203
-            $cx = isset($param['cx']) ? $this->parsingCss->ConvertToMM($param['cx'], $this->_isInDraw['w']) : 0.;
6204
-            $cy = isset($param['cy']) ? $this->parsingCss->ConvertToMM($param['cy'], $this->_isInDraw['h']) : 0.;
6205
-            $rx = isset($param['ry']) ? $this->parsingCss->ConvertToMM($param['rx'], $this->_isInDraw['w']) : 0.;
6206
-            $ry = isset($param['rx']) ? $this->parsingCss->ConvertToMM($param['ry'], $this->_isInDraw['h']) : 0.;
6207
-            $this->pdf->svgEllipse($cx, $cy, $rx, $ry, $style);
6208
-
6209
-            $this->pdf->undoTransform();
6210
-            $this->parsingCss->load();
6211
-        }
6212
-
6213
-
6214
-        /**
6215
-         * tag : POLYLINE
6216
-         * mode : OPEN
6217
-         *
6218
-         * @param  array $param
6219
-         * @return boolean
6220
-         */
6221
-        protected function _tag_open_POLYLINE($param)
6222
-        {
6223
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'POLYGON');
6224
-
6225
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6226
-            $this->parsingCss->save();
6227
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6228
-            $style = $this->pdf->svgSetStyle($styles);
6229
-
6230
-            $path = isset($param['points']) ? $param['points'] : null;
6231
-            if ($path) {
6232
-                $path = str_replace(',', ' ', $path);
6233
-                $path = preg_replace('/[\s]+/', ' ', trim($path));
6234
-
6235
-                // prepare the path
6236
-                $path = explode(' ', $path);
6237
-                foreach ($path as $k => $v) {
6238
-                    $path[$k] = trim($v);
6239
-                    if ($path[$k]==='') unset($path[$k]);
6240
-                }
6241
-                $path = array_values($path);
6242
-
6243
-                $actions = array();
6244
-                for ($k=0; $k<count($path); $k+=2) {
6245
-                    $actions[] = array(
6246
-                        ($k ? 'L' : 'M') ,
6247
-                        $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']),
6248
-                        $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h'])
6249
-                    );
6250
-                }
6251
-
6252
-                // drawing
6253
-                $this->pdf->svgPolygone($actions, $style);
6254
-            }
6255
-
6256
-            $this->pdf->undoTransform();
6257
-            $this->parsingCss->load();
6258
-        }
6259
-
6260
-        /**
6261
-         * tag : POLYGON
6262
-         * mode : OPEN
6263
-         *
6264
-         * @param  array $param
6265
-         * @return boolean
6266
-         */
6267
-        protected function _tag_open_POLYGON($param)
6268
-        {
6269
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'POLYGON');
6270
-
6271
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6272
-            $this->parsingCss->save();
6273
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6274
-            $style = $this->pdf->svgSetStyle($styles);
6275
-
6276
-            $path = (isset($param['points']) ? $param['points'] : null);
6277
-            if ($path) {
6278
-                $path = str_replace(',', ' ', $path);
6279
-                $path = preg_replace('/[\s]+/', ' ', trim($path));
6280
-
6281
-                // prepare the path
6282
-                $path = explode(' ', $path);
6283
-                foreach ($path as $k => $v) {
6284
-                    $path[$k] = trim($v);
6285
-                    if ($path[$k]==='') unset($path[$k]);
6286
-                }
6287
-                $path = array_values($path);
6288
-
6289
-                $actions = array();
6290
-                for ($k=0; $k<count($path); $k+=2) {
6291
-                    $actions[] = array(
6292
-                        ($k ? 'L' : 'M') ,
6293
-                        $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']),
6294
-                        $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h'])
6295
-                    );
6296
-                }
6297
-                $actions[] = array('z');
6298
-
6299
-                // drawing
6300
-                $this->pdf->svgPolygone($actions, $style);
6301
-            }
6302
-
6303
-            $this->pdf->undoTransform();
6304
-            $this->parsingCss->load();
6305
-        }
6306
-
6307
-        /**
6308
-         * tag : PATH
6309
-         * mode : OPEN
6310
-         *
6311
-         * @param  array $param
6312
-         * @return boolean
6313
-         */
6314
-        protected function _tag_open_PATH($param)
6315
-        {
6316
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'PATH');
6317
-
6318
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6319
-            $this->parsingCss->save();
6320
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6321
-            $style = $this->pdf->svgSetStyle($styles);
6322
-
6323
-            $path = isset($param['d']) ? $param['d'] : null;
6324
-
6325
-            if ($path) {
6326
-                // prepare the path
6327
-                $path = str_replace(',', ' ', $path);
6328
-                $path = preg_replace('/([a-zA-Z])([0-9\.\-])/', '$1 $2', $path);
6329
-                $path = preg_replace('/([0-9\.])([a-zA-Z])/', '$1 $2', $path);
6330
-                $path = preg_replace('/[\s]+/', ' ', trim($path));
6331
-                $path = preg_replace('/ ([a-z]{2})/', '$1', $path);
6332
-
6333
-                $path = explode(' ', $path);
6334
-                foreach ($path as $k => $v) {
6335
-                    $path[$k] = trim($v);
6336
-                    if ($path[$k]==='') unset($path[$k]);
6337
-                }
6338
-                $path = array_values($path);
6339
-
6340
-                // read each actions in the path
6341
-                $actions = array();
6342
-                $action = array();
6343
-                $lastAction = null; // last action found
6344
-                for ($k=0; $k<count($path);true) {
6345
-
6346
-                    // for this actions, we can not have multi coordonate
6347
-                    if (in_array($lastAction, array('z', 'Z'))) {
6348
-                        $lastAction = null;
6349
-                    }
6350
-
6351
-                    // read the new action (forcing if no action before)
6352
-                    if (preg_match('/^[a-z]+$/i', $path[$k]) || $lastAction===null) {
6353
-                        $lastAction = $path[$k];
6354
-                        $k++;
6355
-                    }
6356
-
6357
-                    // current action
6358
-                    $action = array();
6359
-                    $action[] = $lastAction;
6360
-                    switch($lastAction)
6361
-                    {
6362
-                        case 'C':
6363
-                        case 'c':
6364
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x1
6365
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y1
6366
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+2], $this->_isInDraw['w']);    // x2
6367
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+3], $this->_isInDraw['h']);    // y2
6368
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+4], $this->_isInDraw['w']);    // x
6369
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+5], $this->_isInDraw['h']);    // y
6370
-                            $k+= 6;
6371
-                            break;
6372
-
6373
-                        case 'Q':
6374
-                        case 'S':
6375
-                        case 'q':
6376
-                        case 's':
6377
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x2
6378
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y2
6379
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+2], $this->_isInDraw['w']);    // x
6380
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+3], $this->_isInDraw['h']);    // y
6381
-                            $k+= 4;
6382
-                            break;
6383
-
6384
-                        case 'A':
6385
-                        case 'a':
6386
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // rx
6387
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // ry
6388
-                            $action[] = 1.*$path[$k+2];                                                        // angle de deviation de l'axe X
6389
-                            $action[] = ($path[$k+3]=='1') ? 1 : 0;                                            // large-arc-flag
6390
-                            $action[] = ($path[$k+4]=='1') ? 1 : 0;                                            // sweep-flag
6391
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+5], $this->_isInDraw['w']);    // x
6392
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+6], $this->_isInDraw['h']);    // y
6393
-                            $k+= 7;
6394
-                            break;
6395
-
6396
-                        case 'M':
6397
-                        case 'L':
6398
-                        case 'T':
6399
-                        case 'm':
6400
-                        case 'l':
6401
-                        case 't':
6402
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x
6403
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y
6404
-                            $k+= 2;
6405
-                            break;
6406
-
6407
-                        case 'H':
6408
-                        case 'h':
6409
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x
6410
-                            $k+= 1;
6411
-                            break;
6412
-
6413
-                        case 'V':
6414
-                        case 'v':
6415
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['h']);    // y
6416
-                            $k+= 1;
6417
-                            break;
6418
-
6419
-                        case 'z':
6420
-                        case 'Z':
6421
-                        default:
6422
-                            break;
6423
-                    }
6424
-                    // add the action
6425
-                    $actions[] = $action;
6426
-                }
6427
-
6428
-                // drawing
6429
-                $this->pdf->svgPolygone($actions, $style);
6430
-            }
6431
-
6432
-            $this->pdf->undoTransform();
6433
-            $this->parsingCss->load();
6434
-        }
6435
-
6436
-        /**
6437
-         * tag : G
6438
-         * mode : OPEN
6439
-         *
6440
-         * @param  array $param
6441
-         * @return boolean
6442
-         */
6443
-        protected function _tag_open_G($param)
6444
-        {
6445
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'G');
6446
-
6447
-            $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6448
-            $this->parsingCss->save();
6449
-            $styles = $this->parsingCss->getSvgStyle('path', $param);
6450
-            $style = $this->pdf->svgSetStyle($styles);
6451
-        }
6452
-
6453
-        /**
6454
-         * tag : G
6455
-         * mode : CLOSE
6456
-         *
6457
-         * @param  array $param
6458
-         * @return boolean
6459
-         */
6460
-        protected function _tag_close_G($param)
6461
-        {
6462
-            $this->pdf->undoTransform();
6463
-            $this->parsingCss->load();
6464
-        }
6465
-
6466
-        /**
6467
-         * new page for the automatic Index, does not use thie method. Only HTML2PDF_myPdf could use it !!!!
6468
-         *
6469
-         * @param  &int $page
6470
-         * @return integer $oldPage
6471
-         */
6472
-        public function _INDEX_NewPage(&$page)
6473
-        {
6474
-            if ($page) {
6475
-                $oldPage = $this->pdf->getPage();
6476
-                $this->pdf->setPage($page);
6477
-                $this->pdf->setXY($this->_margeLeft, $this->_margeTop);
6478
-                $this->_maxH = 0;
6479
-                $page++;
6480
-                return $oldPage;
6481
-            } else {
6482
-                $this->_setNewPage();
6483
-                return null;
6484
-            }
6485
-        }
6486
-
6487
-    }
501
+			exit;
502
+		}
503
+
504
+		/**
505
+		 * set the default margins of the page
506
+		 *
507
+		 * @access protected
508
+		 * @param  int $left   (mm, left margin)
509
+		 * @param  int $top    (mm, top margin)
510
+		 * @param  int $right  (mm, right margin, if null => left=right)
511
+		 * @param  int $bottom (mm, bottom margin, if null => bottom=8mm)
512
+		 */
513
+		protected function _setDefaultMargins($left, $top, $right = null, $bottom = null)
514
+		{
515
+			if ($right===null)  $right = $left;
516
+			if ($bottom===null) $bottom = 8;
517
+
518
+			$this->_defaultLeft   = $this->parsingCss->ConvertToMM($left.'mm');
519
+			$this->_defaultTop    = $this->parsingCss->ConvertToMM($top.'mm');
520
+			$this->_defaultRight  = $this->parsingCss->ConvertToMM($right.'mm');
521
+			$this->_defaultBottom = $this->parsingCss->ConvertToMM($bottom.'mm');
522
+		}
523
+
524
+		/**
525
+		 * create a new page
526
+		 *
527
+		 * @access protected
528
+		 * @param  mixed   $format
529
+		 * @param  string  $orientation
530
+		 * @param  array   $background background information
531
+		 * @param  integer $curr real position in the html parseur (if break line in the write of a text)
532
+		 * @param  boolean $resetPageNumber
533
+		 */
534
+		protected function _setNewPage($format = null, $orientation = '', $background = null, $curr = null, $resetPageNumber=false)
535
+		{
536
+			$this->_firstPage = false;
537
+
538
+			$this->_format = $format ? $format : $this->_format;
539
+			$this->_orientation = $orientation ? $orientation : $this->_orientation;
540
+			$this->_background = $background!==null ? $background : $this->_background;
541
+			$this->_maxY = 0;
542
+			$this->_maxX = 0;
543
+			$this->_maxH = 0;
544
+			$this->_maxE = 0;
545
+
546
+			$this->pdf->SetMargins($this->_defaultLeft, $this->_defaultTop, $this->_defaultRight);
547
+
548
+			if ($resetPageNumber) {
549
+				$this->pdf->startPageGroup();
550
+			}
551
+
552
+			$this->pdf->AddPage($this->_orientation, $this->_format);
553
+
554
+			if ($resetPageNumber) {
555
+				$this->pdf->myStartPageGroup();
556
+			}
557
+
558
+			$this->_page++;
559
+
560
+			if (!$this->_subPart && !$this->_isSubPart) {
561
+				if (is_array($this->_background)) {
562
+					if (isset($this->_background['color']) && $this->_background['color']) {
563
+						$this->pdf->setFillColorArray($this->_background['color']);
564
+						$this->pdf->Rect(0, 0, $this->pdf->getW(), $this->pdf->getH(), 'F');
565
+					}
566
+
567
+					if (isset($this->_background['img']) && $this->_background['img'])
568
+						$this->pdf->Image($this->_background['img'], $this->_background['posX'], $this->_background['posY'], $this->_background['width']);
569
+				}
570
+
571
+				$this->_setPageHeader();
572
+				$this->_setPageFooter();
573
+			}
574
+
575
+			$this->_setMargins();
576
+			$this->pdf->setY($this->_margeTop);
577
+
578
+			$this->_setNewPositionForNewLine($curr);
579
+			$this->_maxH = 0;
580
+		}
581
+
582
+		/**
583
+		 * set the real margin, using the default margins and the page margins
584
+		 *
585
+		 * @access protected
586
+		 */
587
+		protected function _setMargins()
588
+		{
589
+			// prepare the margins
590
+			$this->_margeLeft   = $this->_defaultLeft   + (isset($this->_background['left'])   ? $this->_background['left']   : 0);
591
+			$this->_margeRight  = $this->_defaultRight  + (isset($this->_background['right'])  ? $this->_background['right']  : 0);
592
+			$this->_margeTop    = $this->_defaultTop    + (isset($this->_background['top'])    ? $this->_background['top']    : 0);
593
+			$this->_margeBottom = $this->_defaultBottom + (isset($this->_background['bottom']) ? $this->_background['bottom'] : 0);
594
+
595
+			// set the PDF margins
596
+			$this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
597
+			$this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
598
+
599
+			// set the float Margins
600
+			$this->_pageMarges = array();
601
+			if ($this->_isInParagraph!==false) {
602
+				$this->_pageMarges[floor($this->_margeTop*100)] = array($this->_isInParagraph[0], $this->pdf->getW()-$this->_isInParagraph[1]);
603
+			} else {
604
+				$this->_pageMarges[floor($this->_margeTop*100)] = array($this->_margeLeft, $this->pdf->getW()-$this->_margeRight);
605
+			}
606
+		}
607
+
608
+		/**
609
+		 * add a debug step
610
+		 *
611
+		 * @access protected
612
+		 * @param  string  $name step name
613
+		 * @param  boolean $level (true=up, false=down, null=nothing to do)
614
+		 * @return $this
615
+		 */
616
+		protected function _DEBUG_add($name, $level=null)
617
+		{
618
+			// if true : UP
619
+			if ($level===true) $this->_debugLevel++;
620
+
621
+			$name   = str_repeat('  ', $this->_debugLevel). $name.($level===true ? ' Begin' : ($level===false ? ' End' : ''));
622
+			$time  = microtime(true);
623
+			$usage = ($this->_debugOkUsage ? memory_get_usage() : 0);
624
+			$peak  = ($this->_debugOkPeak ? memory_get_peak_usage() : 0);
625
+
626
+			$this->_DEBUG_stepline(
627
+				$name,
628
+				number_format(($time - $this->_debugStartTime)*1000, 1, '.', ' ').' ms',
629
+				number_format(($time - $this->_debugLastTime)*1000, 1, '.', ' ').' ms',
630
+				number_format($usage/1024, 1, '.', ' ').' Ko',
631
+				number_format($peak/1024, 1, '.', ' ').' Ko'
632
+			);
633
+
634
+			$this->_debugLastTime = $time;
635
+
636
+			// it false : DOWN
637
+			if ($level===false) $this->_debugLevel--;
638
+
639
+			return $this;
640
+		}
641
+
642
+		/**
643
+		 * display a debug line
644
+		 *
645
+		 *
646
+		 * @access protected
647
+		 * @param  string $name
648
+		 * @param  string $timeTotal
649
+		 * @param  string $timeStep
650
+		 * @param  string $memoryUsage
651
+		 * @param  string $memoryPeak
652
+		 */
653
+		protected function _DEBUG_stepline($name, $timeTotal, $timeStep, $memoryUsage, $memoryPeak)
654
+		{
655
+			$txt = str_pad($name, 30, ' ', STR_PAD_RIGHT).
656
+					str_pad($timeTotal, 12, ' ', STR_PAD_LEFT).
657
+					str_pad($timeStep, 12, ' ', STR_PAD_LEFT).
658
+					str_pad($memoryUsage, 15, ' ', STR_PAD_LEFT).
659
+					str_pad($memoryPeak, 15, ' ', STR_PAD_LEFT);
660
+
661
+			echo '<pre style="padding:0; margin:0">'.$txt.'</pre>';
662
+		}
663
+
664
+		/**
665
+		 * get the Min and Max X, for Y (use the float margins)
666
+		 *
667
+		 * @access protected
668
+		 * @param  float $y
669
+		 * @return array(float, float)
670
+		 */
671
+		protected function _getMargins($y)
672
+		{
673
+			$y = floor($y*100);
674
+			$x = array($this->pdf->getlMargin(), $this->pdf->getW()-$this->pdf->getrMargin());
675
+
676
+			foreach ($this->_pageMarges as $mY => $mX)
677
+				if ($mY<=$y) $x = $mX;
678
+
679
+			return $x;
680
+		}
681
+
682
+		/**
683
+		 * Add margins, for a float
684
+		 *
685
+		 * @access protected
686
+		 * @param  string $float (left / right)
687
+		 * @param  float  $xLeft
688
+		 * @param  float  $yTop
689
+		 * @param  float  $xRight
690
+		 * @param  float  $yBottom
691
+		 */
692
+		protected function _addMargins($float, $xLeft, $yTop, $xRight, $yBottom)
693
+		{
694
+			// get the current float margins, for top and bottom
695
+			$oldTop    = $this->_getMargins($yTop);
696
+			$oldBottom = $this->_getMargins($yBottom);
697
+
698
+			// update the top float margin
699
+			if ($float=='left'  && $oldTop[0]<$xRight) $oldTop[0] = $xRight;
700
+			if ($float=='right' && $oldTop[1]>$xLeft)  $oldTop[1] = $xLeft;
701
+
702
+			$yTop = floor($yTop*100);
703
+			$yBottom = floor($yBottom*100);
704
+
705
+			// erase all the float margins that are smaller than the new one
706
+			foreach ($this->_pageMarges as $mY => $mX) {
707
+				if ($mY<$yTop) continue;
708
+				if ($mY>$yBottom) break;
709
+				if ($float=='left' && $this->_pageMarges[$mY][0]<$xRight)  unset($this->_pageMarges[$mY]);
710
+				if ($float=='right' && $this->_pageMarges[$mY][1]>$xLeft) unset($this->_pageMarges[$mY]);
711
+			}
712
+
713
+			// save the new Top and Bottom margins
714
+			$this->_pageMarges[$yTop] = $oldTop;
715
+			$this->_pageMarges[$yBottom] = $oldBottom;
716
+
717
+			// sort the margins
718
+			ksort($this->_pageMarges);
719
+
720
+			// we are just after float
721
+			$this->_isAfterFloat = true;
722
+		}
723
+
724
+		/**
725
+		 * Save old margins (push), and set new ones
726
+		 *
727
+		 * @access protected
728
+		 * @param  float  $ml left margin
729
+		 * @param  float  $mt top margin
730
+		 * @param  float  $mr right margin
731
+		 */
732
+		protected function _saveMargin($ml, $mt, $mr)
733
+		{
734
+			// save old margins
735
+			$this->_marges[] = array('l' => $this->pdf->getlMargin(), 't' => $this->pdf->gettMargin(), 'r' => $this->pdf->getrMargin(), 'page' => $this->_pageMarges);
736
+
737
+			// set new ones
738
+			$this->pdf->SetMargins($ml, $mt, $mr);
739
+
740
+			// prepare for float margins
741
+			$this->_pageMarges = array();
742
+			$this->_pageMarges[floor($mt*100)] = array($ml, $this->pdf->getW()-$mr);
743
+		}
744
+
745
+		/**
746
+		 * load the last saved margins (pop)
747
+		 *
748
+		 * @access protected
749
+		 */
750
+		protected function _loadMargin()
751
+		{
752
+			$old = array_pop($this->_marges);
753
+			if ($old) {
754
+				$ml = $old['l'];
755
+				$mt = $old['t'];
756
+				$mr = $old['r'];
757
+				$mP = $old['page'];
758
+			} else {
759
+				$ml = $this->_margeLeft;
760
+				$mt = 0;
761
+				$mr = $this->_margeRight;
762
+				$mP = array($mt => array($ml, $this->pdf->getW()-$mr));
763
+			}
764
+
765
+			$this->pdf->SetMargins($ml, $mt, $mr);
766
+			$this->_pageMarges = $mP;
767
+		}
768
+
769
+		/**
770
+		 * save the current maxs (push)
771
+		 *
772
+		 * @access protected
773
+		 */
774
+		protected function _saveMax()
775
+		{
776
+			$this->_maxSave[] = array($this->_maxX, $this->_maxY, $this->_maxH, $this->_maxE);
777
+		}
778
+
779
+		/**
780
+		 * load the last saved current maxs (pop)
781
+		 *
782
+		 * @access protected
783
+		 */
784
+		protected function _loadMax()
785
+		{
786
+			$old = array_pop($this->_maxSave);
787
+
788
+			if ($old) {
789
+				$this->_maxX = $old[0];
790
+				$this->_maxY = $old[1];
791
+				$this->_maxH = $old[2];
792
+				$this->_maxE = $old[3];
793
+			} else {
794
+				$this->_maxX = 0;
795
+				$this->_maxY = 0;
796
+				$this->_maxH = 0;
797
+				$this->_maxE = 0;
798
+			}
799
+		}
800
+
801
+		/**
802
+		 * draw the PDF header with the HTML in page_header
803
+		 *
804
+		 * @access protected
805
+		 */
806
+		protected function _setPageHeader()
807
+		{
808
+			if (!count($this->_subHEADER)) return false;
809
+
810
+			$oldParsePos = $this->_parsePos;
811
+			$oldParseCode = $this->parsingHtml->code;
812
+
813
+			$this->_parsePos = 0;
814
+			$this->parsingHtml->code = $this->_subHEADER;
815
+			$this->_makeHTMLcode();
816
+
817
+			$this->_parsePos = $oldParsePos;
818
+			$this->parsingHtml->code = $oldParseCode;
819
+		}
820
+
821
+		/**
822
+		 * draw the PDF footer with the HTML in page_footer
823
+		 *
824
+		 * @access protected
825
+		 */
826
+		protected function _setPageFooter()
827
+		{
828
+			if (!count($this->_subFOOTER)) return false;
829
+
830
+			$oldParsePos = $this->_parsePos;
831
+			$oldParseCode = $this->parsingHtml->code;
832
+
833
+			$this->_parsePos = 0;
834
+			$this->parsingHtml->code = $this->_subFOOTER;
835
+			$this->_isInFooter = true;
836
+			$this->_makeHTMLcode();
837
+			$this->_isInFooter = false;
838
+
839
+			$this->_parsePos = $oldParsePos;
840
+			$this->parsingHtml->code = $oldParseCode;
841
+		}
842
+
843
+		/**
844
+		 * new line, with a specific height
845
+		 *
846
+		 * @access protected
847
+		 * @param float   $h
848
+		 * @param integer $curr real current position in the text, if new line in the write of a text
849
+		 */
850
+		protected function _setNewLine($h, $curr = null)
851
+		{
852
+			$this->pdf->Ln($h);
853
+			$this->_setNewPositionForNewLine($curr);
854
+		}
855
+
856
+		/**
857
+		 * calculate the start position of the next line,  depending on the text-align
858
+		 *
859
+		 * @access protected
860
+		 * @param  integer $curr real current position in the text, if new line in the write of a text
861
+		 */
862
+		protected function _setNewPositionForNewLine($curr = null)
863
+		{
864
+			// get the margins for the current line
865
+			list($lx, $rx) = $this->_getMargins($this->pdf->getY());
866
+			$this->pdf->setX($lx);
867
+			$wMax = $rx-$lx;
868
+			$this->_currentH = 0;
869
+
870
+			// if subPart => return because align left
871
+			if ($this->_subPart || $this->_isSubPart || $this->_isForOneLine) {
872
+				$this->pdf->setWordSpacing(0);
873
+				return null;
874
+			}
875
+
876
+			// create the sub object
877
+			$sub = null;
878
+			$this->_createSubHTML($sub);
879
+			$sub->_saveMargin(0, 0, $sub->pdf->getW()-$wMax);
880
+			$sub->_isForOneLine = true;
881
+			$sub->_parsePos = $this->_parsePos;
882
+			$sub->parsingHtml->code = $this->parsingHtml->code;
883
+
884
+			// if $curr => adapt the current position of the parsing
885
+			if ($curr!==null && $sub->parsingHtml->code[$this->_parsePos]['name']=='write') {
886
+				$txt = $sub->parsingHtml->code[$this->_parsePos]['param']['txt'];
887
+				$txt = str_replace('[[page_cu]]', $sub->pdf->getMyNumPage($this->_page), $txt);
888
+				$sub->parsingHtml->code[$this->_parsePos]['param']['txt'] = substr($txt, $curr+1);
889
+			} else
890
+				$sub->_parsePos++;
891
+
892
+			// for each element of the parsing => load the action
893
+			$res = null;
894
+			for ($sub->_parsePos; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
895
+				$action = $sub->parsingHtml->code[$sub->_parsePos];
896
+				$res = $sub->_executeAction($action);
897
+				if (!$res) break;
898
+			}
899
+
900
+			$w = $sub->_maxX; // max width
901
+			$h = $sub->_maxH; // max height
902
+			$e = ($res===null ? $sub->_maxE : 0); // maxnumber of elemets on the line
903
+
904
+			// destroy the sub HTML
905
+			$this->_destroySubHTML($sub);
906
+
907
+			// adapt the start of the line, depending on the text-align
908
+			if ($this->parsingCss->value['text-align']=='center')
909
+				$this->pdf->setX(($rx+$this->pdf->getX()-$w)*0.5-0.01);
910
+			else if ($this->parsingCss->value['text-align']=='right')
911
+				$this->pdf->setX($rx-$w-0.01);
912
+			else
913
+				$this->pdf->setX($lx);
914
+
915
+			// set the height of the line
916
+			$this->_currentH = $h;
917
+
918
+			// if justify => set the word spacing
919
+			if ($this->parsingCss->value['text-align']=='justify' && $e>1) {
920
+				$this->pdf->setWordSpacing(($wMax-$w)/($e-1));
921
+			} else {
922
+				$this->pdf->setWordSpacing(0);
923
+			}
924
+		}
925
+
926
+		/**
927
+		 * prepare HTML2PDF::$_subobj (used for create the sub HTML2PDF objects
928
+		 *
929
+		 * @access protected
930
+		 */
931
+		protected function _prepareSubObj()
932
+		{
933
+			$pdf = null;
934
+
935
+			// create the sub object
936
+			HTML2PDF::$_subobj = new HTML2PDF(
937
+										$this->_orientation,
938
+										$this->_format,
939
+										$this->_langue,
940
+										$this->_unicode,
941
+										$this->_encoding,
942
+										array($this->_defaultLeft,$this->_defaultTop,$this->_defaultRight,$this->_defaultBottom)
943
+									);
944
+
945
+			// init
946
+			HTML2PDF::$_subobj->setTestTdInOnePage($this->_testTdInOnepage);
947
+			HTML2PDF::$_subobj->setTestIsImage($this->_testIsImage);
948
+			HTML2PDF::$_subobj->setTestIsDeprecated($this->_testIsDeprecated);
949
+			HTML2PDF::$_subobj->setDefaultFont($this->_defaultFont);
950
+			HTML2PDF::$_subobj->parsingCss->css            = &$this->parsingCss->css;
951
+			HTML2PDF::$_subobj->parsingCss->cssKeys        = &$this->parsingCss->cssKeys;
952
+
953
+			// clone font from the original PDF
954
+			HTML2PDF::$_subobj->pdf->cloneFontFrom($this->pdf);
955
+
956
+			// remove the link to the parent
957
+			HTML2PDF::$_subobj->parsingCss->setPdfParent($pdf);
958
+		}
959
+
960
+		/**
961
+		 * create a sub HTML2PDF, to calculate the multi-tables
962
+		 *
963
+		 * @access protected
964
+		 * @param  &HTML2PDF $subHtml sub HTML2PDF to create
965
+		 * @param  integer   $cellmargin if in a TD : cellmargin of this td
966
+		 */
967
+		protected function _createSubHTML(&$subHtml, $cellmargin=0)
968
+		{
969
+			// prepare the subObject, if never prepare before
970
+			if (HTML2PDF::$_subobj===null) {
971
+				$this->_prepareSubObj();
972
+			}
973
+
974
+			// calculate the width to use
975
+			if ($this->parsingCss->value['width']) {
976
+				$marge = $cellmargin*2;
977
+				$marge+= $this->parsingCss->value['padding']['l'] + $this->parsingCss->value['padding']['r'];
978
+				$marge+= $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['border']['r']['width'];
979
+				$marge = $this->pdf->getW() - $this->parsingCss->value['width'] + $marge;
980
+			} else {
981
+				$marge = $this->_margeLeft+$this->_margeRight;
982
+			}
983
+
984
+			// BUGFIX : we have to call the method, because of a bug in php 5.1.6
985
+			HTML2PDF::$_subobj->pdf->getPage();
986
+
987
+			// clone the sub oject
988
+			$subHtml = clone HTML2PDF::$_subobj;
989
+			$subHtml->parsingCss->table = $this->parsingCss->table;
990
+			$subHtml->parsingCss->value = $this->parsingCss->value;
991
+			$subHtml->initSubHtml(
992
+				$this->_format,
993
+				$this->_orientation,
994
+				$marge,
995
+				$this->_page,
996
+				$this->_defList,
997
+				$this->pdf->getMyLastPageGroup(),
998
+				$this->pdf->getMyLastPageGroupNb()
999
+			);
1000
+		}
1001
+
1002
+		/**
1003
+		 * destroy a subHTML2PDF
1004
+		 *
1005
+		 * @access protected
1006
+		 */
1007
+		protected function _destroySubHTML(&$subHtml)
1008
+		{
1009
+			unset($subHtml);
1010
+			$subHtml = null;
1011
+		}
1012
+
1013
+		/**
1014
+		 * Convert a arabic number in roman number
1015
+		 *
1016
+		 * @access protected
1017
+		 * @param  integer $nbArabic
1018
+		 * @return string  $nbRoman
1019
+		 */
1020
+		protected function _listeArab2Rom($nbArabic)
1021
+		{
1022
+			$nbBaseTen    = array('I','X','C','M');
1023
+			$nbBaseFive    = array('V','L','D');
1024
+			$nbRoman    = '';
1025
+
1026
+			if ($nbArabic<1)    return $nbArabic;
1027
+			if ($nbArabic>3999) return $nbArabic;
1028
+
1029
+			for ($i=3; $i>=0 ; $i--) {
1030
+				$chiffre=floor($nbArabic/pow(10, $i));
1031
+				if ($chiffre>=1) {
1032
+					$nbArabic=$nbArabic-$chiffre*pow(10, $i);
1033
+					if ($chiffre<=3) {
1034
+						for ($j=$chiffre; $j>=1; $j--) {
1035
+							$nbRoman=$nbRoman.$nbBaseTen[$i];
1036
+						}
1037
+					} else if ($chiffre==9) {
1038
+						$nbRoman=$nbRoman.$nbBaseTen[$i].$nbBaseTen[$i+1];
1039
+					} else if ($chiffre==4) {
1040
+					$nbRoman=$nbRoman.$nbBaseTen[$i].$nbBaseFive[$i];
1041
+					} else {
1042
+						$nbRoman=$nbRoman.$nbBaseFive[$i];
1043
+						for ($j=$chiffre-5; $j>=1; $j--) {
1044
+							$nbRoman=$nbRoman.$nbBaseTen[$i];
1045
+						}
1046
+					}
1047
+				}
1048
+			}
1049
+			return $nbRoman;
1050
+		}
1051
+
1052
+		/**
1053
+		 * add a LI to the current level
1054
+		 *
1055
+		 * @access protected
1056
+		 */
1057
+		protected function _listeAddLi()
1058
+		{
1059
+			$this->_defList[count($this->_defList)-1]['nb']++;
1060
+		}
1061
+
1062
+		/**
1063
+		 * get the width to use for the column of the list
1064
+		 *
1065
+		 * @access protected
1066
+		 * @return string $width
1067
+		 */
1068
+		protected function _listeGetWidth()
1069
+		{
1070
+			return '7mm';
1071
+		}
1072
+
1073
+		/**
1074
+		 * get the padding to use for the column of the list
1075
+		 *
1076
+		 * @access protected
1077
+		 * @return string $padding
1078
+		 */
1079
+		protected function _listeGetPadding()
1080
+		{
1081
+			return '1mm';
1082
+		}
1083
+
1084
+		/**
1085
+		 * get the information of the li on the current level
1086
+		 *
1087
+		 * @access protected
1088
+		 * @return array(fontName, small size, string)
1089
+		 */
1090
+		protected function _listeGetLi()
1091
+		{
1092
+			$im = $this->_defList[count($this->_defList)-1]['img'];
1093
+			$st = $this->_defList[count($this->_defList)-1]['style'];
1094
+			$nb = $this->_defList[count($this->_defList)-1]['nb'];
1095
+			$up = (substr($st, 0, 6)=='upper-');
1096
+
1097
+			if ($im) return array(false, false, $im);
1098
+
1099
+			switch($st)
1100
+			{
1101
+				case 'none':
1102
+					return array('helvetica', true, ' ');
1103
+
1104
+				case 'upper-alpha':
1105
+				case 'lower-alpha':
1106
+					$str = '';
1107
+					while ($nb>26) {
1108
+						$str = chr(96+$nb%26).$str;
1109
+						$nb = floor($nb/26);
1110
+					}
1111
+					$str = chr(96+$nb).$str;
1112
+
1113
+					return array('helvetica', false, ($up ? strtoupper($str) : $str).'.');
1114
+
1115
+				case 'upper-roman':
1116
+				case 'lower-roman':
1117
+					$str = $this->_listeArab2Rom($nb);
1118
+
1119
+					return array('helvetica', false, ($up ? strtoupper($str) : $str).'.');
1120
+
1121
+				case 'decimal':
1122
+					return array('helvetica', false, $nb.'.');
1123
+
1124
+				case 'square':
1125
+					return array('zapfdingbats', true, chr(110));
1126
+
1127
+				case 'circle':
1128
+					return array('zapfdingbats', true, chr(109));
1129
+
1130
+				case 'disc':
1131
+				default:
1132
+					return array('zapfdingbats', true, chr(108));
1133
+			}
1134
+		}
1135
+
1136
+		/**
1137
+		 * add a level to the list
1138
+		 *
1139
+		 * @access protected
1140
+		 * @param  string $type  : ul, ol
1141
+		 * @param  string $style : lower-alpha, ...
1142
+		 * @param  string $img
1143
+		 */
1144
+		protected function _listeAddLevel($type = 'ul', $style = '', $img = null)
1145
+		{
1146
+			// get the url of the image, if we want to use a image
1147
+			if ($img) {
1148
+				if (preg_match('/^url\(([^)]+)\)$/isU', trim($img), $match)) {
1149
+					$img = $match[1];
1150
+				} else {
1151
+					$img = null;
1152
+				}
1153
+			} else {
1154
+				$img = null;
1155
+			}
1156
+
1157
+			// prepare the datas
1158
+			if (!in_array($type, array('ul', 'ol'))) $type = 'ul';
1159
+			if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) $style = '';
1160
+
1161
+			if (!$style) {
1162
+				if ($type=='ul')    $style = 'disc';
1163
+				else                $style = 'decimal';
1164
+			}
1165
+
1166
+			// add the new level
1167
+			$this->_defList[count($this->_defList)] = array('style' => $style, 'nb' => 0, 'img' => $img);
1168
+		}
1169
+
1170
+		/**
1171
+		 * remove a level to the list
1172
+		 *
1173
+		 * @access protected
1174
+		 */
1175
+		protected function _listeDelLevel()
1176
+		{
1177
+			if (count($this->_defList)) {
1178
+				unset($this->_defList[count($this->_defList)-1]);
1179
+				$this->_defList = array_values($this->_defList);
1180
+			}
1181
+		}
1182
+
1183
+		/**
1184
+		 * execute the actions to convert the html
1185
+		 *
1186
+		 * @access protected
1187
+		 */
1188
+		protected function _makeHTMLcode()
1189
+		{
1190
+			// foreach elements of the parsing
1191
+			for ($this->_parsePos=0; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
1192
+
1193
+				// get the action to do
1194
+				$action = $this->parsingHtml->code[$this->_parsePos];
1195
+
1196
+				// if it is a opening of table / ul / ol
1197
+				if (in_array($action['name'], array('table', 'ul', 'ol')) && !$action['close']) {
1198
+
1199
+					//  we will work as a sub HTML to calculate the size of the element
1200
+					$this->_subPart = true;
1201
+
1202
+					// get the name of the opening tag
1203
+					$tagOpen = $action['name'];
1204
+
1205
+					// save the actual pos on the parsing
1206
+					$this->_tempPos = $this->_parsePos;
1207
+
1208
+					// foreach elements, while we are in the opened tag
1209
+					while (isset($this->parsingHtml->code[$this->_tempPos]) && !($this->parsingHtml->code[$this->_tempPos]['name']==$tagOpen && $this->parsingHtml->code[$this->_tempPos]['close'])) {
1210
+						// make the action
1211
+						$this->_executeAction($this->parsingHtml->code[$this->_tempPos]);
1212
+						$this->_tempPos++;
1213
+					}
1214
+
1215
+					// execute the closure of the tag
1216
+					if (isset($this->parsingHtml->code[$this->_tempPos])) {
1217
+						$this->_executeAction($this->parsingHtml->code[$this->_tempPos]);
1218
+					}
1219
+
1220
+					// end of the sub part
1221
+					$this->_subPart = false;
1222
+				}
1223
+
1224
+				// execute the action
1225
+				$this->_executeAction($action);
1226
+			}
1227
+		}
1228
+
1229
+		/**
1230
+		 * execute the action from the parsing
1231
+		 *
1232
+		 * @access protected
1233
+		 * @param  array $action
1234
+		 */
1235
+		protected function _executeAction($action)
1236
+		{
1237
+			// name of the action
1238
+			$fnc = ($action['close'] ? '_tag_close_' : '_tag_open_').strtoupper($action['name']);
1239
+
1240
+			// parameters of the action
1241
+			$param = $action['param'];
1242
+
1243
+			// if it the first action of the first page, and if it is not a open tag of PAGE => create the new page
1244
+			if ($fnc!='_tag_open_PAGE' && $this->_firstPage) {
1245
+				$this->_setNewPage();
1246
+			}
1247
+
1248
+			// the action must exist
1249
+			if (!is_callable(array(&$this, $fnc))) {
1250
+				throw new HTML2PDF_exception(1, strtoupper($action['name']), $this->parsingHtml->getHtmlErrorCode($action['html_pos']));
1251
+			}
1252
+
1253
+			// lauch the action
1254
+			$res = $this->{$fnc}($param);
1255
+
1256
+			// save the name of the action
1257
+			$this->_previousCall = $fnc;
1258
+
1259
+			// return the result
1260
+			return $res;
1261
+		}
1262
+
1263
+		/**
1264
+		 * get the position of the element on the current line, depending on his height
1265
+		 *
1266
+		 * @access protected
1267
+		 * @param  float $h
1268
+		 * @return float
1269
+		 */
1270
+		protected function _getElementY($h)
1271
+		{
1272
+			if ($this->_subPart || $this->_isSubPart || !$this->_currentH || $this->_currentH<$h)
1273
+				return 0;
1274
+
1275
+			return ($this->_currentH-$h)*0.8;
1276
+		}
1277
+
1278
+		/**
1279
+		 * make a break line
1280
+		 *
1281
+		 * @access protected
1282
+		 * @param  float $h current line height
1283
+		 * @param  integer $curr real current position in the text, if new line in the write of a text
1284
+		 */
1285
+		protected function _makeBreakLine($h, $curr = null)
1286
+		{
1287
+			if ($h) {
1288
+				if (($this->pdf->getY()+$h<$this->pdf->getH() - $this->pdf->getbMargin()) || $this->_isInOverflow || $this->_isInFooter)
1289
+					$this->_setNewLine($h, $curr);
1290
+				else
1291
+					$this->_setNewPage(null, '', null, $curr);
1292
+			} else {
1293
+				$this->_setNewPositionForNewLine($curr);
1294
+			}
1295
+
1296
+			$this->_maxH = 0;
1297
+			$this->_maxE = 0;
1298
+		}
1299
+
1300
+		/**
1301
+		 * display a image
1302
+		 *
1303
+		 * @access protected
1304
+		 * @param  string $src
1305
+		 * @param  boolean $subLi if true=image of a list
1306
+		 * @return boolean depending on "isForOneLine"
1307
+		 */
1308
+		protected function _drawImage($src, $subLi=false)
1309
+		{
1310
+			// get the size of the image
1311
+			// WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
1312
+			$infos=@getimagesize($src);
1313
+
1314
+			// if the image does not exist, or can not be loaded
1315
+			if (count($infos)<2) {
1316
+				// if the test is activ => exception
1317
+				if ($this->_testIsImage) {
1318
+					throw new HTML2PDF_exception(6, $src);
1319
+				}
1320
+
1321
+				// else, display a gray rectangle
1322
+				$src = null;
1323
+				$infos = array(16, 16);
1324
+			}
1325
+
1326
+			// convert the size of the image in the unit of the PDF
1327
+			$imageWidth = $infos[0]/$this->pdf->getK();
1328
+			$imageHeight = $infos[1]/$this->pdf->getK();
1329
+
1330
+			// calculate the size from the css style
1331
+			if ($this->parsingCss->value['width'] && $this->parsingCss->value['height']) {
1332
+				$w = $this->parsingCss->value['width'];
1333
+				$h = $this->parsingCss->value['height'];
1334
+			} else if ($this->parsingCss->value['width']) {
1335
+				$w = $this->parsingCss->value['width'];
1336
+				$h = $imageHeight*$w/$imageWidth;
1337
+			} else if ($this->parsingCss->value['height']) {
1338
+				$h = $this->parsingCss->value['height'];
1339
+				$w = $imageWidth*$h/$imageHeight;
1340
+			} else {
1341
+				// convert px to pt
1342
+				$w = 72./96.*$imageWidth;
1343
+				$h = 72./96.*$imageHeight;
1344
+			}
1345
+
1346
+			// are we in a float
1347
+			$float = $this->parsingCss->getFloat();
1348
+
1349
+			// if we are in a float, but if something else if on the line => Break Line
1350
+			if ($float && $this->_maxH) {
1351
+				// make the break line (false if we are in "_isForOneLine" mode)
1352
+				if (!$this->_tag_open_BR(array())) {
1353
+					return false;
1354
+				}
1355
+			}
1356
+
1357
+			// position of the image
1358
+			$x = $this->pdf->getX();
1359
+			$y = $this->pdf->getY();
1360
+
1361
+			// if the image can not be put on the current line => new line
1362
+			if (!$float && ($x + $w>$this->pdf->getW() - $this->pdf->getrMargin()) && $this->_maxH) {
1363
+				if ($this->_isForOneLine) {
1364
+					return false;
1365
+				}
1366
+
1367
+				// set the new line
1368
+				$hnl = max($this->_maxH, $this->parsingCss->getLineHeight());
1369
+				$this->_setNewLine($hnl);
1370
+
1371
+				// get the new position
1372
+				$x = $this->pdf->getX();
1373
+				$y = $this->pdf->getY();
1374
+			}
1375
+
1376
+			// if the image can not be put on the current page
1377
+			if (($y + $h>$this->pdf->getH() - $this->pdf->getbMargin()) && !$this->_isInOverflow) {
1378
+				// new page
1379
+				$this->_setNewPage();
1380
+
1381
+				// get the new position
1382
+				$x = $this->pdf->getX();
1383
+				$y = $this->pdf->getY();
1384
+			}
1385
+
1386
+			// correction for display the image of a list
1387
+			$hT = 0.80*$this->parsingCss->value['font-size'];
1388
+			if ($subLi && $h<$hT) {
1389
+				$y+=($hT-$h);
1390
+			}
1391
+
1392
+			// add the margin top
1393
+			$yc = $y-$this->parsingCss->value['margin']['t'];
1394
+
1395
+			// get the width and the position of the parent
1396
+			$old = $this->parsingCss->getOldValues();
1397
+			if ( $old['width']) {
1398
+				$parentWidth = $old['width'];
1399
+				$parentX = $x;
1400
+			} else {
1401
+				$parentWidth = $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
1402
+				$parentX = $this->pdf->getlMargin();
1403
+			}
1404
+
1405
+			// if we are in a gloat => adapt the parent position and width
1406
+			if ($float) {
1407
+				list($lx, $rx) = $this->_getMargins($yc);
1408
+				$parentX = $lx;
1409
+				$parentWidth = $rx-$lx;
1410
+			}
1411
+
1412
+			// calculate the position of the image, if align to the right
1413
+			if ($parentWidth>$w && $float!='left') {
1414
+				if ($float=='right' || $this->parsingCss->value['text-align']=='li_right')    $x = $parentX + $parentWidth - $w-$this->parsingCss->value['margin']['r']-$this->parsingCss->value['margin']['l'];
1415
+			}
1416
+
1417
+			// display the image
1418
+			if (!$this->_subPart && !$this->_isSubPart) {
1419
+				if ($src) {
1420
+					$this->pdf->Image($src, $x, $y, $w, $h, '', $this->_isInLink);
1421
+				} else {
1422
+					// rectangle if the image can not be loaded
1423
+					$this->pdf->setFillColorArray(array(240, 220, 220));
1424
+					$this->pdf->Rect($x, $y, $w, $h, 'F');
1425
+				}
1426
+			}
1427
+
1428
+			// apply the margins
1429
+			$x-= $this->parsingCss->value['margin']['l'];
1430
+			$y-= $this->parsingCss->value['margin']['t'];
1431
+			$w+= $this->parsingCss->value['margin']['l'] + $this->parsingCss->value['margin']['r'];
1432
+			$h+= $this->parsingCss->value['margin']['t'] + $this->parsingCss->value['margin']['b'];
1433
+
1434
+			if ($float=='left') {
1435
+				// save the current max
1436
+				$this->_maxX = max($this->_maxX, $x+$w);
1437
+				$this->_maxY = max($this->_maxY, $y+$h);
1438
+
1439
+				// add the image to the margins
1440
+				$this->_addMargins($float, $x, $y, $x+$w, $y+$h);
1441
+
1442
+				// get the new position
1443
+				list($lx, $rx) = $this->_getMargins($yc);
1444
+				$this->pdf->setXY($lx, $yc);
1445
+			} else if ($float=='right') {
1446
+				// save the current max. We don't save the X because it is not the real max of the line
1447
+				$this->_maxY = max($this->_maxY, $y+$h);
1448
+
1449
+				// add the image to the margins
1450
+				$this->_addMargins($float, $x, $y, $x+$w, $y+$h);
1451
+
1452
+				// get the new position
1453
+				list($lx, $rx) = $this->_getMargins($yc);
1454
+				$this->pdf->setXY($lx, $yc);
1455
+			} else {
1456
+				// set the new position at the end of the image
1457
+				$this->pdf->setX($x+$w);
1458
+
1459
+				// save the current max
1460
+				$this->_maxX = max($this->_maxX, $x+$w);
1461
+				$this->_maxY = max($this->_maxY, $y+$h);
1462
+				$this->_maxH = max($this->_maxH, $h);
1463
+			}
1464
+
1465
+			return true;
1466
+		}
1467
+
1468
+		/**
1469
+		 * draw a rectangle
1470
+		 *
1471
+		 * @access protected
1472
+		 * @param  float $x
1473
+		 * @param  float $y
1474
+		 * @param  float $w
1475
+		 * @param  float $h
1476
+		 * @param  array $border
1477
+		 * @param  float $padding - internal marge of the rectanble => not used, but...
1478
+		 * @param  float $margin  - external marge of the rectanble
1479
+		 * @param  array $background
1480
+		 * @return boolean
1481
+		 */
1482
+		protected function _drawRectangle($x, $y, $w, $h, $border, $padding, $margin, $background)
1483
+		{
1484
+			// if we are in a subpart or if height is null => return false
1485
+			if ($this->_subPart || $this->_isSubPart || $h===null) return false;
1486
+
1487
+			// add the margin
1488
+			$x+= $margin;
1489
+			$y+= $margin;
1490
+			$w-= $margin*2;
1491
+			$h-= $margin*2;
1492
+
1493
+			// get the radius of the border
1494
+			$outTL = $border['radius']['tl'];
1495
+			$outTR = $border['radius']['tr'];
1496
+			$outBR = $border['radius']['br'];
1497
+			$outBL = $border['radius']['bl'];
1498
+
1499
+			// prepare the out radius
1500
+			$outTL = ($outTL[0] && $outTL[1]) ? $outTL : null;
1501
+			$outTR = ($outTR[0] && $outTR[1]) ? $outTR : null;
1502
+			$outBR = ($outBR[0] && $outBR[1]) ? $outBR : null;
1503
+			$outBL = ($outBL[0] && $outBL[1]) ? $outBL : null;
1504
+
1505
+			// prepare the in radius
1506
+			$inTL = $outTL;
1507
+			$inTR = $outTR;
1508
+			$inBR = $outBR;
1509
+			$inBL = $outBL;
1510
+
1511
+			if (is_array($inTL)) {
1512
+				$inTL[0]-= $border['l']['width'];
1513
+				$inTL[1]-= $border['t']['width'];
1514
+			}
1515
+			if (is_array($inTR)) {
1516
+				$inTR[0]-= $border['r']['width'];
1517
+				$inTR[1]-= $border['t']['width'];
1518
+			}
1519
+			if (is_array($inBR)) {
1520
+				$inBR[0]-= $border['r']['width'];
1521
+				$inBR[1]-= $border['b']['width'];
1522
+			}
1523
+			if (is_array($inBL)) {
1524
+				$inBL[0]-= $border['l']['width'];
1525
+				$inBL[1]-= $border['b']['width'];
1526
+			}
1527
+
1528
+			if ($inTL[0]<=0 || $inTL[1]<=0) $inTL = null;
1529
+			if ($inTR[0]<=0 || $inTR[1]<=0) $inTR = null;
1530
+			if ($inBR[0]<=0 || $inBR[1]<=0) $inBR = null;
1531
+			if ($inBL[0]<=0 || $inBL[1]<=0) $inBL = null;
1532
+
1533
+			// prepare the background color
1534
+			$pdfStyle = '';
1535
+			if ($background['color']) {
1536
+				$this->pdf->setFillColorArray($background['color']);
1537
+				$pdfStyle.= 'F';
1538
+			}
1539
+
1540
+			// if we have a background to fill => fill it with a path (because of the radius)
1541
+			if ($pdfStyle) {
1542
+				$this->pdf->clippingPathStart($x, $y, $w, $h, $outTL, $outTR, $outBL, $outBR);
1543
+				$this->pdf->Rect($x, $y, $w, $h, $pdfStyle);
1544
+				$this->pdf->clippingPathStop();
1545
+			}
1546
+
1547
+			// prepare the background image
1548
+			if ($background['image']) {
1549
+				$iName      = $background['image'];
1550
+				$iPosition  = $background['position']!==null ? $background['position'] : array(0, 0);
1551
+				$iRepeat    = $background['repeat']!==null   ? $background['repeat']   : array(true, true);
1552
+
1553
+				// size of the background without the borders
1554
+				$bX = $x;
1555
+				$bY = $y;
1556
+				$bW = $w;
1557
+				$bH = $h;
1558
+
1559
+				if ($border['b']['width']) {
1560
+					$bH-= $border['b']['width'];
1561
+				}
1562
+				if ($border['l']['width']) {
1563
+					$bW-= $border['l']['width'];
1564
+					$bX+= $border['l']['width'];
1565
+				}
1566
+				if ($border['t']['width']) {
1567
+					$bH-= $border['t']['width'];
1568
+					$bY+= $border['t']['width'];
1569
+				}
1570
+				if ($border['r']['width']) {
1571
+					$bW-= $border['r']['width'];
1572
+				}
1573
+
1574
+				// get the size of the image
1575
+				// WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
1576
+				$imageInfos=@getimagesize($iName);
1577
+
1578
+				// if the image can not be loaded
1579
+				if (count($imageInfos)<2) {
1580
+					if ($this->_testIsImage) {
1581
+						throw new HTML2PDF_exception(6, $iName);
1582
+					}
1583
+				} else {
1584
+					// convert the size of the image from pixel to the unit of the PDF
1585
+					$imageWidth    = 72./96.*$imageInfos[0]/$this->pdf->getK();
1586
+					$imageHeight    = 72./96.*$imageInfos[1]/$this->pdf->getK();
1587
+
1588
+					// prepare the position of the backgroung
1589
+					if ($iRepeat[0]) $iPosition[0] = $bX;
1590
+					else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[0], $match)) $iPosition[0] = $bX + $match[1]*($bW-$imageWidth)/100;
1591
+					else $iPosition[0] = $bX+$iPosition[0];
1592
+
1593
+					if ($iRepeat[1]) $iPosition[1] = $bY;
1594
+					else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[1], $match)) $iPosition[1] = $bY + $match[1]*($bH-$imageHeight)/100;
1595
+					else $iPosition[1] = $bY+$iPosition[1];
1596
+
1597
+					$imageXmin = $bX;
1598
+					$imageXmax = $bX+$bW;
1599
+					$imageYmin = $bY;
1600
+					$imageYmax = $bY+$bH;
1601
+
1602
+					if (!$iRepeat[0] && !$iRepeat[1]) {
1603
+						$imageXmin =     $iPosition[0]; $imageXmax =     $iPosition[0]+$imageWidth;
1604
+						$imageYmin =     $iPosition[1]; $imageYmax =     $iPosition[1]+$imageHeight;
1605
+					} else if ($iRepeat[0] && !$iRepeat[1]) {
1606
+						$imageYmin =     $iPosition[1]; $imageYmax =     $iPosition[1]+$imageHeight;
1607
+					} else if (!$iRepeat[0] && $iRepeat[1]) {
1608
+						$imageXmin =     $iPosition[0]; $imageXmax =     $iPosition[0]+$imageWidth;
1609
+					}
1610
+
1611
+					// build the path to display the image (because of radius)
1612
+					$this->pdf->clippingPathStart($bX, $bY, $bW, $bH, $inTL, $inTR, $inBL, $inBR);
1613
+
1614
+					// repeat the image
1615
+					for ($iY=$imageYmin; $iY<$imageYmax; $iY+=$imageHeight) {
1616
+						for ($iX=$imageXmin; $iX<$imageXmax; $iX+=$imageWidth) {
1617
+							$cX = null;
1618
+							$cY = null;
1619
+							$cW = $imageWidth;
1620
+							$cH = $imageHeight;
1621
+							if ($imageYmax-$iY<$imageHeight) {
1622
+								$cX = $iX;
1623
+								$cY = $iY;
1624
+								$cH = $imageYmax-$iY;
1625
+							}
1626
+							if ($imageXmax-$iX<$imageWidth) {
1627
+								$cX = $iX;
1628
+								$cY = $iY;
1629
+								$cW = $imageXmax-$iX;
1630
+							}
1631
+
1632
+							$this->pdf->Image($iName, $iX, $iY, $imageWidth, $imageHeight, '', '');
1633
+						}
1634
+					}
1635
+
1636
+					// end of the path
1637
+					$this->pdf->clippingPathStop();
1638
+				}
1639
+			}
1640
+
1641
+			// adding some loose (0.01mm)
1642
+			$loose = 0.01;
1643
+			$x-= $loose;
1644
+			$y-= $loose;
1645
+			$w+= 2.*$loose;
1646
+			$h+= 2.*$loose;
1647
+			if ($border['l']['width']) $border['l']['width']+= 2.*$loose;
1648
+			if ($border['t']['width']) $border['t']['width']+= 2.*$loose;
1649
+			if ($border['r']['width']) $border['r']['width']+= 2.*$loose;
1650
+			if ($border['b']['width']) $border['b']['width']+= 2.*$loose;
1651
+
1652
+			// prepare the test on borders
1653
+			$testBl = ($border['l']['width'] && $border['l']['color'][0]!==null);
1654
+			$testBt = ($border['t']['width'] && $border['t']['color'][0]!==null);
1655
+			$testBr = ($border['r']['width'] && $border['r']['color'][0]!==null);
1656
+			$testBb = ($border['b']['width'] && $border['b']['color'][0]!==null);
1657
+
1658
+			// draw the radius bottom-left
1659
+			if (is_array($outBL) && ($testBb || $testBl)) {
1660
+				if ($inBL) {
1661
+					$courbe = array();
1662
+					$courbe[] = $x+$outBL[0];              $courbe[] = $y+$h;
1663
+					$courbe[] = $x;                        $courbe[] = $y+$h-$outBL[1];
1664
+					$courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$border['b']['width'];
1665
+					$courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$h-$outBL[1];
1666
+					$courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$outBL[1];
1667
+				} else {
1668
+					$courbe = array();
1669
+					$courbe[] = $x+$outBL[0];              $courbe[] = $y+$h;
1670
+					$courbe[] = $x;                        $courbe[] = $y+$h-$outBL[1];
1671
+					$courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$h-$border['b']['width'];
1672
+					$courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$outBL[1];
1673
+				}
1674
+				$this->_drawCurve($courbe, $border['l']['color']);
1675
+			}
1676
+
1677
+			// draw the radius left-top
1678
+			if (is_array($outTL) && ($testBt || $testBl)) {
1679
+				if ($inTL) {
1680
+					$courbe = array();
1681
+					$courbe[] = $x;                        $courbe[] = $y+$outTL[1];
1682
+					$courbe[] = $x+$outTL[0];              $courbe[] = $y;
1683
+					$courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$outTL[1];
1684
+					$courbe[] = $x+$outTL[0];              $courbe[] = $y+$border['t']['width'];
1685
+					$courbe[] = $x+$outTL[0];              $courbe[] = $y+$outTL[1];
1686
+				} else {
1687
+					$courbe = array();
1688
+					$courbe[] = $x;                        $courbe[] = $y+$outTL[1];
1689
+					$courbe[] = $x+$outTL[0];              $courbe[] = $y;
1690
+					$courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$border['t']['width'];
1691
+					$courbe[] = $x+$outTL[0];              $courbe[] = $y+$outTL[1];
1692
+				}
1693
+				$this->_drawCurve($courbe, $border['t']['color']);
1694
+			}
1695
+
1696
+			// draw the radius top-right
1697
+			if (is_array($outTR) && ($testBt || $testBr)) {
1698
+				if ($inTR) {
1699
+					$courbe = array();
1700
+					$courbe[] = $x+$w-$outTR[0];             $courbe[] = $y;
1701
+					$courbe[] = $x+$w;                       $courbe[] = $y+$outTR[1];
1702
+					$courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$border['t']['width'];
1703
+					$courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$outTR[1];
1704
+					$courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$outTR[1];
1705
+				} else {
1706
+					$courbe = array();
1707
+					$courbe[] = $x+$w-$outTR[0];             $courbe[] = $y;
1708
+					$courbe[] = $x+$w;                       $courbe[] = $y+$outTR[1];
1709
+					$courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$border['t']['width'];
1710
+					$courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$outTR[1];
1711
+				}
1712
+				$this->_drawCurve($courbe, $border['r']['color']);
1713
+			}
1714
+
1715
+			// draw the radius right-bottom
1716
+			if (is_array($outBR) && ($testBb || $testBr)) {
1717
+				if ($inBR) {
1718
+					$courbe = array();
1719
+					$courbe[] = $x+$w;                       $courbe[] = $y+$h-$outBR[1];
1720
+					$courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h;
1721
+					$courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$h-$outBR[1];
1722
+					$courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$border['b']['width'];
1723
+					$courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$outBR[1];
1724
+				} else {
1725
+					$courbe = array();
1726
+					$courbe[] = $x+$w;                       $courbe[] = $y+$h-$outBR[1];
1727
+					$courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h;
1728
+					$courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$h-$border['b']['width'];
1729
+					$courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$outBR[1];
1730
+				}
1731
+				$this->_drawCurve($courbe, $border['b']['color']);
1732
+			}
1733
+
1734
+			// draw the left border
1735
+			if ($testBl) {
1736
+				$pt = array();
1737
+				$pt[] = $x;                       $pt[] = $y+$h;
1738
+				$pt[] = $x;                       $pt[] = $y+$h-$border['b']['width'];
1739
+				$pt[] = $x;                       $pt[] = $y+$border['t']['width'];
1740
+				$pt[] = $x;                       $pt[] = $y;
1741
+				$pt[] = $x+$border['l']['width']; $pt[] = $y+$border['t']['width'];
1742
+				$pt[] = $x+$border['l']['width']; $pt[] = $y+$h-$border['b']['width'];
1743
+
1744
+				$bord = 3;
1745
+				if (is_array($outBL)) {
1746
+					$bord-=1;
1747
+					$pt[3] -= $outBL[1] - $border['b']['width'];
1748
+					if ($inBL) $pt[11]-= $inBL[1];
1749
+					unset($pt[0]);unset($pt[1]);
1750
+				}
1751
+				if (is_array($outTL)) {
1752
+					$bord-=2;
1753
+					$pt[5] += $outTL[1]-$border['t']['width'];
1754
+					if ($inTL) $pt[9] += $inTL[1];
1755
+					unset($pt[6]);unset($pt[7]);
1756
+				}
1757
+
1758
+				$pt = array_values($pt);
1759
+				$this->_drawLine($pt, $border['l']['color'], $border['l']['type'], $border['l']['width'], $bord);
1760
+			}
1761
+
1762
+			// draw the top border
1763
+			if ($testBt) {
1764
+				$pt = array();
1765
+				$pt[] = $x;                          $pt[] = $y;
1766
+				$pt[] = $x+$border['l']['width'];    $pt[] = $y;
1767
+				$pt[] = $x+$w-$border['r']['width']; $pt[] = $y;
1768
+				$pt[] = $x+$w;                       $pt[] = $y;
1769
+				$pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$border['t']['width'];
1770
+				$pt[] = $x+$border['l']['width'];    $pt[] = $y+$border['t']['width'];
1771
+
1772
+				$bord = 3;
1773
+				if (is_array($outTL)) {
1774
+					$bord-=1;
1775
+					$pt[2] += $outTL[0] - $border['l']['width'];
1776
+					if ($inTL) $pt[10]+= $inTL[0];
1777
+					unset($pt[0]);unset($pt[1]);
1778
+				}
1779
+				if (is_array($outTR)) {
1780
+					$bord-=2;
1781
+					$pt[4] -= $outTR[0] - $border['r']['width'];
1782
+					if ($inTR) $pt[8] -= $inTR[0];
1783
+					unset($pt[6]);unset($pt[7]);
1784
+				}
1785
+
1786
+				$pt = array_values($pt);
1787
+				$this->_drawLine($pt, $border['t']['color'], $border['t']['type'], $border['t']['width'], $bord);
1788
+			}
1789
+
1790
+			// draw the right border
1791
+			if ($testBr) {
1792
+				$pt = array();
1793
+				$pt[] = $x+$w;                       $pt[] = $y;
1794
+				$pt[] = $x+$w;                       $pt[] = $y+$border['t']['width'];
1795
+				$pt[] = $x+$w;                       $pt[] = $y+$h-$border['b']['width'];
1796
+				$pt[] = $x+$w;                       $pt[] = $y+$h;
1797
+				$pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h-$border['b']['width'];
1798
+				$pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$border['t']['width'];
1799
+
1800
+				$bord = 3;
1801
+				if (is_array($outTR)) {
1802
+					$bord-=1;
1803
+					$pt[3] += $outTR[1] - $border['t']['width'];
1804
+					if ($inTR) $pt[11]+= $inTR[1];
1805
+					unset($pt[0]);unset($pt[1]);
1806
+				}
1807
+				if (is_array($outBR)) {
1808
+					$bord-=2;
1809
+					$pt[5] -= $outBR[1] - $border['b']['width'];
1810
+					if ($inBR) $pt[9] -= $inBR[1];
1811
+					unset($pt[6]);unset($pt[7]);
1812
+				}
1813
+
1814
+				$pt = array_values($pt);
1815
+				$this->_drawLine($pt, $border['r']['color'], $border['r']['type'], $border['r']['width'], $bord);
1816
+			}
1817
+
1818
+			// draw the bottom border
1819
+			if ($testBb) {
1820
+				$pt = array();
1821
+				$pt[] = $x+$w;                       $pt[] = $y+$h;
1822
+				$pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h;
1823
+				$pt[] = $x+$border['l']['width'];    $pt[] = $y+$h;
1824
+				$pt[] = $x;                          $pt[] = $y+$h;
1825
+				$pt[] = $x+$border['l']['width'];    $pt[] = $y+$h-$border['b']['width'];
1826
+				$pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h-$border['b']['width'];
1827
+
1828
+				$bord = 3;
1829
+				if (is_array($outBL)) {
1830
+					$bord-=2;
1831
+					$pt[4] += $outBL[0] - $border['l']['width'];
1832
+					if ($inBL) $pt[8] += $inBL[0];
1833
+					unset($pt[6]);unset($pt[7]);
1834
+				}
1835
+				if (is_array($outBR)) {
1836
+					$bord-=1;
1837
+					$pt[2] -= $outBR[0] - $border['r']['width'];
1838
+					if ($inBR) $pt[10]-= $inBR[0];
1839
+					unset($pt[0]);unset($pt[1]);
1840
+
1841
+				}
1842
+
1843
+				$pt = array_values($pt);
1844
+				$this->_drawLine($pt, $border['b']['color'], $border['b']['type'], $border['b']['width'], $bord);
1845
+			}
1846
+
1847
+			if ($background['color']) {
1848
+				$this->pdf->setFillColorArray($background['color']);
1849
+			}
1850
+
1851
+			return true;
1852
+		}
1853
+
1854
+		/**
1855
+		 * draw a curve (for border radius)
1856
+		 *
1857
+		 * @access protected
1858
+		 * @param  array $pt
1859
+		 * @param  array $color
1860
+		 */
1861
+		protected function _drawCurve($pt, $color)
1862
+		{
1863
+			$this->pdf->setFillColorArray($color);
1864
+
1865
+			if (count($pt)==10)
1866
+				$this->pdf->drawCurve($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
1867
+			else
1868
+				$this->pdf->drawCorner($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7]);
1869
+		}
1870
+
1871
+		/**
1872
+		 * draw a ligne with a specific type, and specific start and end for radius
1873
+		 *
1874
+		 * @access protected
1875
+		 * @param  array   $pt
1876
+		 * @param  float   $color
1877
+		 * @param  string  $type (dashed, dotted, double, solid)
1878
+		 * @param  float   $width
1879
+		 * @param  integer $radius (binary from 0 to 3 with 1=>start with a radius, 2=>end with a radius)
1880
+		 */
1881
+		protected function _drawLine($pt, $color, $type, $width, $radius=3)
1882
+		{
1883
+			// set the fill color
1884
+			$this->pdf->setFillColorArray($color);
1885
+
1886
+			// if dashed or dotted
1887
+			if ($type=='dashed' || $type=='dotted') {
1888
+
1889
+				// clean the end of the line, if radius
1890
+				if ($radius==1) {
1891
+					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1892
+					$this->pdf->Polygon($tmp, 'F');
1893
+
1894
+					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1895
+					$pt = $tmp;
1896
+				} else if ($radius==2) {
1897
+					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7];
1898
+					$this->pdf->Polygon($tmp, 'F');
1899
+
1900
+					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1901
+					$pt = $tmp;
1902
+				} else if ($radius==3) {
1903
+					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
1904
+					$this->pdf->Polygon($tmp, 'F');
1905
+
1906
+					$tmp = array(); $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1907
+					$this->pdf->Polygon($tmp, 'F');
1908
+
1909
+					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[8]; $tmp[]=$pt[9]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
1910
+					$pt = $tmp;
1911
+				}
1912
+
1913
+				// horisontal or vertical line
1914
+				if ($pt[2]==$pt[0]) {
1915
+					$l = abs(($pt[3]-$pt[1])*0.5);
1916
+					$px = 0;
1917
+					$py = $width;
1918
+					$x1 = $pt[0]; $y1 = ($pt[3]+$pt[1])*0.5;
1919
+					$x2 = $pt[6]; $y2 = ($pt[7]+$pt[5])*0.5;
1920
+				} else {
1921
+					$l = abs(($pt[2]-$pt[0])*0.5);
1922
+					$px = $width;
1923
+					$py = 0;
1924
+					$x1 = ($pt[2]+$pt[0])*0.5; $y1 = $pt[1];
1925
+					$x2 = ($pt[6]+$pt[4])*0.5; $y2 = $pt[7];
1926
+				}
1927
+
1928
+				// if dashed : 3x bigger than dotted
1929
+				if ($type=='dashed') {
1930
+					$px = $px*3.;
1931
+					$py = $py*3.;
1932
+				}
1933
+				$mode = ($l/($px+$py)<.5);
1934
+
1935
+				// display the dotted/dashed line
1936
+				for ($i=0; $l-($px+$py)*($i-0.5)>0; $i++) {
1937
+					if (($i%2)==$mode) {
1938
+						$j = $i-0.5;
1939
+						$lx1 = $px*($j);   if ($lx1<-$l) $lx1 =-$l;
1940
+						$ly1 = $py*($j);   if ($ly1<-$l) $ly1 =-$l;
1941
+						$lx2 = $px*($j+1); if ($lx2>$l)  $lx2 = $l;
1942
+						$ly2 = $py*($j+1); if ($ly2>$l)  $ly2 = $l;
1943
+
1944
+						$tmp = array();
1945
+						$tmp[] = $x1+$lx1; $tmp[] = $y1+$ly1;
1946
+						$tmp[] = $x1+$lx2; $tmp[] = $y1+$ly2;
1947
+						$tmp[] = $x2+$lx2; $tmp[] = $y2+$ly2;
1948
+						$tmp[] = $x2+$lx1; $tmp[] = $y2+$ly1;
1949
+						$this->pdf->Polygon($tmp, 'F');
1950
+
1951
+						if ($j>0) {
1952
+							$tmp = array();
1953
+							$tmp[] = $x1-$lx1; $tmp[] = $y1-$ly1;
1954
+							$tmp[] = $x1-$lx2; $tmp[] = $y1-$ly2;
1955
+							$tmp[] = $x2-$lx2; $tmp[] = $y2-$ly2;
1956
+							$tmp[] = $x2-$lx1; $tmp[] = $y2-$ly1;
1957
+							$this->pdf->Polygon($tmp, 'F');
1958
+						}
1959
+					}
1960
+				}
1961
+			} else if ($type=='double') {
1962
+
1963
+				// if double, 2 lines : 0=>1/3 and 2/3=>1
1964
+				$pt1 = $pt;
1965
+				$pt2 = $pt;
1966
+
1967
+				if (count($pt)==12) {
1968
+					// line 1
1969
+					$pt1[0] = ($pt[0]-$pt[10])*0.33 + $pt[10];
1970
+					$pt1[1] = ($pt[1]-$pt[11])*0.33 + $pt[11];
1971
+					$pt1[2] = ($pt[2]-$pt[10])*0.33 + $pt[10];
1972
+					$pt1[3] = ($pt[3]-$pt[11])*0.33 + $pt[11];
1973
+					$pt1[4] = ($pt[4]-$pt[8])*0.33 + $pt[8];
1974
+					$pt1[5] = ($pt[5]-$pt[9])*0.33 + $pt[9];
1975
+					$pt1[6] = ($pt[6]-$pt[8])*0.33 + $pt[8];
1976
+					$pt1[7] = ($pt[7]-$pt[9])*0.33 + $pt[9];
1977
+					$pt2[10]= ($pt[10]-$pt[0])*0.33 + $pt[0];
1978
+					$pt2[11]= ($pt[11]-$pt[1])*0.33 + $pt[1];
1979
+
1980
+					// line 2
1981
+					$pt2[2] = ($pt[2] -$pt[0])*0.33 + $pt[0];
1982
+					$pt2[3] = ($pt[3] -$pt[1])*0.33 + $pt[1];
1983
+					$pt2[4] = ($pt[4] -$pt[6])*0.33 + $pt[6];
1984
+					$pt2[5] = ($pt[5] -$pt[7])*0.33 + $pt[7];
1985
+					$pt2[8] = ($pt[8] -$pt[6])*0.33 + $pt[6];
1986
+					$pt2[9] = ($pt[9] -$pt[7])*0.33 + $pt[7];
1987
+				} else {
1988
+					// line 1
1989
+					$pt1[0] = ($pt[0]-$pt[6])*0.33 + $pt[6];
1990
+					$pt1[1] = ($pt[1]-$pt[7])*0.33 + $pt[7];
1991
+					$pt1[2] = ($pt[2]-$pt[4])*0.33 + $pt[4];
1992
+					$pt1[3] = ($pt[3]-$pt[5])*0.33 + $pt[5];
1993
+
1994
+					// line 2
1995
+					$pt2[6] = ($pt[6]-$pt[0])*0.33 + $pt[0];
1996
+					$pt2[7] = ($pt[7]-$pt[1])*0.33 + $pt[1];
1997
+					$pt2[4] = ($pt[4]-$pt[2])*0.33 + $pt[2];
1998
+					$pt2[5] = ($pt[5]-$pt[3])*0.33 + $pt[3];
1999
+				}
2000
+				$this->pdf->Polygon($pt1, 'F');
2001
+				$this->pdf->Polygon($pt2, 'F');
2002
+			} else if ($type=='solid') {
2003
+				// solid line : draw directly the polygon
2004
+				$this->pdf->Polygon($pt, 'F');
2005
+			}
2006
+		}
2007
+
2008
+		/**
2009
+		 * prepare a transform matrix, only for drawing a SVG graphic
2010
+		 *
2011
+		 * @access protected
2012
+		 * @param  string $transform
2013
+		 * @return array  $matrix
2014
+		 */
2015
+		protected function _prepareTransform($transform)
2016
+		{
2017
+			// it can not be  empty
2018
+			if (!$transform) return null;
2019
+
2020
+			// sctions must be like scale(...)
2021
+			if (!preg_match_all('/([a-z]+)\(([^\)]*)\)/isU', $transform, $match)) return null;
2022
+
2023
+			// prepare the list of the actions
2024
+			$actions = array();
2025
+
2026
+			// for actions
2027
+			for ($k=0; $k<count($match[0]); $k++) {
2028
+
2029
+				// get the name of the action
2030
+				$name = strtolower($match[1][$k]);
2031
+
2032
+				// get the parameters of the action
2033
+				$val = explode(',', trim($match[2][$k]));
2034
+				foreach ($val as $i => $j) {
2035
+					$val[$i] = trim($j);
2036
+				}
2037
+
2038
+				// prepare the matrix, depending on the action
2039
+				switch($name)
2040
+				{
2041
+					case 'scale':
2042
+						if (!isset($val[0])) $val[0] = 1.;      else $val[0] = 1.*$val[0];
2043
+						if (!isset($val[1])) $val[1] = $val[0]; else $val[1] = 1.*$val[1];
2044
+						$actions[] = array($val[0],0,0,$val[1],0,0);
2045
+						break;
2046
+
2047
+					case 'translate':
2048
+						if (!isset($val[0])) $val[0] = 0.; else $val[0] = $this->parsingCss->ConvertToMM($val[0], $this->_isInDraw['w']);
2049
+						if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['h']);
2050
+						$actions[] = array(1,0,0,1,$val[0],$val[1]);
2051
+						break;
2052
+
2053
+					case 'rotate':
2054
+						if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2055
+						if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['w']);
2056
+						if (!isset($val[2])) $val[2] = 0.; else $val[2] = $this->parsingCss->ConvertToMM($val[2], $this->_isInDraw['h']);
2057
+						if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,-$val[1],-$val[2]);
2058
+						$actions[] = array(cos($val[0]),sin($val[0]),-sin($val[0]),cos($val[0]),0,0);
2059
+						if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,$val[1],$val[2]);
2060
+						break;
2061
+
2062
+					case 'skewx':
2063
+						if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2064
+						$actions[] = array(1,0,tan($val[0]),1,0,0);
2065
+						break;
2066
+
2067
+					case 'skewy':
2068
+						if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2069
+						$actions[] = array(1,tan($val[0]),0,1,0,0);
2070
+						break;
2071
+					case 'matrix':
2072
+						if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*1.;
2073
+						if (!isset($val[1])) $val[1] = 0.; else $val[1] = $val[1]*1.;
2074
+						if (!isset($val[2])) $val[2] = 0.; else $val[2] = $val[2]*1.;
2075
+						if (!isset($val[3])) $val[3] = 0.; else $val[3] = $val[3]*1.;
2076
+						if (!isset($val[4])) $val[4] = 0.; else $val[4] = $this->parsingCss->ConvertToMM($val[4], $this->_isInDraw['w']);
2077
+						if (!isset($val[5])) $val[5] = 0.; else $val[5] = $this->parsingCss->ConvertToMM($val[5], $this->_isInDraw['h']);
2078
+						$actions[] =$val;
2079
+						break;
2080
+				}
2081
+			}
2082
+
2083
+			// if ther is no actions => return
2084
+			if (!$actions) return null;
2085
+
2086
+			// get the first matrix
2087
+			$m = $actions[0]; unset($actions[0]);
2088
+
2089
+			// foreach matrix => multiply to the last matrix
2090
+			foreach ($actions as $n) {
2091
+				$m = array(
2092
+					$m[0]*$n[0]+$m[2]*$n[1],
2093
+					$m[1]*$n[0]+$m[3]*$n[1],
2094
+					$m[0]*$n[2]+$m[2]*$n[3],
2095
+					$m[1]*$n[2]+$m[3]*$n[3],
2096
+					$m[0]*$n[4]+$m[2]*$n[5]+$m[4],
2097
+					$m[1]*$n[4]+$m[3]*$n[5]+$m[5]
2098
+				);
2099
+			}
2100
+
2101
+			// return the matrix
2102
+			return $m;
2103
+		}
2104
+
2105
+		/**
2106
+		 * @access protected
2107
+		 * @param  &array $cases
2108
+		 * @param  &array $corr
2109
+		 */
2110
+		protected function _calculateTableCellSize(&$cases, &$corr)
2111
+		{
2112
+			if (!isset($corr[0])) return true;
2113
+
2114
+			// for each cell without colspan, we get the max width for each column
2115
+			$sw = array();
2116
+			for ($x=0; $x<count($corr[0]); $x++) {
2117
+				$m=0;
2118
+				for ($y=0; $y<count($corr); $y++) {
2119
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]==1) {
2120
+						$m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']);
2121
+					}
2122
+				}
2123
+				$sw[$x] = $m;
2124
+			}
2125
+
2126
+			// for each cell with colspan, we adapt the width of each column
2127
+			for ($x=0; $x<count($corr[0]); $x++) {
2128
+				for ($y=0; $y<count($corr); $y++) {
2129
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]>1) {
2130
+
2131
+						// sum the max width of each column in colspan
2132
+						$s = 0; for ($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
2133
+
2134
+						// if the max width is < the width of the cell with colspan => we adapt the width of each max width
2135
+						if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']) {
2136
+							for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2137
+								$sw[$x+$i] = $sw[$x+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2138
+							}
2139
+						}
2140
+					}
2141
+				}
2142
+			}
2143
+
2144
+			// set the new width, for each cell
2145
+			for ($x=0; $x<count($corr[0]); $x++) {
2146
+				for ($y=0; $y<count($corr); $y++) {
2147
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x])) {
2148
+						// without colspan
2149
+						if ($corr[$y][$x][2]==1) {
2150
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $sw[$x];
2151
+						// with colspan
2152
+						} else {
2153
+							$s = 0;
2154
+							for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2155
+								$s+= $sw[$x+$i];
2156
+							}
2157
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $s;
2158
+						}
2159
+					}
2160
+				}
2161
+			}
2162
+
2163
+			// for each cell without rowspan, we get the max height for each line
2164
+			$sh = array();
2165
+			for ($y=0; $y<count($corr); $y++) {
2166
+				$m=0;
2167
+				for ($x=0; $x<count($corr[0]); $x++) {
2168
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]==1) {
2169
+						$m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']);
2170
+					}
2171
+				}
2172
+				$sh[$y] = $m;
2173
+			}
2174
+
2175
+			// for each cell with rowspan, we adapt the height of each line
2176
+			for ($y=0; $y<count($corr); $y++) {
2177
+				for ($x=0; $x<count($corr[0]); $x++) {
2178
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]>1) {
2179
+
2180
+						// sum the max height of each line in rowspan
2181
+						$s = 0; for ($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
2182
+
2183
+						// if the max height is < the height of the cell with rowspan => we adapt the height of each max height
2184
+						if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']) {
2185
+							for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2186
+								$sh[$y+$i] = $sh[$y+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'];
2187
+							}
2188
+						}
2189
+					}
2190
+				}
2191
+			}
2192
+
2193
+			// set the new height, for each cell
2194
+			for ($y=0; $y<count($corr); $y++) {
2195
+				for ($x=0; $x<count($corr[0]); $x++) {
2196
+					if (isset($corr[$y][$x]) && is_array($corr[$y][$x])) {
2197
+						// without rowspan
2198
+						if ($corr[$y][$x][3]==1) {
2199
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $sh[$y];
2200
+						// with rowspan
2201
+						} else {
2202
+							$s = 0;
2203
+							for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2204
+								$s+= $sh[$y+$i];
2205
+							}
2206
+							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $s;
2207
+
2208
+							for ($j=1; $j<$corr[$y][$x][3]; $j++) {
2209
+								$tx = $x+1;
2210
+								$ty = $y+$j;
2211
+								for (true; isset($corr[$ty][$tx]) && !is_array($corr[$ty][$tx]); $tx++);
2212
+								if (isset($corr[$ty][$tx])) {
2213
+									$cases[$corr[$ty][$tx][1]][$corr[$ty][$tx][0]]['dw']+= $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2214
+								}
2215
+							}
2216
+						}
2217
+					}
2218
+				}
2219
+			}
2220
+		}
2221
+
2222
+		/**
2223
+		 * tag : PAGE
2224
+		 * mode : OPEN
2225
+		 *
2226
+		 * @param  array $param
2227
+		 * @return boolean
2228
+		 */
2229
+		protected function _tag_open_PAGE($param)
2230
+		{
2231
+			if ($this->_isForOneLine) return false;
2232
+			if ($this->_debugActif) $this->_DEBUG_add('PAGE '.($this->_page+1), true);
2233
+
2234
+			$newPageSet= (!isset($param['pageset']) || $param['pageset']!='old');
2235
+
2236
+			$resetPageNumber = (isset($param['pagegroup']) && $param['pagegroup']=='new');
2237
+
2238
+			$this->_maxH = 0;
2239
+
2240
+			// if new page set asked
2241
+			if ($newPageSet) {
2242
+				$this->_subHEADER = array();
2243
+				$this->_subFOOTER = array();
2244
+
2245
+				// orientation
2246
+				$orientation = '';
2247
+				if (isset($param['orientation'])) {
2248
+					$param['orientation'] = strtolower($param['orientation']);
2249
+					if ($param['orientation']=='p')         $orientation = 'P';
2250
+					if ($param['orientation']=='portrait')  $orientation = 'P';
2251
+
2252
+					if ($param['orientation']=='l')         $orientation = 'L';
2253
+					if ($param['orientation']=='paysage')   $orientation = 'L';
2254
+					if ($param['orientation']=='landscape') $orientation = 'L';
2255
+				}
2256
+
2257
+				// format
2258
+				$format = null;
2259
+				if (isset($param['format'])) {
2260
+					$format = strtolower($param['format']);
2261
+					if (preg_match('/^([0-9]+)x([0-9]+)$/isU', $format, $match)) {
2262
+						$format = array(intval($match[1]), intval($match[2]));
2263
+					}
2264
+				}
2265
+
2266
+				// background
2267
+				$background = array();
2268
+				if (isset($param['backimg'])) {
2269
+					$background['img']    = isset($param['backimg'])  ? $param['backimg']  : '';       // src of the image
2270
+					$background['posX']   = isset($param['backimgx']) ? $param['backimgx'] : 'center'; // horizontale position of the image
2271
+					$background['posY']   = isset($param['backimgy']) ? $param['backimgy'] : 'middle'; // vertical position of the image
2272
+					$background['width']  = isset($param['backimgw']) ? $param['backimgw'] : '100%';   // width of the image (100% = page width)
2273
+
2274
+					// convert the src of the image, if parameters
2275
+					$background['img'] = str_replace('&amp;', '&', $background['img']);
2276
+
2277
+					// convert the positions
2278
+					if ($background['posX']=='left')    $background['posX'] = '0%';
2279
+					if ($background['posX']=='center')  $background['posX'] = '50%';
2280
+					if ($background['posX']=='right')   $background['posX'] = '100%';
2281
+					if ($background['posY']=='top')     $background['posY'] = '0%';
2282
+					if ($background['posY']=='middle')  $background['posY'] = '50%';
2283
+					if ($background['posY']=='bottom')  $background['posY'] = '100%';
2284
+
2285
+					if ($background['img']) {
2286
+						// get the size of the image
2287
+						// WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
2288
+						$infos=@getimagesize($background['img']);
2289
+						if (count($infos)>1) {
2290
+							$imageWidth = $this->parsingCss->ConvertToMM($background['width'], $this->pdf->getW());
2291
+							$imageHeight = $imageWidth*$infos[1]/$infos[0];
2292
+
2293
+							$background['width'] = $imageWidth;
2294
+							$background['posX']  = $this->parsingCss->ConvertToMM($background['posX'], $this->pdf->getW() - $imageWidth);
2295
+							$background['posY']  = $this->parsingCss->ConvertToMM($background['posY'], $this->pdf->getH() - $imageHeight);
2296
+						} else {
2297
+							$background = array();
2298
+						}
2299
+					} else {
2300
+						$background = array();
2301
+					}
2302
+				}
2303
+
2304
+				// margins of the page
2305
+				$background['top']    = isset($param['backtop'])    ? $param['backtop']    : '0';
2306
+				$background['bottom'] = isset($param['backbottom']) ? $param['backbottom'] : '0';
2307
+				$background['left']   = isset($param['backleft'])   ? $param['backleft']   : '0';
2308
+				$background['right']  = isset($param['backright'])  ? $param['backright']  : '0';
2309
+
2310
+				// if no unit => mm
2311
+				if (preg_match('/^([0-9]*)$/isU', $background['top']))    $background['top']    .= 'mm';
2312
+				if (preg_match('/^([0-9]*)$/isU', $background['bottom'])) $background['bottom'] .= 'mm';
2313
+				if (preg_match('/^([0-9]*)$/isU', $background['left']))   $background['left']   .= 'mm';
2314
+				if (preg_match('/^([0-9]*)$/isU', $background['right']))  $background['right']  .= 'mm';
2315
+
2316
+				// convert to mm
2317
+				$background['top']    = $this->parsingCss->ConvertToMM($background['top'], $this->pdf->getH());
2318
+				$background['bottom'] = $this->parsingCss->ConvertToMM($background['bottom'], $this->pdf->getH());
2319
+				$background['left']   = $this->parsingCss->ConvertToMM($background['left'], $this->pdf->getW());
2320
+				$background['right']  = $this->parsingCss->ConvertToMM($background['right'], $this->pdf->getW());
2321
+
2322
+				// get the background color
2323
+				$res = false;
2324
+				$background['color']    = isset($param['backcolor'])    ? $this->parsingCss->convertToColor($param['backcolor'], $res) : null;
2325
+				if (!$res) $background['color'] = null;
2326
+
2327
+				$this->parsingCss->save();
2328
+				$this->parsingCss->analyse('PAGE', $param);
2329
+				$this->parsingCss->setPosition();
2330
+				$this->parsingCss->fontSet();
2331
+
2332
+				// new page
2333
+				$this->_setNewPage($format, $orientation, $background, null, $resetPageNumber);
2334
+
2335
+				// automatic footer
2336
+				if (isset($param['footer'])) {
2337
+					$lst = explode(';', $param['footer']);
2338
+					foreach ($lst as $key => $val) $lst[$key] = trim(strtolower($val));
2339
+					$page    = in_array('page', $lst);
2340
+					$date    = in_array('date', $lst);
2341
+					$hour    = in_array('heure', $lst);
2342
+					$form    = in_array('form', $lst);
2343
+				} else {
2344
+					$page    = null;
2345
+					$date    = null;
2346
+					$hour    = null;
2347
+					$form    = null;
2348
+				}
2349
+				$this->pdf->SetMyFooter($page, $date, $hour, $form);
2350
+			// else => we use the last page set used
2351
+			} else {
2352
+				$this->parsingCss->save();
2353
+				$this->parsingCss->analyse('PAGE', $param);
2354
+				$this->parsingCss->setPosition();
2355
+				$this->parsingCss->fontSet();
2356
+
2357
+				$this->_setNewPage(null, null, null, null, $resetPageNumber);
2358
+			}
2359
+
2360
+			return true;
2361
+		}
2362
+
2363
+		/**
2364
+		 * tag : PAGE
2365
+		 * mode : CLOSE
2366
+		 *
2367
+		 * @param  array $param
2368
+		 * @return boolean
2369
+		 */
2370
+		protected function _tag_close_PAGE($param)
2371
+		{
2372
+			if ($this->_isForOneLine) return false;
2373
+
2374
+			$this->_maxH = 0;
2375
+
2376
+			$this->parsingCss->load();
2377
+			$this->parsingCss->fontSet();
2378
+
2379
+			if ($this->_debugActif) $this->_DEBUG_add('PAGE '.$this->_page, false);
2380
+
2381
+			return true;
2382
+		}
2383
+
2384
+		/**
2385
+		 * tag : PAGE_HEADER
2386
+		 * mode : OPEN
2387
+		 *
2388
+		 * @param  array $param
2389
+		 * @return boolean
2390
+		 */
2391
+		protected function _tag_open_PAGE_HEADER($param)
2392
+		{
2393
+			if ($this->_isForOneLine) return false;
2394
+
2395
+			$this->_subHEADER = array();
2396
+			for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2397
+				$action = $this->parsingHtml->code[$this->_parsePos];
2398
+				if ($action['name']=='page_header') $action['name']='page_header_sub';
2399
+				$this->_subHEADER[] = $action;
2400
+				if (strtolower($action['name'])=='page_header_sub' && $action['close']) break;
2401
+			}
2402
+
2403
+			$this->_setPageHeader();
2404
+
2405
+			return true;
2406
+		}
2407
+
2408
+		/**
2409
+		 * tag : PAGE_FOOTER
2410
+		 * mode : OPEN
2411
+		 *
2412
+		 * @param  array $param
2413
+		 * @return boolean
2414
+		 */
2415
+		protected function _tag_open_PAGE_FOOTER($param)
2416
+		{
2417
+			if ($this->_isForOneLine) return false;
2418
+
2419
+			$this->_subFOOTER = array();
2420
+			for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2421
+				$action = $this->parsingHtml->code[$this->_parsePos];
2422
+				if ($action['name']=='page_footer') $action['name']='page_footer_sub';
2423
+				$this->_subFOOTER[] = $action;
2424
+				if (strtolower($action['name'])=='page_footer_sub' && $action['close']) break;
2425
+			}
2426
+
2427
+			$this->_setPageFooter();
2428
+
2429
+			return true;
2430
+		}
2431
+
2432
+		/**
2433
+		 * It is not a real tag. Does not use it directly
2434
+		 *
2435
+		 * @param  array $param
2436
+		 * @return boolean
2437
+		 */
2438
+		protected function _tag_open_PAGE_HEADER_SUB($param)
2439
+		{
2440
+			if ($this->_isForOneLine) return false;
2441
+
2442
+			// save the current stat
2443
+			$this->_subSTATES = array();
2444
+			$this->_subSTATES['x']  = $this->pdf->getX();
2445
+			$this->_subSTATES['y']  = $this->pdf->getY();
2446
+			$this->_subSTATES['s']  = $this->parsingCss->value;
2447
+			$this->_subSTATES['t']  = $this->parsingCss->table;
2448
+			$this->_subSTATES['ml'] = $this->_margeLeft;
2449
+			$this->_subSTATES['mr'] = $this->_margeRight;
2450
+			$this->_subSTATES['mt'] = $this->_margeTop;
2451
+			$this->_subSTATES['mb'] = $this->_margeBottom;
2452
+			$this->_subSTATES['mp'] = $this->_pageMarges;
2453
+
2454
+			// new stat for the header
2455
+			$this->_pageMarges = array();
2456
+			$this->_margeLeft    = $this->_defaultLeft;
2457
+			$this->_margeRight   = $this->_defaultRight;
2458
+			$this->_margeTop     = $this->_defaultTop;
2459
+			$this->_margeBottom  = $this->_defaultBottom;
2460
+			$this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2461
+			$this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2462
+			$this->pdf->setXY($this->_defaultLeft, $this->_defaultTop);
2463
+
2464
+			$this->parsingCss->initStyle();
2465
+			$this->parsingCss->resetStyle();
2466
+			$this->parsingCss->value['width'] = $this->pdf->getW() - $this->_defaultLeft - $this->_defaultRight;
2467
+			$this->parsingCss->table = array();
2468
+
2469
+			$this->parsingCss->save();
2470
+			$this->parsingCss->analyse('page_header_sub', $param);
2471
+			$this->parsingCss->setPosition();
2472
+			$this->parsingCss->fontSet();
2473
+			$this->_setNewPositionForNewLine();
2474
+			return true;
2475
+		}
2476
+
2477
+		/**
2478
+		 * It is not a real tag. Does not use it directly
2479
+		 *
2480
+		 * @param  array $param
2481
+		 * @return boolean
2482
+		 */
2483
+		protected function _tag_close_PAGE_HEADER_SUB($param)
2484
+		{
2485
+			if ($this->_isForOneLine) return false;
2486
+
2487
+			$this->parsingCss->load();
2488
+
2489
+			// restore the stat
2490
+			$this->parsingCss->value = $this->_subSTATES['s'];
2491
+			$this->parsingCss->table = $this->_subSTATES['t'];
2492
+			$this->_pageMarges       = $this->_subSTATES['mp'];
2493
+			$this->_margeLeft        = $this->_subSTATES['ml'];
2494
+			$this->_margeRight       = $this->_subSTATES['mr'];
2495
+			$this->_margeTop         = $this->_subSTATES['mt'];
2496
+			$this->_margeBottom      = $this->_subSTATES['mb'];
2497
+			$this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2498
+			$this->pdf->setbMargin($this->_margeBottom);
2499
+			$this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2500
+			$this->pdf->setXY($this->_subSTATES['x'], $this->_subSTATES['y']);
2501
+
2502
+			$this->parsingCss->fontSet();
2503
+			$this->_maxH = 0;
2504
+
2505
+			return true;
2506
+		}
2507
+
2508
+		/**
2509
+		 * It is not a real tag. Does not use it directly
2510
+		 *
2511
+		 * @param  array $param
2512
+		 * @return boolean
2513
+		 */
2514
+		protected function _tag_open_PAGE_FOOTER_SUB($param)
2515
+		{
2516
+			if ($this->_isForOneLine) return false;
2517
+
2518
+			// save the current stat
2519
+			$this->_subSTATES = array();
2520
+			$this->_subSTATES['x']    = $this->pdf->getX();
2521
+			$this->_subSTATES['y']    = $this->pdf->getY();
2522
+			$this->_subSTATES['s']    = $this->parsingCss->value;
2523
+			$this->_subSTATES['t']    = $this->parsingCss->table;
2524
+			$this->_subSTATES['ml']    = $this->_margeLeft;
2525
+			$this->_subSTATES['mr']    = $this->_margeRight;
2526
+			$this->_subSTATES['mt']    = $this->_margeTop;
2527
+			$this->_subSTATES['mb']    = $this->_margeBottom;
2528
+			$this->_subSTATES['mp']    = $this->_pageMarges;
2529
+
2530
+			// new stat for the footer
2531
+			$this->_pageMarges  = array();
2532
+			$this->_margeLeft   = $this->_defaultLeft;
2533
+			$this->_margeRight  = $this->_defaultRight;
2534
+			$this->_margeTop    = $this->_defaultTop;
2535
+			$this->_margeBottom = $this->_defaultBottom;
2536
+			$this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2537
+			$this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2538
+			$this->pdf->setXY($this->_defaultLeft, $this->_defaultTop);
2539
+
2540
+			$this->parsingCss->initStyle();
2541
+			$this->parsingCss->resetStyle();
2542
+			$this->parsingCss->value['width']    = $this->pdf->getW() - $this->_defaultLeft - $this->_defaultRight;
2543
+			$this->parsingCss->table                = array();
2544
+
2545
+			// we create a sub HTML2PFDF, and we execute on it the content of the footer, to get the height of it
2546
+			$sub = null;
2547
+			$this->_createSubHTML($sub);
2548
+			$sub->parsingHtml->code = $this->parsingHtml->getLevel($this->_parsePos);
2549
+			$sub->_makeHTMLcode();
2550
+			$this->pdf->setY($this->pdf->getH() - $sub->_maxY - $this->_defaultBottom - 0.01);
2551
+			$this->_destroySubHTML($sub);
2552
+
2553
+			$this->parsingCss->save();
2554
+			$this->parsingCss->analyse('page_footer_sub', $param);
2555
+			$this->parsingCss->setPosition();
2556
+			$this->parsingCss->fontSet();
2557
+			$this->_setNewPositionForNewLine();
2558
+
2559
+			return true;
2560
+		}
2561
+
2562
+		/**
2563
+		 * It is not a real tag. Does not use it directly
2564
+		 *
2565
+		 * @param  array $param
2566
+		 * @return boolean
2567
+		 */
2568
+		protected function _tag_close_PAGE_FOOTER_SUB($param)
2569
+		{
2570
+			if ($this->_isForOneLine) return false;
2571
+
2572
+			$this->parsingCss->load();
2573
+
2574
+			$this->parsingCss->value                = $this->_subSTATES['s'];
2575
+			$this->parsingCss->table                = $this->_subSTATES['t'];
2576
+			$this->_pageMarges                 = $this->_subSTATES['mp'];
2577
+			$this->_margeLeft                = $this->_subSTATES['ml'];
2578
+			$this->_margeRight                = $this->_subSTATES['mr'];
2579
+			$this->_margeTop                    = $this->_subSTATES['mt'];
2580
+			$this->_margeBottom                = $this->_subSTATES['mb'];
2581
+			$this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2582
+			$this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2583
+			$this->pdf->setXY($this->_subSTATES['x'], $this->_subSTATES['y']);
2584
+
2585
+			$this->parsingCss->fontSet();
2586
+			$this->_maxH = 0;
2587
+
2588
+			return true;
2589
+		}
2590
+
2591
+		/**
2592
+		 * tag : NOBREAK
2593
+		 * mode : OPEN
2594
+		 *
2595
+		 * @param  array $param
2596
+		 * @return boolean
2597
+		 */
2598
+		protected function _tag_open_NOBREAK($param)
2599
+		{
2600
+			if ($this->_isForOneLine) return false;
2601
+
2602
+			$this->_maxH = 0;
2603
+
2604
+			// create a sub HTML2PDF to execute the content of the tag, to get the dimensions
2605
+			$sub = null;
2606
+			$this->_createSubHTML($sub);
2607
+			$sub->parsingHtml->code = $this->parsingHtml->getLevel($this->_parsePos);
2608
+			$sub->_makeHTMLcode();
2609
+			$y = $this->pdf->getY();
2610
+
2611
+			// if the content does not fit on the page => new page
2612
+			if (
2613
+				$sub->_maxY < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin()) &&
2614
+				$y + $sub->_maxY>=($this->pdf->getH() - $this->pdf->getbMargin())
2615
+			) {
2616
+				$this->_setNewPage();
2617
+			}
2618
+
2619
+			// destroy the sub HTML2PDF
2620
+			$this->_destroySubHTML($sub);
2621
+
2622
+			return true;
2623
+		}
2624
+
2625
+
2626
+		/**
2627
+		 * tag : NOBREAK
2628
+		 * mode : CLOSE
2629
+		 *
2630
+		 * @param  array $param
2631
+		 * @return boolean
2632
+		 */
2633
+		protected function _tag_close_NOBREAK($param)
2634
+		{
2635
+			if ($this->_isForOneLine) return false;
2636
+
2637
+			$this->_maxH = 0;
2638
+
2639
+			return true;
2640
+		}
2641
+
2642
+		/**
2643
+		 * tag : DIV
2644
+		 * mode : OPEN
2645
+		 *
2646
+		 * @param  array $param
2647
+		 * @param  string $other name of tag that used the div tag
2648
+		 * @return boolean
2649
+		 */
2650
+		protected function _tag_open_DIV($param, $other = 'div')
2651
+		{
2652
+			if ($this->_isForOneLine) return false;
2653
+			if ($this->_debugActif) $this->_DEBUG_add(strtoupper($other), true);
2654
+
2655
+			$this->parsingCss->save();
2656
+			$this->parsingCss->analyse($other, $param);
2657
+			$this->parsingCss->fontSet();
2658
+
2659
+			// for fieldset and legend
2660
+			if (in_array($other, array('fieldset', 'legend'))) {
2661
+				if (isset($param['moveTop']))  $this->parsingCss->value['margin']['t']    += $param['moveTop'];
2662
+				if (isset($param['moveLeft'])) $this->parsingCss->value['margin']['l']    += $param['moveLeft'];
2663
+				if (isset($param['moveDown'])) $this->parsingCss->value['margin']['b']    += $param['moveDown'];
2664
+			}
2665
+
2666
+			$alignObject = null;
2667
+			if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
2668
+
2669
+			$marge = array();
2670
+			$marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2671
+			$marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2672
+			$marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2673
+			$marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2674
+
2675
+			// extract the content of the div
2676
+			$level = $this->parsingHtml->getLevel($this->_parsePos);
2677
+
2678
+			// create a sub HTML2PDF to get the dimensions of the content of the div
2679
+			$w = 0; $h = 0;
2680
+			if (count($level)) {
2681
+				$sub = null;
2682
+				$this->_createSubHTML($sub);
2683
+				$sub->parsingHtml->code = $level;
2684
+				$sub->_makeHTMLcode();
2685
+				$w = $sub->_maxX;
2686
+				$h = $sub->_maxY;
2687
+				$this->_destroySubHTML($sub);
2688
+			}
2689
+			$wReel = $w;
2690
+			$hReel = $h;
2691
+
2692
+			$w+= $marge['l']+$marge['r']+0.001;
2693
+			$h+= $marge['t']+$marge['b']+0.001;
2694
+
2695
+			if ($this->parsingCss->value['overflow']=='hidden') {
2696
+				$overW = max($w, $this->parsingCss->value['width']);
2697
+				$overH = max($h, $this->parsingCss->value['height']);
2698
+				$overflow = true;
2699
+				$this->parsingCss->value['old_maxX'] = $this->_maxX;
2700
+				$this->parsingCss->value['old_maxY'] = $this->_maxY;
2701
+				$this->parsingCss->value['old_maxH'] = $this->_maxH;
2702
+				$this->parsingCss->value['old_overflow'] = $this->_isInOverflow;
2703
+				$this->_isInOverflow = true;
2704
+			} else {
2705
+				$overW = null;
2706
+				$overH = null;
2707
+				$overflow = false;
2708
+				$this->parsingCss->value['width']    = max($w, $this->parsingCss->value['width']);
2709
+				$this->parsingCss->value['height']    = max($h, $this->parsingCss->value['height']);
2710
+			}
2711
+
2712
+			switch($this->parsingCss->value['rotate'])
2713
+			{
2714
+				case 90:
2715
+					$tmp = $overH; $overH = $overW; $overW = $tmp;
2716
+					$tmp = $hReel; $hReel = $wReel; $wReel = $tmp;
2717
+					unset($tmp);
2718
+					$w = $this->parsingCss->value['height'];
2719
+					$h = $this->parsingCss->value['width'];
2720
+					$tX =-$h;
2721
+					$tY = 0;
2722
+					break;
2723
+
2724
+				case 180:
2725
+					$w = $this->parsingCss->value['width'];
2726
+					$h = $this->parsingCss->value['height'];
2727
+					$tX = -$w;
2728
+					$tY = -$h;
2729
+					break;
2730
+
2731
+				case 270:
2732
+					$tmp = $overH; $overH = $overW; $overW = $tmp;
2733
+					$tmp = $hReel; $hReel = $wReel; $wReel = $tmp;
2734
+					unset($tmp);
2735
+					$w = $this->parsingCss->value['height'];
2736
+					$h = $this->parsingCss->value['width'];
2737
+					$tX = 0;
2738
+					$tY =-$w;
2739
+					break;
2740
+
2741
+				default:
2742
+					$w = $this->parsingCss->value['width'];
2743
+					$h = $this->parsingCss->value['height'];
2744
+					$tX = 0;
2745
+					$tY = 0;
2746
+					break;
2747
+			}
2748
+
2749
+			if (!$this->parsingCss->value['position']) {
2750
+				if (
2751
+					$w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
2752
+					$this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
2753
+					)
2754
+					$this->_tag_open_BR(array());
2755
+
2756
+				if (
2757
+						($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
2758
+						($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
2759
+						!$this->_isInOverflow
2760
+					)
2761
+					$this->_setNewPage();
2762
+
2763
+				$old = $this->parsingCss->getOldValues();
2764
+				$parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2765
+
2766
+				if ($parentWidth>$w) {
2767
+					if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2768
+					else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
2769
+				}
2770
+
2771
+				$this->parsingCss->setPosition();
2772
+			} else {
2773
+				$old = $this->parsingCss->getOldValues();
2774
+				$parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2775
+
2776
+				if ($parentWidth>$w) {
2777
+					if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2778
+					else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
2779
+				}
2780
+
2781
+				$this->parsingCss->setPosition();
2782
+				$this->_saveMax();
2783
+				$this->_maxX = 0;
2784
+				$this->_maxY = 0;
2785
+				$this->_maxH = 0;
2786
+				$this->_maxE = 0;
2787
+			}
2788
+
2789
+			if ($this->parsingCss->value['rotate']) {
2790
+				$this->pdf->startTransform();
2791
+				$this->pdf->setRotation($this->parsingCss->value['rotate']);
2792
+				$this->pdf->setTranslate($tX, $tY);
2793
+			}
2794
+
2795
+			$this->_drawRectangle(
2796
+				$this->parsingCss->value['x'],
2797
+				$this->parsingCss->value['y'],
2798
+				$this->parsingCss->value['width'],
2799
+				$this->parsingCss->value['height'],
2800
+				$this->parsingCss->value['border'],
2801
+				$this->parsingCss->value['padding'],
2802
+				0,
2803
+				$this->parsingCss->value['background']
2804
+			);
2805
+
2806
+			$marge = array();
2807
+			$marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2808
+			$marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2809
+			$marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2810
+			$marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2811
+
2812
+			$this->parsingCss->value['width'] -= $marge['l']+$marge['r'];
2813
+			$this->parsingCss->value['height']-= $marge['t']+$marge['b'];
2814
+
2815
+			$xCorr = 0;
2816
+			$yCorr = 0;
2817
+			if (!$this->_subPart && !$this->_isSubPart) {
2818
+				switch($this->parsingCss->value['text-align'])
2819
+				{
2820
+					case 'right':
2821
+						$xCorr = ($this->parsingCss->value['width']-$wReel);
2822
+						break;
2823
+					case 'center':
2824
+						$xCorr = ($this->parsingCss->value['width']-$wReel)*0.5;
2825
+						break;
2826
+				}
2827
+				if ($xCorr>0) $xCorr=0;
2828
+				switch($this->parsingCss->value['vertical-align'])
2829
+				{
2830
+					case 'bottom':
2831
+						$yCorr = ($this->parsingCss->value['height']-$hReel);
2832
+						break;
2833
+					case 'middle':
2834
+						$yCorr = ($this->parsingCss->value['height']-$hReel)*0.5;
2835
+						break;
2836
+				}
2837
+			}
2838
+
2839
+			if ($overflow) {
2840
+				$overW-= $marge['l']+$marge['r'];
2841
+				$overH-= $marge['t']+$marge['b'];
2842
+				$this->pdf->clippingPathStart(
2843
+					$this->parsingCss->value['x']+$marge['l'],
2844
+					$this->parsingCss->value['y']+$marge['t'],
2845
+					$this->parsingCss->value['width'],
2846
+					$this->parsingCss->value['height']
2847
+				);
2848
+
2849
+				$this->parsingCss->value['x']+= $xCorr;
2850
+
2851
+				// marges from the dimension of the content
2852
+				$mL = $this->parsingCss->value['x']+$marge['l'];
2853
+				$mR = $this->pdf->getW() - $mL - $overW;
2854
+			} else {
2855
+				// marges from the dimension of the div
2856
+				$mL = $this->parsingCss->value['x']+$marge['l'];
2857
+				$mR = $this->pdf->getW() - $mL - $this->parsingCss->value['width'];
2858
+			}
2859
+
2860
+			$x = $this->parsingCss->value['x']+$marge['l'];
2861
+			$y = $this->parsingCss->value['y']+$marge['t']+$yCorr;
2862
+			$this->_saveMargin($mL, 0, $mR);
2863
+			$this->pdf->setXY($x, $y);
2864
+
2865
+			$this->_setNewPositionForNewLine();
2866
+
2867
+			return true;
2868
+		}
2869
+
2870
+		/**
2871
+		 * tag : BLOCKQUOTE
2872
+		 * mode : OPEN
2873
+		 *
2874
+		 * @param  array $param
2875
+		 * @return boolean
2876
+		 */
2877
+		protected function _tag_open_BLOCKQUOTE($param)
2878
+		{
2879
+			return $this->_tag_open_DIV($param, 'blockquote');
2880
+		}
2881
+
2882
+		/**
2883
+		 * tag : LEGEND
2884
+		 * mode : OPEN
2885
+		 *
2886
+		 * @param  array $param
2887
+		 * @return boolean
2888
+		 */
2889
+		protected function _tag_open_LEGEND($param)
2890
+		{
2891
+			return $this->_tag_open_DIV($param, 'legend');
2892
+		}
2893
+
2894
+		/**
2895
+		 * tag : FIELDSET
2896
+		 * mode : OPEN
2897
+		 *
2898
+		 * @author Pavel Kochman
2899
+		 * @param  array $param
2900
+		 * @return boolean
2901
+		 */
2902
+		protected function _tag_open_FIELDSET($param)
2903
+		{
2904
+
2905
+			$this->parsingCss->save();
2906
+			$this->parsingCss->analyse('fieldset', $param);
2907
+
2908
+			// get height of LEGEND element and make fieldset corrections
2909
+			for ($tempPos = $this->_parsePos + 1; $tempPos<count($this->parsingHtml->code); $tempPos++) {
2910
+				$action = $this->parsingHtml->code[$tempPos];
2911
+				if ($action['name'] == 'fieldset') break;
2912
+				if ($action['name'] == 'legend' && !$action['close']) {
2913
+					$legendOpenPos = $tempPos;
2914
+
2915
+					$sub = null;
2916
+					$this->_createSubHTML($sub);
2917
+					$sub->parsingHtml->code = $this->parsingHtml->getLevel($tempPos - 1);
2918
+
2919
+					$res = null;
2920
+					for ($sub->_parsePos = 0; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
2921
+						$action = $sub->parsingHtml->code[$sub->_parsePos];
2922
+						$sub->_executeAction($action);
2923
+
2924
+						if ($action['name'] == 'legend' && $action['close'])
2925
+							break;
2926
+					}
2927
+
2928
+					$legendH = $sub->_maxY;
2929
+					$this->_destroySubHTML($sub);
2930
+
2931
+					$move = $this->parsingCss->value['padding']['t'] + $this->parsingCss->value['border']['t']['width'] + 0.03;
2932
+
2933
+					$param['moveTop'] = $legendH / 2;
2934
+
2935
+					$this->parsingHtml->code[$legendOpenPos]['param']['moveTop'] = - ($legendH / 2 + $move);
2936
+					$this->parsingHtml->code[$legendOpenPos]['param']['moveLeft'] = 2 - $this->parsingCss->value['border']['l']['width'] - $this->parsingCss->value['padding']['l'];
2937
+					$this->parsingHtml->code[$legendOpenPos]['param']['moveDown'] = $move;
2938
+					break;
2939
+				}
2940
+			}
2941
+			$this->parsingCss->load();
2942
+
2943
+			return $this->_tag_open_DIV($param, 'fieldset');
2944
+		}
2945
+
2946
+		/**
2947
+		 * tag : DIV
2948
+		 * mode : CLOSE
2949
+		 *
2950
+		 * @param  array $param
2951
+		 * @param  string $other name of tag that used the div tag
2952
+		 * @return boolean
2953
+		 */
2954
+		protected function _tag_close_DIV($param, $other='div')
2955
+		{
2956
+			if ($this->_isForOneLine) return false;
2957
+
2958
+			if ($this->parsingCss->value['overflow']=='hidden') {
2959
+				$this->_maxX = $this->parsingCss->value['old_maxX'];
2960
+				$this->_maxY = $this->parsingCss->value['old_maxY'];
2961
+				$this->_maxH = $this->parsingCss->value['old_maxH'];
2962
+				$this->_isInOverflow = $this->parsingCss->value['old_overflow'];
2963
+				$this->pdf->clippingPathStop();
2964
+			}
2965
+
2966
+			if ($this->parsingCss->value['rotate'])
2967
+				$this->pdf->stopTransform();
2968
+
2969
+			$marge = array();
2970
+			$marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2971
+			$marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2972
+			$marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2973
+			$marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2974
+
2975
+			$x = $this->parsingCss->value['x'];
2976
+			$y = $this->parsingCss->value['y'];
2977
+			$w = $this->parsingCss->value['width']+$marge['l']+$marge['r']+$this->parsingCss->value['margin']['r'];
2978
+			$h = $this->parsingCss->value['height']+$marge['t']+$marge['b']+$this->parsingCss->value['margin']['b'];
2979
+
2980
+			switch($this->parsingCss->value['rotate'])
2981
+			{
2982
+				case 90:
2983
+					$t = $w; $w = $h; $h = $t;
2984
+					break;
2985
+
2986
+				case 270:
2987
+					$t = $w; $w = $h; $h = $t;
2988
+					break;
2989
+
2990
+				default:
2991
+					break;
2992
+			}
2993
+
2994
+
2995
+			if ($this->parsingCss->value['position']!='absolute') {
2996
+				$this->pdf->setXY($x+$w, $y);
2997
+
2998
+				$this->_maxX = max($this->_maxX, $x+$w);
2999
+				$this->_maxY = max($this->_maxY, $y+$h);
3000
+				$this->_maxH = max($this->_maxH, $h);
3001
+			} else {
3002
+				$this->pdf->setXY($this->parsingCss->value['xc'], $this->parsingCss->value['yc']);
3003
+
3004
+				$this->_loadMax();
3005
+			}
3006
+
3007
+			$block = ($this->parsingCss->value['display']!='inline' && $this->parsingCss->value['position']!='absolute');
3008
+
3009
+			$this->parsingCss->load();
3010
+			$this->parsingCss->fontSet();
3011
+			$this->_loadMargin();
3012
+
3013
+			if ($block) $this->_tag_open_BR(array());
3014
+			if ($this->_debugActif) $this->_DEBUG_add(strtoupper($other), false);
3015
+
3016
+			return true;
3017
+		}
3018
+
3019
+		/**
3020
+		 * tag : BLOCKQUOTE
3021
+		 * mode : CLOSE
3022
+		 *
3023
+		 * @param  array $param
3024
+		 * @return boolean
3025
+		 */
3026
+		protected function _tag_close_BLOCKQUOTE($param)
3027
+		{
3028
+			return $this->_tag_close_DIV($param, 'blockquote');
3029
+		}
3030
+
3031
+		/**
3032
+		 * tag : FIELDSET
3033
+		 * mode : CLOSE
3034
+		 *
3035
+		 * @param  array $param
3036
+		 * @return boolean
3037
+		 */
3038
+		protected function _tag_close_FIELDSET($param)
3039
+		{
3040
+			return $this->_tag_close_DIV($param, 'fieldset');
3041
+		}
3042
+
3043
+		/**
3044
+		 * tag : LEGEND
3045
+		 * mode : CLOSE
3046
+		 *
3047
+		 * @param  array $param
3048
+		 * @return boolean
3049
+		 */
3050
+		protected function _tag_close_LEGEND($param)
3051
+		{
3052
+			return $this->_tag_close_DIV($param, 'legend');
3053
+		}
3054
+
3055
+		/**
3056
+		 * tag : BARCODE
3057
+		 * mode : OPEN
3058
+		 *
3059
+		 * @param  array $param
3060
+		 * @return boolean
3061
+		 */
3062
+		protected function _tag_open_BARCODE($param)
3063
+		{
3064
+			// for  compatibility with old versions < 3.29
3065
+			$lstBarcode = array();
3066
+			$lstBarcode['UPC_A']  =    'UPCA';
3067
+			$lstBarcode['CODE39'] =    'C39';
3068
+
3069
+			if (!isset($param['type']))     $param['type'] = 'C39';
3070
+			if (!isset($param['value']))    $param['value']    = 0;
3071
+			if (!isset($param['label']))    $param['label']    = 'label';
3072
+			if (!isset($param['style']['color'])) $param['style']['color'] = '#000000';
3073
+
3074
+			if ($this->_testIsDeprecated && (isset($param['bar_h']) || isset($param['bar_w'])))
3075
+				throw new HTML2PDF_exception(9, array('BARCODE', 'bar_h, bar_w'));
3076
+
3077
+			$param['type'] = strtoupper($param['type']);
3078
+			if (isset($lstBarcode[$param['type']])) $param['type'] = $lstBarcode[$param['type']];
3079
+
3080
+			$this->parsingCss->save();
3081
+			$this->parsingCss->analyse('barcode', $param);
3082
+			$this->parsingCss->setPosition();
3083
+			$this->parsingCss->fontSet();
3084
+
3085
+			$x = $this->pdf->getX();
3086
+			$y = $this->pdf->getY();
3087
+			$w = $this->parsingCss->value['width'];    if (!$w) $w = $this->parsingCss->ConvertToMM('50mm');
3088
+			$h = $this->parsingCss->value['height'];    if (!$h) $h = $this->parsingCss->ConvertToMM('10mm');
3089
+			$txt = ($param['label']!=='none' ? $this->parsingCss->value['font-size'] : false);
3090
+			$c = $this->parsingCss->value['color'];
3091
+			$infos = $this->pdf->myBarcode($param['value'], $param['type'], $x, $y, $w, $h, $txt, $c);
3092
+
3093
+			$this->_maxX = max($this->_maxX, $x+$infos[0]);
3094
+			$this->_maxY = max($this->_maxY, $y+$infos[1]);
3095
+			$this->_maxH = max($this->_maxH, $infos[1]);
3096
+			$this->_maxE++;
3097
+
3098
+			$this->pdf->setXY($x+$infos[0], $y);
3099
+
3100
+			$this->parsingCss->load();
3101
+			$this->parsingCss->fontSet();
3102
+
3103
+			return true;
3104
+		}
3105
+
3106
+		/**
3107
+		 * tag : BARCODE
3108
+		 * mode : CLOSE
3109
+		 *
3110
+		 * @param  array $param
3111
+		 * @return boolean
3112
+		 */
3113
+		protected function _tag_close_BARCODE($param)
3114
+		{
3115
+			// there is nothing to do here
3116
+
3117
+			return true;
3118
+		}
3119
+
3120
+		/**
3121
+		 * tag : QRCODE
3122
+		 * mode : OPEN
3123
+		 *
3124
+		 * @param  array $param
3125
+		 * @return boolean
3126
+		 */
3127
+		protected function _tag_open_QRCODE($param)
3128
+		{
3129
+			if ($this->_testIsDeprecated && (isset($param['size']) || isset($param['noborder'])))
3130
+				throw new HTML2PDF_exception(9, array('QRCODE', 'size, noborder'));
3131
+
3132
+			if ($this->_debugActif) $this->_DEBUG_add('QRCODE');
3133
+
3134
+			if (!isset($param['value']))                     $param['value'] = '';
3135
+			if (!isset($param['ec']))                        $param['ec'] = 'H';
3136
+			if (!isset($param['style']['color']))            $param['style']['color'] = '#000000';
3137
+			if (!isset($param['style']['background-color'])) $param['style']['background-color'] = '#FFFFFF';
3138
+			if (isset($param['style']['border'])) {
3139
+				$borders = $param['style']['border']!='none';
3140
+				unset($param['style']['border']);
3141
+			} else {
3142
+				$borders = true;
3143
+			}
3144
+
3145
+			if ($param['value']==='') return true;
3146
+			if (!in_array($param['ec'], array('L', 'M', 'Q', 'H'))) $param['ec'] = 'H';
3147
+
3148
+			$this->parsingCss->save();
3149
+			$this->parsingCss->analyse('qrcode', $param);
3150
+			$this->parsingCss->setPosition();
3151
+			$this->parsingCss->fontSet();
3152
+
3153
+			$x = $this->pdf->getX();
3154
+			$y = $this->pdf->getY();
3155
+			$w = $this->parsingCss->value['width'];
3156
+			$h = $this->parsingCss->value['height'];
3157
+			$size = max($w, $h); if (!$size) $size = $this->parsingCss->ConvertToMM('50mm');
3158
+
3159
+			$style = array(
3160
+					'fgcolor' => $this->parsingCss->value['color'],
3161
+					'bgcolor' => $this->parsingCss->value['background']['color'],
3162
+				);
3163
+
3164
+			if ($borders) {
3165
+				$style['border'] = true;
3166
+				$style['padding'] = 'auto';
3167
+			} else {
3168
+				$style['border'] = false;
3169
+				$style['padding'] = 0;
3170
+			}
3171
+
3172
+			if (!$this->_subPart && !$this->_isSubPart) {
3173
+				$this->pdf->write2DBarcode($param['value'], 'QRCODE,'.$param['ec'], $x, $y, $size, $size, $style);
3174
+			}
3175
+
3176
+			$this->_maxX = max($this->_maxX, $x+$size);
3177
+			$this->_maxY = max($this->_maxY, $y+$size);
3178
+			$this->_maxH = max($this->_maxH, $size);
3179
+			$this->_maxE++;
3180
+
3181
+			$this->pdf->setX($x+$size);
3182
+
3183
+			$this->parsingCss->load();
3184
+			$this->parsingCss->fontSet();
3185
+
3186
+			return true;
3187
+		}
3188
+
3189
+		/**
3190
+		 * tag : QRCODE
3191
+		 * mode : CLOSE
3192
+		 *
3193
+		 * @param  array $param
3194
+		 * @return boolean
3195
+		 */
3196
+		protected function _tag_close_QRCODE($param)
3197
+		{
3198
+			// there is nothing to do here
3199
+
3200
+			return true;
3201
+		}
3202
+
3203
+		/**
3204
+		 * tag : BOOKMARK
3205
+		 * mode : OPEN
3206
+		 *
3207
+		 * @param  array $param
3208
+		 * @return boolean
3209
+		 */
3210
+		protected function _tag_open_BOOKMARK($param)
3211
+		{
3212
+			$titre = isset($param['title']) ? trim($param['title']) : '';
3213
+			$level = isset($param['level']) ? floor($param['level']) : 0;
3214
+
3215
+			if ($level<0) $level = 0;
3216
+			if ($titre) $this->pdf->Bookmark($titre, $level, -1);
3217
+
3218
+			return true;
3219
+		}
3220
+
3221
+		/**
3222
+		 * tag : BOOKMARK
3223
+		 * mode : CLOSE
3224
+		 *
3225
+		 * @param  array $param
3226
+		 * @return boolean
3227
+		 */
3228
+		protected function _tag_close_BOOKMARK($param)
3229
+		{
3230
+			// there is nothing to do here
3231
+
3232
+			return true;
3233
+		}
3234
+
3235
+		/**
3236
+		 * this is not a real TAG, it is just to write texts
3237
+		 *
3238
+		 * @param  array $param
3239
+		 * @return boolean
3240
+		 */
3241
+		protected function _tag_open_WRITE($param)
3242
+		{
3243
+			$fill = ($this->parsingCss->value['background']['color']!==null && $this->parsingCss->value['background']['image']===null);
3244
+			if (in_array($this->parsingCss->value['id_tag'], array('fieldset', 'legend', 'div', 'table', 'tr', 'td', 'th'))) {
3245
+				$fill = false;
3246
+			}
3247
+
3248
+			// get the text to write
3249
+			$txt = $param['txt'];
3250
+
3251
+			if ($this->_isAfterFloat) {
3252
+				$txt = ltrim($txt);
3253
+				$this->_isAfterFloat = false;
3254
+			}
3255
+
3256
+			$txt = str_replace('[[page_nb]]', $this->pdf->getMyAliasNbPages(), $txt);
3257
+			$txt = str_replace('[[page_cu]]', $this->pdf->getMyNumPage($this->_page), $txt);
3258
+
3259
+			if ($this->parsingCss->value['text-transform']!='none') {
3260
+				if ($this->parsingCss->value['text-transform']=='capitalize')
3261
+					$txt = ucwords($txt);
3262
+				else if ($this->parsingCss->value['text-transform']=='uppercase')
3263
+					$txt = strtoupper($txt);
3264
+				else if ($this->parsingCss->value['text-transform']=='lowercase')
3265
+					$txt = strtolower($txt);
3266
+			}
3267
+
3268
+			// size of the text
3269
+			$h  = 1.08*$this->parsingCss->value['font-size'];
3270
+			$dh = $h*$this->parsingCss->value['mini-decal'];
3271
+			$lh = $this->parsingCss->getLineHeight();
3272
+
3273
+			// identify the align
3274
+			$align = 'L';
3275
+			if ($this->parsingCss->value['text-align']=='li_right') {
3276
+				$w = $this->parsingCss->value['width'];
3277
+				$align = 'R';
3278
+			}
3279
+
3280
+			// calculate the width of each words, and of all the sentence
3281
+			$w = 0;
3282
+			$words = explode(' ', $txt);
3283
+			foreach ($words as $k => $word) {
3284
+				$words[$k] = array($word, $this->pdf->GetStringWidth($word));
3285
+				$w+= $words[$k][1];
3286
+			}
3287
+			$space = $this->pdf->GetStringWidth(' ');
3288
+			$w+= $space*(count($words)-1);
3289
+
3290
+			// position in the text
3291
+			$currPos = 0;
3292
+
3293
+			// the bigger width of the text, after automatic break line
3294
+			$maxX = 0;
3295
+
3296
+			// position of the text
3297
+			$x = $this->pdf->getX();
3298
+			$y = $this->pdf->getY();
3299
+			$dy = $this->_getElementY($lh);
3300
+
3301
+			// margins
3302
+			list($left, $right) = $this->_getMargins($y);
3303
+
3304
+			// number of lines after automatic break line
3305
+			$nb = 0;
3306
+
3307
+			// while we have words, and the text does not fit on the line => we cut the sentence
3308
+			while ($x+$w>$right && $x<$right+$space && count($words)) {
3309
+				// adding words 1 by 1 to fit on the line
3310
+				$i=0;
3311
+				$old = array('', 0);
3312
+				$str = $words[0];
3313
+				$add = false;
3314
+				while (($x+$str[1])<$right) {
3315
+					$i++;
3316
+					$add = true;
3317
+
3318
+					array_shift($words);
3319
+					$old = $str;
3320
+
3321
+					if (!count($words)) break;
3322
+					$str[0].= ' '.$words[0][0];
3323
+					$str[1]+= $space+$words[0][1];
3324
+				}
3325
+				$str = $old;
3326
+
3327
+				// if  nothing fit on the line, and if the first word does not fit on the line => the word is too long, we put it
3328
+				if ($i==0 && (($left+$words[0][1])>=$right)) {
3329
+					$str = $words[0];
3330
+					array_shift($words);
3331
+					$i++;
3332
+					$add = true;
3333
+				}
3334
+				$currPos+= ($currPos ? 1 : 0)+strlen($str[0]);
3335
+
3336
+				// write the extract sentence that fit on the page
3337
+				$wc = ($align=='L' ? $str[1] : $this->parsingCss->value['width']);
3338
+				if ($right - $left<$wc) $wc = $right - $left;
3339
+
3340
+				if (strlen($str[0])) {
3341
+					$this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3342
+					$this->pdf->Cell($wc, $h, $str[0], 0, 0, $align, $fill, $this->_isInLink);
3343
+					$this->pdf->setXY($this->pdf->getX(), $y);
3344
+				}
3345
+				$this->_maxH = max($this->_maxH, $lh);
3346
+
3347
+				// max width
3348
+				$maxX = max($maxX, $this->pdf->getX());
3349
+
3350
+				// new position and new width for the "while"
3351
+				$w-= $str[1];
3352
+				$y = $this->pdf->getY();
3353
+				$x = $this->pdf->getX();
3354
+				$dy = $this->_getElementY($lh);
3355
+
3356
+				// if we have again words to write
3357
+				if (count($words)) {
3358
+					// remove the space at the end
3359
+					if ($add) $w-= $space;
3360
+
3361
+					// if we don't add any word, and if the first word is empty => useless space to skip
3362
+					if (!$add && $words[0][0]==='') {
3363
+						array_shift($words);
3364
+					}
3365
+
3366
+					// if it is just to calculate for one line => adding the number of words
3367
+					if ($this->_isForOneLine) {
3368
+						$this->_maxE+= $i;
3369
+						$this->_maxX = max($this->_maxX, $maxX);
3370
+						return null;
3371
+					}
3372
+
3373
+					// automatic line break
3374
+					$this->_tag_open_BR(array('style' => ''), $currPos);
3375
+
3376
+					// new position
3377
+					$y = $this->pdf->getY();
3378
+					$x = $this->pdf->getX();
3379
+					$dy = $this->_getElementY($lh);
3380
+
3381
+					// if the next line does  not fit on the page => new page
3382
+					if ($y + $h>=$this->pdf->getH() - $this->pdf->getbMargin()) {
3383
+						if (!$this->_isInOverflow && !$this->_isInFooter) {
3384
+							$this->_setNewPage(null, '', null, $currPos);
3385
+							$y = $this->pdf->getY();
3386
+							$x = $this->pdf->getX();
3387
+							$dy = $this->_getElementY($lh);
3388
+						}
3389
+					}
3390
+
3391
+					// if more than 10000 line => error
3392
+					$nb++;
3393
+					if ($nb>10000) {
3394
+						$txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3395
+						throw new HTML2PDF_exception(2, array($txt, $right-$left, $w));
3396
+					}
3397
+
3398
+					// new margins for the new line
3399
+					list($left, $right) = $this->_getMargins($y);
3400
+				}
3401
+			}
3402
+
3403
+			// if we have words after automatic cut, it is because they fit on the line => we write the text
3404
+			if (count($words)) {
3405
+				$txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3406
+				$w+= $this->pdf->getWordSpacing()*(count($words));
3407
+				$this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3408
+				$this->pdf->Cell(($align=='L' ? $w : $this->parsingCss->value['width']), $h, $txt, 0, 0, $align, $fill, $this->_isInLink);
3409
+				$this->pdf->setXY($this->pdf->getX(), $y);
3410
+				$this->_maxH = max($this->_maxH, $lh);
3411
+				$this->_maxE+= count($words);
3412
+			}
3413
+
3414
+			$maxX = max($maxX, $this->pdf->getX());
3415
+			$maxY = $this->pdf->getY()+$h;
3416
+
3417
+			$this->_maxX = max($this->_maxX, $maxX);
3418
+			$this->_maxY = max($this->_maxY, $maxY);
3419
+
3420
+			return true;
3421
+		}
3422
+
3423
+		/**
3424
+		 * tag : BR
3425
+		 * mode : OPEN
3426
+		 *
3427
+		 * @param  array   $param
3428
+		 * @param  integer $curr real position in the html parseur (if break line in the write of a text)
3429
+		 * @return boolean
3430
+		 */
3431
+		protected function _tag_open_BR($param, $curr = null)
3432
+		{
3433
+			if ($this->_isForOneLine) return false;
3434
+
3435
+			$h = max($this->_maxH, $this->parsingCss->getLineHeight());
3436
+
3437
+			if ($this->_maxH==0) $this->_maxY = max($this->_maxY, $this->pdf->getY()+$h);
3438
+
3439
+			$this->_makeBreakLine($h, $curr);
3440
+
3441
+			$this->_maxH = 0;
3442
+			$this->_maxE = 0;
3443
+
3444
+			return true;
3445
+		}
3446
+
3447
+		/**
3448
+		 * tag : HR
3449
+		 * mode : OPEN
3450
+		 *
3451
+		 * @param  array $param
3452
+		 * @return boolean
3453
+		 */
3454
+		protected function _tag_open_HR($param)
3455
+		{
3456
+			if ($this->_isForOneLine) return false;
3457
+			$oldAlign = $this->parsingCss->value['text-align'];
3458
+			$this->parsingCss->value['text-align'] = 'left';
3459
+
3460
+			if ($this->_maxH) $this->_tag_open_BR($param);
3461
+
3462
+			$fontSize = $this->parsingCss->value['font-size'];
3463
+			$this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
3464
+			$this->parsingCss->value['font-size']=0;
3465
+
3466
+			$param['style']['width'] = '100%';
3467
+
3468
+			$this->parsingCss->save();
3469
+			$this->parsingCss->value['height']=$this->parsingCss->ConvertToMM('1mm');
3470
+
3471
+			$this->parsingCss->analyse('hr', $param);
3472
+			$this->parsingCss->setPosition();
3473
+			$this->parsingCss->fontSet();
3474
+
3475
+			$h = $this->parsingCss->value['height'];
3476
+			if ($h)    $h-= $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3477
+			if ($h<=0) $h = $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3478
+
3479
+			$this->_drawRectangle($this->pdf->getX(), $this->pdf->getY(), $this->parsingCss->value['width'], $h, $this->parsingCss->value['border'], 0, 0, $this->parsingCss->value['background']);
3480
+			$this->_maxH = $h;
3481
+
3482
+			$this->parsingCss->load();
3483
+			$this->parsingCss->fontSet();
3484
+
3485
+			$this->_tag_open_BR($param);
3486
+
3487
+			$this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
3488
+			$this->parsingCss->value['font-size']=$fontSize;
3489
+
3490
+			$this->parsingCss->value['text-align'] = $oldAlign;
3491
+			$this->_setNewPositionForNewLine();
3492
+
3493
+			return true;
3494
+		}
3495
+
3496
+		/**
3497
+		 * tag : B
3498
+		 * mode : OPEN
3499
+		 *
3500
+		 * @param  array $param
3501
+		 * @param  string $other
3502
+		 * @return boolean
3503
+		 */
3504
+		protected function _tag_open_B($param, $other = 'b')
3505
+		{
3506
+			$this->parsingCss->save();
3507
+			$this->parsingCss->value['font-bold'] = true;
3508
+			$this->parsingCss->analyse($other, $param);
3509
+			$this->parsingCss->setPosition();
3510
+			$this->parsingCss->fontSet();
3511
+
3512
+			return true;
3513
+		}
3514
+
3515
+		/**
3516
+		 * tag : STRONG
3517
+		 * mode : OPEN
3518
+		 *
3519
+		 * @param  array $param
3520
+		 * @return boolean
3521
+		 */
3522
+		protected function _tag_open_STRONG($param)
3523
+		{
3524
+			return $this->_tag_open_B($param, 'strong');
3525
+		}
3526
+
3527
+		/**
3528
+		 * tag : B
3529
+		 * mode : CLOSE
3530
+		 *
3531
+		 * @param    array $param
3532
+		 * @return boolean
3533
+		 */
3534
+		protected function _tag_close_B($param)
3535
+		{
3536
+			$this->parsingCss->load();
3537
+			$this->parsingCss->fontSet();
3538
+
3539
+			return true;
3540
+		}
3541
+
3542
+		/**
3543
+		 * tag : STRONG
3544
+		 * mode : CLOSE
3545
+		 *
3546
+		 * @param  array $param
3547
+		 * @return boolean
3548
+		 */
3549
+		protected function _tag_close_STRONG($param)
3550
+		{
3551
+			return $this->_tag_close_B($param);
3552
+		}
3553
+
3554
+		/**
3555
+		 * tag : I
3556
+		 * mode : OPEN
3557
+		 *
3558
+		 * @param  array $param
3559
+		 * @param  string $other
3560
+		 * @return boolean
3561
+		 */
3562
+		protected function _tag_open_I($param, $other = 'i')
3563
+		{
3564
+			$this->parsingCss->save();
3565
+			$this->parsingCss->value['font-italic'] = true;
3566
+			$this->parsingCss->analyse($other, $param);
3567
+			$this->parsingCss->setPosition();
3568
+			$this->parsingCss->fontSet();
3569
+
3570
+			return true;
3571
+		}
3572
+
3573
+		/**
3574
+		 * tag : ADDRESS
3575
+		 * mode : OPEN
3576
+		 *
3577
+		 * @param  array $param
3578
+		 * @return boolean
3579
+		 */
3580
+		protected function _tag_open_ADDRESS($param)
3581
+		{
3582
+			return $this->_tag_open_I($param, 'address');
3583
+		}
3584
+
3585
+		/**
3586
+		 * tag : CITE
3587
+		 * mode : OPEN
3588
+		 *
3589
+		 * @param  array $param
3590
+		 * @return boolean
3591
+		 */
3592
+		protected function _tag_open_CITE($param)
3593
+		{
3594
+			return $this->_tag_open_I($param, 'cite');
3595
+		}
3596
+
3597
+		/**
3598
+		 * tag : EM
3599
+		 * mode : OPEN
3600
+		 *
3601
+		 * @param  array $param
3602
+		 * @return boolean
3603
+		 */
3604
+		protected function _tag_open_EM($param)
3605
+		{
3606
+			return $this->_tag_open_I($param, 'em');
3607
+		}
3608
+
3609
+		/**
3610
+		 * tag : SAMP
3611
+		 * mode : OPEN
3612
+		 *
3613
+		 * @param  array $param
3614
+		 * @return boolean
3615
+		 */
3616
+		protected function _tag_open_SAMP($param)
3617
+		{
3618
+			return $this->_tag_open_I($param, 'samp');
3619
+		}
3620
+
3621
+		/**
3622
+		 * tag : I
3623
+		 * mode : CLOSE
3624
+		 *
3625
+		 * @param  array $param
3626
+		 * @return boolean
3627
+		 */
3628
+		protected function _tag_close_I($param)
3629
+		{
3630
+			$this->parsingCss->load();
3631
+			$this->parsingCss->fontSet();
3632
+
3633
+			return true;
3634
+		}
3635
+
3636
+		/**
3637
+		 * tag : ADDRESS
3638
+		 * mode : CLOSE
3639
+		 *
3640
+		 * @param  array $param
3641
+		 * @return boolean
3642
+		 */
3643
+		protected function _tag_close_ADDRESS($param)
3644
+		{
3645
+			return $this->_tag_close_I($param);
3646
+		}
3647
+
3648
+		/**
3649
+		 * tag : CITE
3650
+		 * mode : CLOSE
3651
+		 *
3652
+		 * @param  array $param
3653
+		 * @return boolean
3654
+		 */
3655
+		protected function _tag_close_CITE($param)
3656
+		{
3657
+			return $this->_tag_close_I($param);
3658
+		}
3659
+
3660
+		/**
3661
+		 * tag : EM
3662
+		 * mode : CLOSE
3663
+		 *
3664
+		 * @param  array $param
3665
+		 * @return boolean
3666
+		 */
3667
+		protected function _tag_close_EM($param)
3668
+		{
3669
+			return $this->_tag_close_I($param);
3670
+		}
3671
+
3672
+		/**
3673
+		 * tag : SAMP
3674
+		 * mode : CLOSE
3675
+		 *
3676
+		 * @param  array $param
3677
+		 * @return boolean
3678
+		 */
3679
+		protected function _tag_close_SAMP($param)
3680
+		{
3681
+			return $this->_tag_close_I($param);
3682
+		}
3683
+
3684
+		/**
3685
+		 * tag : S
3686
+		 * mode : OPEN
3687
+		 *
3688
+		 * @param  array $param
3689
+		 * @param  string $other
3690
+		 * @return boolean
3691
+		 */
3692
+		protected function _tag_open_S($param, $other = 's')
3693
+		{
3694
+			$this->parsingCss->save();
3695
+			$this->parsingCss->value['font-linethrough'] = true;
3696
+			$this->parsingCss->analyse($other, $param);
3697
+			$this->parsingCss->setPosition();
3698
+			$this->parsingCss->fontSet();
3699
+
3700
+			return true;
3701
+		}
3702
+
3703
+		/**
3704
+		 * tag : DEL
3705
+		 * mode : OPEN
3706
+		 *
3707
+		 * @param  array $param
3708
+		 * @return boolean
3709
+		 */
3710
+		protected function _tag_open_DEL($param)
3711
+		{
3712
+			return $this->_tag_open_S($param, 'del');
3713
+		}
3714
+
3715
+		/**
3716
+		 * tag : S
3717
+		 * mode : CLOSE
3718
+		 *
3719
+		 * @param    array $param
3720
+		 * @return boolean
3721
+		 */
3722
+		protected function _tag_close_S($param)
3723
+		{
3724
+			$this->parsingCss->load();
3725
+			$this->parsingCss->fontSet();
3726
+
3727
+			return true;
3728
+		}
3729
+
3730
+		/**
3731
+		 * tag : DEL
3732
+		 * mode : CLOSE
3733
+		 *
3734
+		 * @param  array $param
3735
+		 * @return boolean
3736
+		 */
3737
+		protected function _tag_close_DEL($param)
3738
+		{
3739
+			return $this->_tag_close_S($param);
3740
+		}
3741
+
3742
+		/**
3743
+		 * tag : U
3744
+		 * mode : OPEN
3745
+		 *
3746
+		 * @param  array $param
3747
+		 * @param  string $other
3748
+		 * @return boolean
3749
+		 */
3750
+		protected function _tag_open_U($param, $other='u')
3751
+		{
3752
+			$this->parsingCss->save();
3753
+			$this->parsingCss->value['font-underline'] = true;
3754
+			$this->parsingCss->analyse($other, $param);
3755
+			$this->parsingCss->setPosition();
3756
+			$this->parsingCss->fontSet();
3757
+
3758
+			return true;
3759
+		}
3760
+
3761
+		/**
3762
+		 * tag : INS
3763
+		 * mode : OPEN
3764
+		 *
3765
+		 * @param  array $param
3766
+		 * @return boolean
3767
+		 */
3768
+		protected function _tag_open_INS($param)
3769
+		{
3770
+			return $this->_tag_open_U($param, 'ins');
3771
+		}
3772
+
3773
+		/**
3774
+		 * tag : U
3775
+		 * mode : CLOSE
3776
+		 *
3777
+		 * @param    array $param
3778
+		 * @return boolean
3779
+		 */
3780
+		protected function _tag_close_U($param)
3781
+		{
3782
+			$this->parsingCss->load();
3783
+			$this->parsingCss->fontSet();
3784
+
3785
+			return true;
3786
+		}
3787
+
3788
+		/**
3789
+		 * tag : INS
3790
+		 * mode : CLOSE
3791
+		 *
3792
+		 * @param  array $param
3793
+		 * @return boolean
3794
+		 */
3795
+		protected function _tag_close_INS($param)
3796
+		{
3797
+			return $this->_tag_close_U($param);
3798
+		}
3799
+
3800
+		/**
3801
+		 * tag : A
3802
+		 * mode : OPEN
3803
+		 *
3804
+		 * @param  array $param
3805
+		 * @return boolean
3806
+		 */
3807
+		protected function _tag_open_A($param)
3808
+		{
3809
+			$this->_isInLink = str_replace('&amp;', '&', isset($param['href']) ? $param['href'] : '');
3810
+
3811
+			if (isset($param['name'])) {
3812
+				$name =     $param['name'];
3813
+				if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
3814
+
3815
+				if (!$this->_lstAnchor[$name][1]) {
3816
+					$this->_lstAnchor[$name][1] = true;
3817
+					$this->pdf->SetLink($this->_lstAnchor[$name][0], -1, -1);
3818
+				}
3819
+			}
3820
+
3821
+			if (preg_match('/^#([^#]+)$/isU', $this->_isInLink, $match)) {
3822
+				$name = $match[1];
3823
+				if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
3824
+
3825
+				$this->_isInLink = $this->_lstAnchor[$name][0];
3826
+			}
3827
+
3828
+			$this->parsingCss->save();
3829
+			$this->parsingCss->value['font-underline'] = true;
3830
+			$this->parsingCss->value['color'] = array(20, 20, 250);
3831
+			$this->parsingCss->analyse('a', $param);
3832
+			$this->parsingCss->setPosition();
3833
+			$this->parsingCss->fontSet();
3834
+
3835
+			return true;
3836
+		}
3837
+
3838
+		/**
3839
+		 * tag : A
3840
+		 * mode : CLOSE
3841
+		 *
3842
+		 * @param  array $param
3843
+		 * @return boolean
3844
+		 */
3845
+		protected function _tag_close_A($param)
3846
+		{
3847
+			$this->_isInLink    = '';
3848
+			$this->parsingCss->load();
3849
+			$this->parsingCss->fontSet();
3850
+
3851
+			return true;
3852
+		}
3853
+
3854
+		/**
3855
+		 * tag : H1
3856
+		 * mode : OPEN
3857
+		 *
3858
+		 * @param  array $param
3859
+		 * @param  string $other
3860
+		 * @return boolean
3861
+		 */
3862
+		protected function _tag_open_H1($param, $other = 'h1')
3863
+		{
3864
+			if ($this->_isForOneLine) return false;
3865
+
3866
+			if ($this->_maxH) $this->_tag_open_BR(array());
3867
+			$this->parsingCss->save();
3868
+			$this->parsingCss->value['font-bold'] = true;
3869
+
3870
+			$size = array('h1' => '28px', 'h2' => '24px', 'h3' => '20px', 'h4' => '16px', 'h5' => '12px', 'h6' => '9px');
3871
+			$this->parsingCss->value['margin']['l'] = 0;
3872
+			$this->parsingCss->value['margin']['r'] = 0;
3873
+			$this->parsingCss->value['margin']['t'] = $this->parsingCss->ConvertToMM('16px');
3874
+			$this->parsingCss->value['margin']['b'] = $this->parsingCss->ConvertToMM('16px');
3875
+			$this->parsingCss->value['font-size'] = $this->parsingCss->ConvertToMM($size[$other]);
3876
+
3877
+			$this->parsingCss->analyse($other, $param);
3878
+			$this->parsingCss->setPosition();
3879
+			$this->parsingCss->fontSet();
3880
+			$this->_setNewPositionForNewLine();
3881
+
3882
+			return true;
3883
+		}
3884
+
3885
+		/**
3886
+		 * tag : H2
3887
+		 * mode : OPEN
3888
+		 *
3889
+		 * @param  array $param
3890
+		 * @return boolean
3891
+		 */
3892
+		protected function _tag_open_H2($param)
3893
+		{
3894
+			return $this->_tag_open_H1($param, 'h2');
3895
+		}
3896
+
3897
+		/**
3898
+		 * tag : H3
3899
+		 * mode : OPEN
3900
+		 *
3901
+		 * @param  array $param
3902
+		 * @return boolean
3903
+		 */
3904
+		protected function _tag_open_H3($param)
3905
+		{
3906
+			return $this->_tag_open_H1($param, 'h3');
3907
+		}
3908
+
3909
+		/**
3910
+		 * tag : H4
3911
+		 * mode : OPEN
3912
+		 *
3913
+		 * @param  array $param
3914
+		 * @return boolean
3915
+		 */
3916
+		protected function _tag_open_H4($param)
3917
+		{
3918
+			return $this->_tag_open_H1($param, 'h4');
3919
+		}
3920
+
3921
+		/**
3922
+		 * tag : H5
3923
+		 * mode : OPEN
3924
+		 *
3925
+		 * @param  array $param
3926
+		 * @return boolean
3927
+		 */
3928
+		protected function _tag_open_H5($param)
3929
+		{
3930
+			return $this->_tag_open_H1($param, 'h5');
3931
+		}
3932
+
3933
+		/**
3934
+		 * tag : H6
3935
+		 * mode : OPEN
3936
+		 *
3937
+		 * @param  array $param
3938
+		 * @return boolean
3939
+		 */
3940
+		protected function _tag_open_H6($param)
3941
+		{
3942
+			return $this->_tag_open_H1($param, 'h6');
3943
+		}
3944
+
3945
+		/**
3946
+		 * tag : H1
3947
+		 * mode : CLOSE
3948
+		 *
3949
+		 * @param  array $param
3950
+		 * @return boolean
3951
+		 */
3952
+		protected function _tag_close_H1($param)
3953
+		{
3954
+			if ($this->_isForOneLine) return false;
3955
+
3956
+			$this->_maxH+= $this->parsingCss->value['margin']['b'];
3957
+			$h = max($this->_maxH, $this->parsingCss->getLineHeight());
3958
+
3959
+			$this->parsingCss->load();
3960
+			$this->parsingCss->fontSet();
3961
+
3962
+			$this->_makeBreakLine($h);
3963
+			$this->_maxH = 0;
3964
+
3965
+			$this->_maxY = max($this->_maxY, $this->pdf->getY());
3966
+
3967
+			return true;
3968
+		}
3969
+
3970
+		/**
3971
+		 * tag : H2
3972
+		 * mode : CLOSE
3973
+		 *
3974
+		 * @param  array $param
3975
+		 * @return boolean
3976
+		 */
3977
+		protected function _tag_close_H2($param)
3978
+		{
3979
+			return $this->_tag_close_H1($param);
3980
+		}
3981
+
3982
+		/**
3983
+		 * tag : H3
3984
+		 * mode : CLOSE
3985
+		 *
3986
+		 * @param  array $param
3987
+		 * @return boolean
3988
+		 */
3989
+		protected function _tag_close_H3($param)
3990
+		{
3991
+			return $this->_tag_close_H1($param);
3992
+		}
3993
+
3994
+		/**
3995
+		 * tag : H4
3996
+		 * mode : CLOSE
3997
+		 *
3998
+		 * @param  array $param
3999
+		 * @return boolean
4000
+		 */
4001
+		protected function _tag_close_H4($param)
4002
+		{
4003
+			return $this->_tag_close_H1($param);
4004
+		}
4005
+
4006
+		/**
4007
+		 * tag : H5
4008
+		 * mode : CLOSE
4009
+		 *
4010
+		 * @param  array $param
4011
+		 * @return boolean
4012
+		 */
4013
+		protected function _tag_close_H5($param)
4014
+		{
4015
+			return $this->_tag_close_H1($param);
4016
+		}
4017
+
4018
+		/**
4019
+		 * tag : H6
4020
+		 * mode : CLOSE
4021
+		 *
4022
+		 * @param  array $param
4023
+		 * @return boolean
4024
+		 */
4025
+		protected function _tag_close_H6($param)
4026
+		{
4027
+			return $this->_tag_close_H1($param);
4028
+		}
4029
+
4030
+		/**
4031
+		 * tag : SPAN
4032
+		 * mode : OPEN
4033
+		 *
4034
+		 * @param  array $param
4035
+		 * @param  string $other
4036
+		 * @return boolean
4037
+		 */
4038
+		protected function _tag_open_SPAN($param, $other = 'span')
4039
+		{
4040
+			$this->parsingCss->save();
4041
+			$this->parsingCss->analyse($other, $param);
4042
+			$this->parsingCss->setPosition();
4043
+			$this->parsingCss->fontSet();
4044
+
4045
+			return true;
4046
+		}
4047
+
4048
+		/**
4049
+		 * tag : FONT
4050
+		 * mode : OPEN
4051
+		 *
4052
+		 * @param  array $param
4053
+		 * @return boolean
4054
+		 */
4055
+		protected function _tag_open_FONT($param)
4056
+		{
4057
+			return $this->_tag_open_SPAN($param, 'font');
4058
+		}
4059
+
4060
+		/**
4061
+		 * tag : LABEL
4062
+		 * mode : OPEN
4063
+		 *
4064
+		 * @param  array $param
4065
+		 * @return boolean
4066
+		 */
4067
+		protected function _tag_open_LABEL($param)
4068
+		{
4069
+			return $this->_tag_open_SPAN($param, 'label');
4070
+		}
4071
+
4072
+		/**
4073
+		 * tag : SPAN
4074
+		 * mode : CLOSE
4075
+		 *
4076
+		 * @param  array $param
4077
+		 * @return boolean
4078
+		 */
4079
+		protected function _tag_close_SPAN($param)
4080
+		{
4081
+			$this->parsingCss->restorePosition();
4082
+			$this->parsingCss->load();
4083
+			$this->parsingCss->fontSet();
4084
+
4085
+			return true;
4086
+		}
4087
+
4088
+		/**
4089
+		 * tag : FONT
4090
+		 * mode : CLOSE
4091
+		 *
4092
+		 * @param  array $param
4093
+		 * @return boolean
4094
+		 */
4095
+		protected function _tag_close_FONT($param)
4096
+		{
4097
+			return $this->_tag_close_SPAN($param);
4098
+		}
4099
+
4100
+		/**
4101
+		 * tag : LABEL
4102
+		 * mode : CLOSE
4103
+		 *
4104
+		 * @param  array $param
4105
+		 * @return boolean
4106
+		 */
4107
+		protected function _tag_close_LABEL($param)
4108
+		{
4109
+			return $this->_tag_close_SPAN($param);
4110
+		}
4111
+
4112
+		/**
4113
+		 * tag : P
4114
+		 * mode : OPEN
4115
+		 *
4116
+		 * @param    array $param
4117
+		 * @return boolean
4118
+		 */
4119
+		protected function _tag_open_P($param)
4120
+		{
4121
+			if ($this->_isForOneLine) return false;
4122
+
4123
+			if (!in_array($this->_previousCall, array('_tag_close_P', '_tag_close_UL'))) {
4124
+				if ($this->_maxH) $this->_tag_open_BR(array());
4125
+			}
4126
+
4127
+			$this->parsingCss->save();
4128
+			$this->parsingCss->analyse('p', $param);
4129
+			$this->parsingCss->setPosition();
4130
+			$this->parsingCss->fontSet();
4131
+
4132
+			 // cancel the effects of the setPosition
4133
+			$this->pdf->setXY($this->pdf->getX()-$this->parsingCss->value['margin']['l'], $this->pdf->getY()-$this->parsingCss->value['margin']['t']);
4134
+
4135
+			list($mL, $mR) = $this->_getMargins($this->pdf->getY());
4136
+			$mR = $this->pdf->getW()-$mR;
4137
+			$mL+= $this->parsingCss->value['margin']['l']+$this->parsingCss->value['padding']['l'];
4138
+			$mR+= $this->parsingCss->value['margin']['r']+$this->parsingCss->value['padding']['r'];
4139
+			$this->_saveMargin($mL, 0, $mR);
4140
+
4141
+			if ($this->parsingCss->value['text-indent']>0) {
4142
+				$y = $this->pdf->getY()+$this->parsingCss->value['margin']['t']+$this->parsingCss->value['padding']['t'];
4143
+				$this->_pageMarges[floor($y*100)] = array($mL+$this->parsingCss->value['text-indent'], $this->pdf->getW()-$mR);
4144
+				$y+= $this->parsingCss->getLineHeight()*0.1;
4145
+				$this->_pageMarges[floor($y*100)] = array($mL, $this->pdf->getW()-$mR);
4146
+			}
4147
+			$this->_makeBreakLine($this->parsingCss->value['margin']['t']+$this->parsingCss->value['padding']['t']);
4148
+			$this->_isInParagraph = array($mL, $mR);
4149
+			return true;
4150
+		}
4151
+
4152
+		/**
4153
+		 * tag : P
4154
+		 * mode : CLOSE
4155
+		 *
4156
+		 * @param  array $param
4157
+		 * @return boolean
4158
+		 */
4159
+		protected function _tag_close_P($param)
4160
+		{
4161
+			if ($this->_isForOneLine) return false;
4162
+
4163
+			if ($this->_maxH) $this->_tag_open_BR(array());
4164
+			$this->_isInParagraph = false;
4165
+			$this->_loadMargin();
4166
+			$h = $this->parsingCss->value['margin']['b']+$this->parsingCss->value['padding']['b'];
4167
+
4168
+			$this->parsingCss->load();
4169
+			$this->parsingCss->fontSet();
4170
+			$this->_makeBreakLine($h);
4171
+
4172
+			return true;
4173
+		}
4174
+
4175
+		/**
4176
+		 * tag : PRE
4177
+		 * mode : OPEN
4178
+		 *
4179
+		 * @param  array $param
4180
+		 * @param  string $other
4181
+		 * @return boolean
4182
+		 */
4183
+		protected function _tag_open_PRE($param, $other = 'pre')
4184
+		{
4185
+			if ($other=='pre' && $this->_maxH) $this->_tag_open_BR(array());
4186
+
4187
+			$this->parsingCss->save();
4188
+			$this->parsingCss->value['font-family'] = 'courier';
4189
+			$this->parsingCss->analyse($other, $param);
4190
+			$this->parsingCss->setPosition();
4191
+			$this->parsingCss->fontSet();
4192
+
4193
+			if ($other=='pre') return $this->_tag_open_DIV($param, $other);
4194
+
4195
+			return true;
4196
+		}
4197
+
4198
+		/**
4199
+		 * tag : CODE
4200
+		 * mode : OPEN
4201
+		 *
4202
+		 * @param  array $param
4203
+		 * @param  string $other
4204
+		 * @return boolean
4205
+		 */
4206
+		protected function _tag_open_CODE($param)
4207
+		{
4208
+			return $this->_tag_open_PRE($param, 'code');
4209
+		}
4210
+
4211
+		/**
4212
+		 * tag : PRE
4213
+		 * mode : CLOSE
4214
+		 *
4215
+		 * @param  array $param
4216
+		 * @param  string $other
4217
+		 * @return boolean
4218
+		 */
4219
+		protected function _tag_close_PRE($param, $other = 'pre')
4220
+		{
4221
+			if ($other=='pre') {
4222
+				if ($this->_isForOneLine) return false;
4223
+
4224
+				$this->_tag_close_DIV($param, $other);
4225
+				$this->_tag_open_BR(array());
4226
+			}
4227
+			$this->parsingCss->load();
4228
+			$this->parsingCss->fontSet();
4229
+
4230
+			return true;
4231
+		}
4232
+
4233
+		/**
4234
+		 * tag : CODE
4235
+		 * mode : CLOSE
4236
+		 *
4237
+		 * @param  array $param
4238
+		 * @return boolean
4239
+		 */
4240
+		protected function _tag_close_CODE($param)
4241
+		{
4242
+			return $this->_tag_close_PRE($param, 'code');
4243
+		}
4244
+
4245
+		/**
4246
+		 * tag : BIG
4247
+		 * mode : OPEN
4248
+		 *
4249
+		 * @param    array $param
4250
+		 * @return boolean
4251
+		 */
4252
+		protected function _tag_open_BIG($param)
4253
+		{
4254
+			$this->parsingCss->save();
4255
+			$this->parsingCss->value['mini-decal']-= $this->parsingCss->value['mini-size']*0.12;
4256
+			$this->parsingCss->value['mini-size'] *= 1.2;
4257
+			$this->parsingCss->analyse('big', $param);
4258
+			$this->parsingCss->setPosition();
4259
+			$this->parsingCss->fontSet();
4260
+			return true;
4261
+		}
4262
+
4263
+		/**
4264
+		 * tag : BIG
4265
+		 * mode : CLOSE
4266
+		 *
4267
+		 * @param    array $param
4268
+		 * @return boolean
4269
+		 */
4270
+		protected function _tag_close_BIG($param)
4271
+		{
4272
+			$this->parsingCss->load();
4273
+			$this->parsingCss->fontSet();
4274
+
4275
+			return true;
4276
+		}
4277
+
4278
+		/**
4279
+		 * tag : SMALL
4280
+		 * mode : OPEN
4281
+		 *
4282
+		 * @param    array $param
4283
+		 * @return boolean
4284
+		 */
4285
+		protected function _tag_open_SMALL($param)
4286
+		{
4287
+			$this->parsingCss->save();
4288
+			$this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.05;
4289
+			$this->parsingCss->value['mini-size'] *= 0.82;
4290
+			$this->parsingCss->analyse('small', $param);
4291
+			$this->parsingCss->setPosition();
4292
+			$this->parsingCss->fontSet();
4293
+			return true;
4294
+		}
4295
+
4296
+		/**
4297
+		 * tag : SMALL
4298
+		 * mode : CLOSE
4299
+		 *
4300
+		 * @param    array $param
4301
+		 * @return boolean
4302
+		 */
4303
+		protected function _tag_close_SMALL($param)
4304
+		{
4305
+			$this->parsingCss->load();
4306
+			$this->parsingCss->fontSet();
4307
+
4308
+			return true;
4309
+		}
4310
+
4311
+		/**
4312
+		 * tag : SUP
4313
+		 * mode : OPEN
4314
+		 *
4315
+		 * @param    array $param
4316
+		 * @return boolean
4317
+		 */
4318
+		protected function _tag_open_SUP($param)
4319
+		{
4320
+			$this->parsingCss->save();
4321
+			$this->parsingCss->value['mini-decal']-= $this->parsingCss->value['mini-size']*0.15;
4322
+			$this->parsingCss->value['mini-size'] *= 0.75;
4323
+			$this->parsingCss->analyse('sup', $param);
4324
+			$this->parsingCss->setPosition();
4325
+			$this->parsingCss->fontSet();
4326
+
4327
+			return true;
4328
+		}
4329
+
4330
+		/**
4331
+		 * tag : SUP
4332
+		 * mode : CLOSE
4333
+		 *
4334
+		 * @param    array $param
4335
+		 * @return boolean
4336
+		 */
4337
+		protected function _tag_close_SUP($param)
4338
+		{
4339
+			$this->parsingCss->load();
4340
+			$this->parsingCss->fontSet();
4341
+
4342
+			return true;
4343
+		}
4344
+
4345
+		/**
4346
+		 * tag : SUB
4347
+		 * mode : OPEN
4348
+		 *
4349
+		 * @param    array $param
4350
+		 * @return boolean
4351
+		 */
4352
+		protected function _tag_open_SUB($param)
4353
+		{
4354
+			$this->parsingCss->save();
4355
+			$this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.15;
4356
+			$this->parsingCss->value['mini-size'] *= 0.75;
4357
+			$this->parsingCss->analyse('sub', $param);
4358
+			$this->parsingCss->setPosition();
4359
+			$this->parsingCss->fontSet();
4360
+			return true;
4361
+		}
4362
+
4363
+		/**
4364
+		 * tag : SUB
4365
+		 * mode : CLOSE
4366
+		 *
4367
+		 * @param    array $param
4368
+		 * @return boolean
4369
+		 */
4370
+		protected function _tag_close_SUB($param)
4371
+		{
4372
+			$this->parsingCss->load();
4373
+			$this->parsingCss->fontSet();
4374
+
4375
+			return true;
4376
+		}
4377
+
4378
+		/**
4379
+		 * tag : UL
4380
+		 * mode : OPEN
4381
+		 *
4382
+		 * @param  array $param
4383
+		 * @param  string $other
4384
+		 * @return boolean
4385
+		 */
4386
+		protected function _tag_open_UL($param, $other = 'ul')
4387
+		{
4388
+			if ($this->_isForOneLine) return false;
4389
+
4390
+			if (!in_array($this->_previousCall, array('_tag_close_P', '_tag_close_UL'))) {
4391
+				if ($this->_maxH) $this->_tag_open_BR(array());
4392
+				if (!count($this->_defList)) $this->_tag_open_BR(array());
4393
+			}
4394
+
4395
+			if (!isset($param['style']['width'])) $param['allwidth'] = true;
4396
+			$param['cellspacing'] = 0;
4397
+
4398
+			// a list is like a table
4399
+			$this->_tag_open_TABLE($param, $other);
4400
+
4401
+			// add a level of list
4402
+			$this->_listeAddLevel($other, $this->parsingCss->value['list-style-type'], $this->parsingCss->value['list-style-image']);
4403
+
4404
+			return true;
4405
+		}
4406
+
4407
+		/**
4408
+		 * tag : OL
4409
+		 * mode : OPEN
4410
+		 *
4411
+		 * @param  array $param
4412
+		 * @return boolean
4413
+		 */
4414
+		protected function _tag_open_OL($param)
4415
+		{
4416
+			return $this->_tag_open_UL($param, 'ol');
4417
+		}
4418
+
4419
+		/**
4420
+		 * tag : UL
4421
+		 * mode : CLOSE
4422
+		 *
4423
+		 * @param  array $param
4424
+		 * @return boolean
4425
+		 */
4426
+		protected function _tag_close_UL($param)
4427
+		{
4428
+			if ($this->_isForOneLine) return false;
4429
+
4430
+			$this->_tag_close_TABLE($param);
4431
+
4432
+			$this->_listeDelLevel();
4433
+
4434
+			if (!$this->_subPart) {
4435
+				if (!count($this->_defList)) $this->_tag_open_BR(array());
4436
+			}
4437
+
4438
+			return true;
4439
+		}
4440
+
4441
+		/**
4442
+		 * tag : OL
4443
+		 * mode : CLOSE
4444
+		 *
4445
+		 * @param  array $param
4446
+		 * @return boolean
4447
+		 */
4448
+		protected function _tag_close_OL($param)
4449
+		{
4450
+			return $this->_tag_close_UL($param);
4451
+		}
4452
+
4453
+		/**
4454
+		 * tag : LI
4455
+		 * mode : OPEN
4456
+		 *
4457
+		 * @param  array $param
4458
+		 * @return boolean
4459
+		 */
4460
+		protected function _tag_open_LI($param)
4461
+		{
4462
+			if ($this->_isForOneLine) return false;
4463
+
4464
+			$this->_listeAddLi();
4465
+
4466
+			if (!isset($param['style']['width'])) $param['style']['width'] = '100%';
4467
+
4468
+			$paramPUCE = $param;
4469
+
4470
+			$inf = $this->_listeGetLi();
4471
+			if ($inf[0]) {
4472
+				$paramPUCE['style']['font-family']     = $inf[0];
4473
+				$paramPUCE['style']['text-align']      = 'li_right';
4474
+				$paramPUCE['style']['vertical-align']  = 'top';
4475
+				$paramPUCE['style']['width']           = $this->_listeGetWidth();
4476
+				$paramPUCE['style']['padding-right']   = $this->_listeGetPadding();
4477
+				$paramPUCE['txt'] = $inf[2];
4478
+			} else {
4479
+				$paramPUCE['style']['text-align']      = 'li_right';
4480
+				$paramPUCE['style']['vertical-align']  = 'top';
4481
+				$paramPUCE['style']['width']           = $this->_listeGetWidth();
4482
+				$paramPUCE['style']['padding-right']   = $this->_listeGetPadding();
4483
+				$paramPUCE['src'] = $inf[2];
4484
+				$paramPUCE['sub_li'] = true;
4485
+			}
4486
+
4487
+			$this->_tag_open_TR($param, 'li');
4488
+
4489
+			$this->parsingCss->save();
4490
+
4491
+			// if small LI
4492
+			if ($inf[1]) {
4493
+				$this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.045;
4494
+				$this->parsingCss->value['mini-size'] *= 0.75;
4495
+			}
4496
+
4497
+			// if we are in a sub html => prepare. Else : display
4498
+			if ($this->_subPart) {
4499
+				// TD for the puce
4500
+				$tmpPos = $this->_tempPos;
4501
+				$tmpLst1 = $this->parsingHtml->code[$tmpPos+1];
4502
+				$tmpLst2 = $this->parsingHtml->code[$tmpPos+2];
4503
+				$this->parsingHtml->code[$tmpPos+1] = array();
4504
+				$this->parsingHtml->code[$tmpPos+1]['name']    = (isset($paramPUCE['src'])) ? 'img' : 'write';
4505
+				$this->parsingHtml->code[$tmpPos+1]['param']    = $paramPUCE; unset($this->parsingHtml->code[$tmpPos+1]['param']['style']['width']);
4506
+				$this->parsingHtml->code[$tmpPos+1]['close']    = 0;
4507
+				$this->parsingHtml->code[$tmpPos+2] = array();
4508
+				$this->parsingHtml->code[$tmpPos+2]['name']    = 'li';
4509
+				$this->parsingHtml->code[$tmpPos+2]['param']    = $paramPUCE;
4510
+				$this->parsingHtml->code[$tmpPos+2]['close']    = 1;
4511
+				$this->_tag_open_TD($paramPUCE, 'li_sub');
4512
+				$this->_tag_close_TD($param);
4513
+				$this->_tempPos = $tmpPos;
4514
+				$this->parsingHtml->code[$tmpPos+1] = $tmpLst1;
4515
+				$this->parsingHtml->code[$tmpPos+2] = $tmpLst2;
4516
+			} else {
4517
+				// TD for the puce
4518
+				$this->_tag_open_TD($paramPUCE, 'li_sub');
4519
+				unset($paramPUCE['style']['width']);
4520
+				if (isset($paramPUCE['src']))    $this->_tag_open_IMG($paramPUCE);
4521
+				else                            $this->_tag_open_WRITE($paramPUCE);
4522
+				$this->_tag_close_TD($paramPUCE);
4523
+			}
4524
+			$this->parsingCss->load();
4525
+
4526
+
4527
+			// TD for the content
4528
+			$this->_tag_open_TD($param, 'li');
4529
+
4530
+			return true;
4531
+		}
4532
+
4533
+		/**
4534
+		 * tag : LI
4535
+		 * mode : CLOSE
4536
+		 *
4537
+		 * @param  array $param
4538
+		 * @return boolean
4539
+		 */
4540
+		protected function _tag_close_LI($param)
4541
+		{
4542
+			if ($this->_isForOneLine) return false;
4543
+
4544
+			$this->_tag_close_TD($param);
4545
+
4546
+			$this->_tag_close_TR($param);
4547
+
4548
+			return true;
4549
+		}
4550
+
4551
+		/**
4552
+		 * tag : TBODY
4553
+		 * mode : OPEN
4554
+		 *
4555
+		 * @param  array $param
4556
+		 * @return boolean
4557
+		 */
4558
+		protected function _tag_open_TBODY($param)
4559
+		{
4560
+			if ($this->_isForOneLine) return false;
4561
+
4562
+			$this->parsingCss->save();
4563
+			$this->parsingCss->analyse('tbody', $param);
4564
+			$this->parsingCss->setPosition();
4565
+			$this->parsingCss->fontSet();
4566
+
4567
+			return true;
4568
+		}
4569
+
4570
+		/**
4571
+		 * tag : TBODY
4572
+		 * mode : CLOSE
4573
+		 *
4574
+		 * @param  array $param
4575
+		 * @return boolean
4576
+		 */
4577
+		protected function _tag_close_TBODY($param)
4578
+		{
4579
+			if ($this->_isForOneLine) return false;
4580
+
4581
+			$this->parsingCss->load();
4582
+			$this->parsingCss->fontSet();
4583
+
4584
+			return true;
4585
+		}
4586
+
4587
+		/**
4588
+		 * tag : THEAD
4589
+		 * mode : OPEN
4590
+		 *
4591
+		 * @param  array $param
4592
+		 * @return boolean
4593
+		 */
4594
+		protected function _tag_open_THEAD($param)
4595
+		{
4596
+			if ($this->_isForOneLine) return false;
4597
+
4598
+			$this->parsingCss->save();
4599
+			$this->parsingCss->analyse('thead', $param);
4600
+			$this->parsingCss->setPosition();
4601
+			$this->parsingCss->fontSet();
4602
+
4603
+			// if we are in a sub part, save the number of the first TR in the thead
4604
+			if ($this->_subPart) {
4605
+				HTML2PDF::$_tables[$param['num']]['thead']['tr'][0] = HTML2PDF::$_tables[$param['num']]['tr_curr'];
4606
+				HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();
4607
+				for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4608
+					$action = $this->parsingHtml->code[$pos];
4609
+					if (strtolower($action['name'])=='thead') $action['name'] = 'thead_sub';
4610
+					HTML2PDF::$_tables[$param['num']]['thead']['code'][] = $action;
4611
+					if (strtolower($action['name'])=='thead_sub' && $action['close']) break;
4612
+				}
4613
+			} else {
4614
+				$level = $this->parsingHtml->getLevel($this->_parsePos);
4615
+				$this->_parsePos+= count($level);
4616
+				HTML2PDF::$_tables[$param['num']]['tr_curr']+= count(HTML2PDF::$_tables[$param['num']]['thead']['tr']);
4617
+			}
4618
+
4619
+			return true;
4620
+		}
4621
+
4622
+		/**
4623
+		 * tag : THEAD
4624
+		 * mode : CLOSE
4625
+		 *
4626
+		 * @param  array $param
4627
+		 * @return boolean
4628
+		 */
4629
+		protected function _tag_close_THEAD($param)
4630
+		{
4631
+			if ($this->_isForOneLine) return false;
4632
+
4633
+			$this->parsingCss->load();
4634
+			$this->parsingCss->fontSet();
4635
+
4636
+			// if we are in a sub HTM, construct the list of the TR in the thead
4637
+			if ($this->_subPart) {
4638
+				$min = HTML2PDF::$_tables[$param['num']]['thead']['tr'][0];
4639
+				$max = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
4640
+				HTML2PDF::$_tables[$param['num']]['thead']['tr'] = range($min, $max);
4641
+			}
4642
+
4643
+			return true;
4644
+		}
4645
+
4646
+		/**
4647
+		 * tag : TFOOT
4648
+		 * mode : OPEN
4649
+		 *
4650
+		 * @param  array $param
4651
+		 * @return boolean
4652
+		 */
4653
+		protected function _tag_open_TFOOT($param)
4654
+		{
4655
+			if ($this->_isForOneLine) return false;
4656
+
4657
+			$this->parsingCss->save();
4658
+			$this->parsingCss->analyse('tfoot', $param);
4659
+			$this->parsingCss->setPosition();
4660
+			$this->parsingCss->fontSet();
4661
+
4662
+			// if we are in a sub part, save the number of the first TR in the tfoot
4663
+			if ($this->_subPart) {
4664
+				HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0] = HTML2PDF::$_tables[$param['num']]['tr_curr'];
4665
+				HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();
4666
+				for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4667
+					$action = $this->parsingHtml->code[$pos];
4668
+					if (strtolower($action['name'])=='tfoot') $action['name'] = 'tfoot_sub';
4669
+					HTML2PDF::$_tables[$param['num']]['tfoot']['code'][] = $action;
4670
+					if (strtolower($action['name'])=='tfoot_sub' && $action['close']) break;
4671
+				}
4672
+			} else {
4673
+				$level = $this->parsingHtml->getLevel($this->_parsePos);
4674
+				$this->_parsePos+= count($level);
4675
+				HTML2PDF::$_tables[$param['num']]['tr_curr']+= count(HTML2PDF::$_tables[$param['num']]['tfoot']['tr']);
4676
+			}
4677
+
4678
+			return true;
4679
+		}
4680
+
4681
+		/**
4682
+		 * tag : TFOOT
4683
+		 * mode : CLOSE
4684
+		 *
4685
+		 * @param  array $param
4686
+		 * @return boolean
4687
+		 */
4688
+		protected function _tag_close_TFOOT($param)
4689
+		{
4690
+			if ($this->_isForOneLine) return false;
4691
+
4692
+			$this->parsingCss->load();
4693
+			$this->parsingCss->fontSet();
4694
+
4695
+			// if we are in a sub HTM, construct the list of the TR in the tfoot
4696
+			if ($this->_subPart) {
4697
+				$min = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
4698
+				$max = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
4699
+				HTML2PDF::$_tables[$param['num']]['tfoot']['tr'] = range($min, $max);
4700
+			}
4701
+
4702
+			return true;
4703
+		}
4704
+
4705
+		/**
4706
+		 * It is not a real TAG, does not use it !
4707
+		 *
4708
+		 * @param  array $param
4709
+		 * @return boolean
4710
+		 */
4711
+		protected function _tag_open_THEAD_SUB($param)
4712
+		{
4713
+			if ($this->_isForOneLine) return false;
4714
+
4715
+			$this->parsingCss->save();
4716
+			$this->parsingCss->analyse('thead', $param);
4717
+			$this->parsingCss->setPosition();
4718
+			$this->parsingCss->fontSet();
4719
+
4720
+			return true;
4721
+		}
4722
+
4723
+		/**
4724
+		 * It is not a real TAG, does not use it !
4725
+		 *
4726
+		 * @param  array $param
4727
+		 * @return boolean
4728
+		 */
4729
+		protected function _tag_close_THEAD_SUB($param)
4730
+		{
4731
+			if ($this->_isForOneLine) return false;
4732
+
4733
+			$this->parsingCss->load();
4734
+			$this->parsingCss->fontSet();
4735
+
4736
+			return true;
4737
+		}
4738
+
4739
+		/**
4740
+		 * It is not a real TAG, does not use it !
4741
+		 *
4742
+		 * @param    array $param
4743
+		 * @return boolean
4744
+		 */
4745
+		protected function _tag_open_TFOOT_SUB($param)
4746
+		{
4747
+			if ($this->_isForOneLine) return false;
4748
+
4749
+			$this->parsingCss->save();
4750
+			$this->parsingCss->analyse('tfoot', $param);
4751
+			$this->parsingCss->setPosition();
4752
+			$this->parsingCss->fontSet();
4753
+
4754
+			return true;
4755
+		}
4756
+
4757
+		/**
4758
+		 * It is not a real TAG, does not use it !
4759
+		 *
4760
+		 * @param  array $param
4761
+		 * @return boolean
4762
+		 */
4763
+		protected function _tag_close_TFOOT_SUB($param)
4764
+		{
4765
+			if ($this->_isForOneLine) return false;
4766
+
4767
+			$this->parsingCss->load();
4768
+			$this->parsingCss->fontSet();
4769
+
4770
+			return true;
4771
+		}
4772
+
4773
+		/**
4774
+		 * tag : FORM
4775
+		 * mode : OPEN
4776
+		 *
4777
+		 * @param  array $param
4778
+		 * @return boolean
4779
+		 */
4780
+		protected function _tag_open_FORM($param)
4781
+		{
4782
+			$this->parsingCss->save();
4783
+			$this->parsingCss->analyse('form', $param);
4784
+			$this->parsingCss->setPosition();
4785
+			$this->parsingCss->fontSet();
4786
+
4787
+			$this->pdf->setFormDefaultProp(
4788
+				array(
4789
+					'lineWidth'=>1,
4790
+					'borderStyle'=>'solid',
4791
+					'fillColor'=>array(220, 220, 255),
4792
+					'strokeColor'=>array(128, 128, 200)
4793
+				)
4794
+			);
4795
+
4796
+			$this->_isInForm = isset($param['action']) ? $param['action'] : '';
4797
+
4798
+			return true;
4799
+		}
4800
+
4801
+		/**
4802
+		 * tag : FORM
4803
+		 * mode : CLOSE
4804
+		 *
4805
+		 * @param  array $param
4806
+		 * @return boolean
4807
+		 */
4808
+		protected function _tag_close_FORM($param)
4809
+		{
4810
+			$this->_isInForm = false;
4811
+			$this->parsingCss->load();
4812
+			$this->parsingCss->fontSet();
4813
+
4814
+			return true;
4815
+		}
4816
+
4817
+		/**
4818
+		 * tag : TABLE
4819
+		 * mode : OPEN
4820
+		 *
4821
+		 * @param  array $param
4822
+		 * @return boolean
4823
+		 */
4824
+		protected function _tag_open_TABLE($param, $other = 'table')
4825
+		{
4826
+			if ($this->_maxH) {
4827
+				if ($this->_isForOneLine) return false;
4828
+				$this->_tag_open_BR(array());
4829
+			}
4830
+
4831
+			if ($this->_isForOneLine) {
4832
+				$this->_maxX = $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
4833
+				return false;
4834
+			}
4835
+
4836
+			$this->_maxH = 0;
4837
+
4838
+			$alignObject = isset($param['align']) ? strtolower($param['align']) : 'left';
4839
+			if (isset($param['align'])) unset($param['align']);
4840
+			if (!in_array($alignObject, array('left', 'center', 'right'))) $alignObject = 'left';
4841
+
4842
+			$this->parsingCss->save();
4843
+			$this->parsingCss->analyse($other, $param);
4844
+			$this->parsingCss->setPosition();
4845
+			$this->parsingCss->fontSet();
4846
+
4847
+			if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
4848
+
4849
+			// collapse table ?
4850
+			$collapse = false;
4851
+			if ($other=='table') {
4852
+				$collapse = isset($this->parsingCss->value['border']['collapse']) ? $this->parsingCss->value['border']['collapse'] : false;
4853
+			}
4854
+
4855
+			// if collapse => no borders for the table, only for TD
4856
+			if ($collapse) {
4857
+				$param['style']['border'] = 'none';
4858
+				$param['cellspacing'] = 0;
4859
+				$none = $this->parsingCss->readBorder('none');
4860
+				$this->parsingCss->value['border']['t'] = $none;
4861
+				$this->parsingCss->value['border']['r'] = $none;
4862
+				$this->parsingCss->value['border']['b'] = $none;
4863
+				$this->parsingCss->value['border']['l'] = $none;
4864
+			}
4865
+
4866
+			// if we are in a SUB html => prepare the properties of the table
4867
+			if ($this->_subPart) {
4868
+				if ($this->_debugActif) $this->_DEBUG_add('Table n'.$param['num'], true);
4869
+				HTML2PDF::$_tables[$param['num']] = array();
4870
+				HTML2PDF::$_tables[$param['num']]['border']          = isset($param['border']) ? $this->parsingCss->readBorder($param['border']) : null;
4871
+				HTML2PDF::$_tables[$param['num']]['cellpadding']     = $this->parsingCss->ConvertToMM(isset($param['cellpadding']) ? $param['cellpadding'] : '1px');
4872
+				HTML2PDF::$_tables[$param['num']]['cellspacing']     = $this->parsingCss->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px');
4873
+				HTML2PDF::$_tables[$param['num']]['cases']           = array();          // properties of each TR/TD
4874
+				HTML2PDF::$_tables[$param['num']]['corr']            = array();          // link between TR/TD and colspan/rowspan
4875
+				HTML2PDF::$_tables[$param['num']]['corr_x']          = 0;                // position in 'cases'
4876
+				HTML2PDF::$_tables[$param['num']]['corr_y']          = 0;                // position in 'cases'
4877
+				HTML2PDF::$_tables[$param['num']]['td_curr']         = 0;                // current column
4878
+				HTML2PDF::$_tables[$param['num']]['tr_curr']         = 0;                // current row
4879
+				HTML2PDF::$_tables[$param['num']]['curr_x']          = $this->pdf->getX();
4880
+				HTML2PDF::$_tables[$param['num']]['curr_y']          = $this->pdf->getY();
4881
+				HTML2PDF::$_tables[$param['num']]['width']           = 0;                // global width
4882
+				HTML2PDF::$_tables[$param['num']]['height']          = 0;                // global height
4883
+				HTML2PDF::$_tables[$param['num']]['align']           = $alignObject;
4884
+				HTML2PDF::$_tables[$param['num']]['marge']           = array();
4885
+				HTML2PDF::$_tables[$param['num']]['marge']['t']      = $this->parsingCss->value['padding']['t']+$this->parsingCss->value['border']['t']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4886
+				HTML2PDF::$_tables[$param['num']]['marge']['r']      = $this->parsingCss->value['padding']['r']+$this->parsingCss->value['border']['r']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4887
+				HTML2PDF::$_tables[$param['num']]['marge']['b']      = $this->parsingCss->value['padding']['b']+$this->parsingCss->value['border']['b']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4888
+				HTML2PDF::$_tables[$param['num']]['marge']['l']      = $this->parsingCss->value['padding']['l']+$this->parsingCss->value['border']['l']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4889
+				HTML2PDF::$_tables[$param['num']]['page']            = 0;                // number of pages
4890
+				HTML2PDF::$_tables[$param['num']]['new_page']        = true;             // flag : new page for the current TR
4891
+				HTML2PDF::$_tables[$param['num']]['style_value']     = null;             // CSS style of the table
4892
+				HTML2PDF::$_tables[$param['num']]['thead']           = array();          // properties on the thead
4893
+				HTML2PDF::$_tables[$param['num']]['tfoot']           = array();          // properties on the tfoot
4894
+				HTML2PDF::$_tables[$param['num']]['thead']['tr']     = array();          // list of the TRs in the thead
4895
+				HTML2PDF::$_tables[$param['num']]['tfoot']['tr']     = array();          // list of the TRs in the tfoot
4896
+				HTML2PDF::$_tables[$param['num']]['thead']['height']    = 0;             // thead height
4897
+				HTML2PDF::$_tables[$param['num']]['tfoot']['height']    = 0;             // tfoot height
4898
+				HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();            // HTML content of the thead
4899
+				HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();            // HTML content of the tfoot
4900
+				HTML2PDF::$_tables[$param['num']]['cols']        = array();              // properties of the COLs
4901
+
4902
+				$this->_saveMargin($this->pdf->getlMargin(), $this->pdf->gettMargin(), $this->pdf->getrMargin());
4903
+
4904
+				$this->parsingCss->value['width']-= HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4905
+			} else {
4906
+				// we start from the first page and the first page of the table
4907
+				HTML2PDF::$_tables[$param['num']]['page'] = 0;
4908
+				HTML2PDF::$_tables[$param['num']]['td_curr']    = 0;
4909
+				HTML2PDF::$_tables[$param['num']]['tr_curr']    = 0;
4910
+				HTML2PDF::$_tables[$param['num']]['td_x']        = HTML2PDF::$_tables[$param['num']]['marge']['l']+HTML2PDF::$_tables[$param['num']]['curr_x'];
4911
+				HTML2PDF::$_tables[$param['num']]['td_y']        = HTML2PDF::$_tables[$param['num']]['marge']['t']+HTML2PDF::$_tables[$param['num']]['curr_y'];
4912
+
4913
+				// draw the borders/background of the first page/part of the table
4914
+				$this->_drawRectangle(
4915
+					HTML2PDF::$_tables[$param['num']]['curr_x'],
4916
+					HTML2PDF::$_tables[$param['num']]['curr_y'],
4917
+					HTML2PDF::$_tables[$param['num']]['width'],
4918
+					isset(HTML2PDF::$_tables[$param['num']]['height'][0]) ? HTML2PDF::$_tables[$param['num']]['height'][0] : null,
4919
+					$this->parsingCss->value['border'],
4920
+					$this->parsingCss->value['padding'],
4921
+					0,
4922
+					$this->parsingCss->value['background']
4923
+				);
4924
+
4925
+				HTML2PDF::$_tables[$param['num']]['style_value'] = $this->parsingCss->value;
4926
+			}
4927
+
4928
+			return true;
4929
+		}
4930
+
4931
+		/**
4932
+		 * tag : TABLE
4933
+		 * mode : CLOSE
4934
+		 *
4935
+		 * @param  array $param
4936
+		 * @return boolean
4937
+		 */
4938
+		protected function _tag_close_TABLE($param)
4939
+		{
4940
+			if ($this->_isForOneLine) return false;
4941
+
4942
+			$this->_maxH = 0;
4943
+
4944
+			// if we are in a sub HTML
4945
+			if ($this->_subPart) {
4946
+				// calculate the size of each case
4947
+				$this->_calculateTableCellSize(HTML2PDF::$_tables[$param['num']]['cases'], HTML2PDF::$_tables[$param['num']]['corr']);
4948
+
4949
+				// calculate the height of the thead and the tfoot
4950
+				$lst = array('thead', 'tfoot');
4951
+				foreach ($lst as $mode) {
4952
+					HTML2PDF::$_tables[$param['num']][$mode]['height'] = 0;
4953
+					foreach (HTML2PDF::$_tables[$param['num']][$mode]['tr'] as $tr) {
4954
+						// hauteur de la ligne tr
4955
+						$h = 0;
4956
+						for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$tr]); $i++)
4957
+							if (HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['rowspan']==1)
4958
+								$h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['h']);
4959
+						HTML2PDF::$_tables[$param['num']][$mode]['height']+= $h;
4960
+					}
4961
+				}
4962
+
4963
+				// calculate the width of the table
4964
+				HTML2PDF::$_tables[$param['num']]['width'] = HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4965
+				if (isset(HTML2PDF::$_tables[$param['num']]['cases'][0])) {
4966
+					foreach (HTML2PDF::$_tables[$param['num']]['cases'][0] as $case) {
4967
+						HTML2PDF::$_tables[$param['num']]['width']+= $case['w'];
4968
+					}
4969
+				}
4970
+
4971
+				// X position of the table
4972
+				$old = $this->parsingCss->getOldValues();
4973
+				$parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
4974
+				$x = HTML2PDF::$_tables[$param['num']]['curr_x'];
4975
+				$w = HTML2PDF::$_tables[$param['num']]['width'];
4976
+				if ($parentWidth>$w) {
4977
+					if (HTML2PDF::$_tables[$param['num']]['align']=='center')
4978
+						$x = $x + ($parentWidth-$w)*0.5;
4979
+					else if (HTML2PDF::$_tables[$param['num']]['align']=='right')
4980
+						$x = $x + $parentWidth-$w;
4981
+
4982
+					HTML2PDF::$_tables[$param['num']]['curr_x'] = $x;
4983
+				}
4984
+
4985
+				// calculate the height of the table
4986
+				HTML2PDF::$_tables[$param['num']]['height'] = array();
4987
+
4988
+				// minimum of the height because of margins, and of the thead and tfoot height
4989
+				$h0 = HTML2PDF::$_tables[$param['num']]['marge']['t'] + HTML2PDF::$_tables[$param['num']]['marge']['b'];
4990
+				$h0+= HTML2PDF::$_tables[$param['num']]['thead']['height'] + HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
4991
+
4992
+				// max height of the page
4993
+				$max = $this->pdf->getH() - $this->pdf->getbMargin();
4994
+
4995
+				// current position on the page
4996
+				$y = HTML2PDF::$_tables[$param['num']]['curr_y'];
4997
+				$height = $h0;
4998
+
4999
+				// we get the height of each line
5000
+				for ($k=0; $k<count(HTML2PDF::$_tables[$param['num']]['cases']); $k++) {
5001
+
5002
+					// if it is a TR of the thead or of the tfoot => skip
5003
+					if (in_array($k, HTML2PDF::$_tables[$param['num']]['thead']['tr'])) continue;
5004
+					if (in_array($k, HTML2PDF::$_tables[$param['num']]['tfoot']['tr'])) continue;
5005
+
5006
+					// height of the line
5007
+					$th = 0;
5008
+					$h = 0;
5009
+					for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$k]); $i++) {
5010
+						$h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5011
+
5012
+						if (HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['rowspan']==1)
5013
+							$th = max($th, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5014
+					}
5015
+
5016
+					// if the row does not fit on the page => new page
5017
+					if ($y+$h+$height>$max) {
5018
+						if ($height==$h0) $height = null;
5019
+						HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5020
+						$height = $h0;
5021
+						$y = $this->_margeTop;
5022
+					}
5023
+					$height+= $th;
5024
+				}
5025
+
5026
+				// if ther is a height at the end, add it
5027
+				if ($height!=$h0 || $k==0) HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5028
+			} else {
5029
+				// if we have tfoor, draw it
5030
+				if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
5031
+					$tmpTR = HTML2PDF::$_tables[$param['num']]['tr_curr'];
5032
+					$tmpTD = HTML2PDF::$_tables[$param['num']]['td_curr'];
5033
+					$oldParsePos = $this->_parsePos;
5034
+					$oldParseCode = $this->parsingHtml->code;
5035
+
5036
+					HTML2PDF::$_tables[$param['num']]['tr_curr'] = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
5037
+					HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5038
+					$this->_parsePos = 0;
5039
+					$this->parsingHtml->code = HTML2PDF::$_tables[$param['num']]['tfoot']['code'];
5040
+					$this->_isInTfoot = true;
5041
+					$this->_makeHTMLcode();
5042
+					$this->_isInTfoot = false;
5043
+
5044
+					$this->_parsePos =     $oldParsePos;
5045
+					$this->parsingHtml->code = $oldParseCode;
5046
+					HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5047
+					HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
5048
+				}
5049
+
5050
+				// get the positions of the end of the table
5051
+				$x = HTML2PDF::$_tables[$param['num']]['curr_x'] + HTML2PDF::$_tables[$param['num']]['width'];
5052
+				if (count(HTML2PDF::$_tables[$param['num']]['height'])>1)
5053
+					$y = $this->_margeTop+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5054
+				else if (count(HTML2PDF::$_tables[$param['num']]['height'])==1)
5055
+					$y = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5056
+				else
5057
+					$y = HTML2PDF::$_tables[$param['num']]['curr_y'];
5058
+
5059
+				$this->_maxX = max($this->_maxX, $x);
5060
+				$this->_maxY = max($this->_maxY, $y);
5061
+
5062
+				$this->pdf->setXY($this->pdf->getlMargin(), $y);
5063
+
5064
+				$this->_loadMargin();
5065
+
5066
+				if ($this->_debugActif) $this->_DEBUG_add('Table '.$param['num'], false);
5067
+			}
5068
+
5069
+			$this->parsingCss->load();
5070
+			$this->parsingCss->fontSet();
5071
+
5072
+
5073
+			return true;
5074
+		}
5075
+
5076
+		/**
5077
+		 * tag : COL
5078
+		 * mode : OPEN
5079
+		 *
5080
+		 * @param  array $param
5081
+		 * @return boolean
5082
+		 */
5083
+		protected function _tag_open_COL($param)
5084
+		{
5085
+			$span = isset($param['span']) ? $param['span'] : 1;
5086
+			for ($k=0; $k<$span; $k++)
5087
+				HTML2PDF::$_tables[$param['num']]['cols'][] = $param;
5088
+		}
5089
+
5090
+		/**
5091
+		 * tag : COL
5092
+		 * mode : CLOSE
5093
+		 *
5094
+		 * @param  array $param
5095
+		 * @return boolean
5096
+		 */
5097
+		protected function _tag_close_COL($param)
5098
+		{
5099
+			// there is nothing to do here
5100
+
5101
+			return true;
5102
+		}
5103
+
5104
+		/**
5105
+		 * tag : TR
5106
+		 * mode : OPEN
5107
+		 *
5108
+		 * @param  array $param
5109
+		 * @return boolean
5110
+		 */
5111
+		protected function _tag_open_TR($param, $other = 'tr')
5112
+		{
5113
+			if ($this->_isForOneLine) return false;
5114
+
5115
+			$this->_maxH = 0;
5116
+
5117
+			$this->parsingCss->save();
5118
+			$this->parsingCss->analyse($other, $param);
5119
+			$this->parsingCss->setPosition();
5120
+			$this->parsingCss->fontSet();
5121
+
5122
+			// position in the table
5123
+			HTML2PDF::$_tables[$param['num']]['tr_curr']++;
5124
+			HTML2PDF::$_tables[$param['num']]['td_curr']= 0;
5125
+
5126
+			// if we are not in a sub html
5127
+			if (!$this->_subPart) {
5128
+
5129
+				// Y after the row
5130
+				$ty=null;
5131
+				for ($ii=0; $ii<count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1]); $ii++) {
5132
+					$ty = max($ty, HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['h']);
5133
+				}
5134
+
5135
+				// height of the tfoot
5136
+				$hfoot = HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
5137
+
5138
+				// if the line does not fit on the page => new page
5139
+				if (!$this->_isInTfoot && HTML2PDF::$_tables[$param['num']]['td_y'] + HTML2PDF::$_tables[$param['num']]['marge']['b'] + $ty +$hfoot> $this->pdf->getH() - $this->pdf->getbMargin()) {
5140
+
5141
+					// fi ther is a tfoot => draw it
5142
+					if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
5143
+						$tmpTR = HTML2PDF::$_tables[$param['num']]['tr_curr'];
5144
+						$tmpTD = HTML2PDF::$_tables[$param['num']]['td_curr'];
5145
+						$oldParsePos = $this->_parsePos;
5146
+						$oldParseCode = $this->parsingHtml->code;
5147
+
5148
+						HTML2PDF::$_tables[$param['num']]['tr_curr'] = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
5149
+						HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5150
+						$this->_parsePos = 0;
5151
+						$this->parsingHtml->code = HTML2PDF::$_tables[$param['num']]['tfoot']['code'];
5152
+						$this->_isInTfoot = true;
5153
+						$this->_makeHTMLcode();
5154
+						$this->_isInTfoot = false;
5155
+
5156
+						$this->_parsePos =     $oldParsePos;
5157
+						$this->parsingHtml->code = $oldParseCode;
5158
+						HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5159
+						HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
5160
+					}
5161
+
5162
+					// new page
5163
+					HTML2PDF::$_tables[$param['num']]['new_page'] = true;
5164
+					$this->_setNewPage();
5165
+
5166
+					// new position
5167
+					HTML2PDF::$_tables[$param['num']]['page']++;
5168
+					HTML2PDF::$_tables[$param['num']]['curr_y'] = $this->pdf->getY();
5169
+					HTML2PDF::$_tables[$param['num']]['td_y'] = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['marge']['t'];
5170
+
5171
+					// if we have the height of the tbale on the page => draw borders and background
5172
+					if (isset(HTML2PDF::$_tables[$param['num']]['height'][HTML2PDF::$_tables[$param['num']]['page']])) {
5173
+						$old = $this->parsingCss->value;
5174
+						$this->parsingCss->value = HTML2PDF::$_tables[$param['num']]['style_value'];
5175
+
5176
+						$this->_drawRectangle(
5177
+							HTML2PDF::$_tables[$param['num']]['curr_x'],
5178
+							HTML2PDF::$_tables[$param['num']]['curr_y'],
5179
+							HTML2PDF::$_tables[$param['num']]['width'],
5180
+							HTML2PDF::$_tables[$param['num']]['height'][HTML2PDF::$_tables[$param['num']]['page']],
5181
+							$this->parsingCss->value['border'],
5182
+							$this->parsingCss->value['padding'],
5183
+							HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5,
5184
+							$this->parsingCss->value['background']
5185
+						);
5186
+
5187
+						$this->parsingCss->value = $old;
5188
+					}
5189
+				}
5190
+
5191
+				// if we are in a new page, and if we have a thead => draw it
5192
+				if (HTML2PDF::$_tables[$param['num']]['new_page'] && count(HTML2PDF::$_tables[$param['num']]['thead']['code'])) {
5193
+					HTML2PDF::$_tables[$param['num']]['new_page'] = false;
5194
+					$tmpTR = HTML2PDF::$_tables[$param['num']]['tr_curr'];
5195
+					$tmpTD = HTML2PDF::$_tables[$param['num']]['td_curr'];
5196
+					$oldParsePos = $this->_parsePos;
5197
+					$oldParseCode = $this->parsingHtml->code;
5198
+
5199
+					HTML2PDF::$_tables[$param['num']]['tr_curr'] = HTML2PDF::$_tables[$param['num']]['thead']['tr'][0];
5200
+					HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5201
+					$this->_parsePos = 0;
5202
+					$this->parsingHtml->code = HTML2PDF::$_tables[$param['num']]['thead']['code'];
5203
+					$this->_isInThead = true;
5204
+					$this->_makeHTMLcode();
5205
+					$this->_isInThead = false;
5206
+
5207
+					$this->_parsePos =     $oldParsePos;
5208
+					$this->parsingHtml->code = $oldParseCode;
5209
+					HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5210
+					HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
5211
+					HTML2PDF::$_tables[$param['num']]['new_page'] = true;
5212
+				}
5213
+			// else (in a sub HTML)
5214
+			} else {
5215
+				// prepare it
5216
+				HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1] = array();
5217
+				if (!isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']]))
5218
+					HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']] = array();
5219
+
5220
+				HTML2PDF::$_tables[$param['num']]['corr_x']=0;
5221
+				while(isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']]))
5222
+					HTML2PDF::$_tables[$param['num']]['corr_x']++;
5223
+			}
5224
+
5225
+			return true;
5226
+		}
5227
+
5228
+		/**
5229
+		 * tag : TR
5230
+		 * mode : CLOSE
5231
+		 *
5232
+		 * @param  array $param
5233
+		 * @return boolean
5234
+		 */
5235
+		protected function _tag_close_TR($param)
5236
+		{
5237
+			if ($this->_isForOneLine) return false;
5238
+
5239
+			$this->_maxH = 0;
5240
+
5241
+			$this->parsingCss->load();
5242
+			$this->parsingCss->fontSet();
5243
+
5244
+			// if we are not in a sub HTML
5245
+			if (!$this->_subPart) {
5246
+
5247
+				// Y of the current line
5248
+				$ty=null;
5249
+				for ($ii=0; $ii<count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1]); $ii++) {
5250
+					if (HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['rowspan']==1) {
5251
+						$ty = HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['h'];
5252
+					}
5253
+				}
5254
+
5255
+				// new position
5256
+				HTML2PDF::$_tables[$param['num']]['td_x'] = HTML2PDF::$_tables[$param['num']]['curr_x']+HTML2PDF::$_tables[$param['num']]['marge']['l'];
5257
+				HTML2PDF::$_tables[$param['num']]['td_y']+= $ty;
5258
+				HTML2PDF::$_tables[$param['num']]['new_page'] = false;
5259
+			} else {
5260
+				HTML2PDF::$_tables[$param['num']]['corr_y']++;
5261
+			}
5262
+
5263
+			return true;
5264
+		}
5265
+
5266
+		/**
5267
+		 * tag : TD
5268
+		 * mode : OPEN
5269
+		 *
5270
+		 * @param  array $param
5271
+		 * @return boolean
5272
+		 */
5273
+		protected function _tag_open_TD($param, $other = 'td')
5274
+		{
5275
+			if ($this->_isForOneLine) return false;
5276
+
5277
+			$this->_maxH = 0;
5278
+
5279
+			$param['cellpadding'] = HTML2PDF::$_tables[$param['num']]['cellpadding'].'mm';
5280
+			$param['cellspacing'] = HTML2PDF::$_tables[$param['num']]['cellspacing'].'mm';
5281
+
5282
+			// specific style for LI
5283
+			if ($other=='li') {
5284
+				$specialLi = true;
5285
+			} else {
5286
+				$specialLi = false;
5287
+				if ($other=='li_sub') {
5288
+					$param['style']['border'] = 'none';
5289
+					$param['style']['background-color']    = 'transparent';
5290
+					$param['style']['background-image']    = 'none';
5291
+					$param['style']['background-position'] = '';
5292
+					$param['style']['background-repeat']   = '';
5293
+					$other = 'li';
5294
+				}
5295
+			}
5296
+
5297
+			// get the properties of the TD
5298
+			$x = HTML2PDF::$_tables[$param['num']]['td_curr'];
5299
+			$y = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
5300
+			$colspan = isset($param['colspan']) ? $param['colspan'] : 1;
5301
+			$rowspan = isset($param['rowspan']) ? $param['rowspan'] : 1;
5302
+
5303
+			// flag for collapse table
5304
+			$collapse = false;
5305
+
5306
+			// specific traitment for TD and TH
5307
+			if (in_array($other, array('td', 'th'))) {
5308
+				// id of the column
5309
+				$numCol = isset(HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Xr']) ? HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Xr'] : HTML2PDF::$_tables[$param['num']]['corr_x'];
5310
+
5311
+				// we get the properties of the COL tag, if exist
5312
+				if (isset(HTML2PDF::$_tables[$param['num']]['cols'][$numCol])) {
5313
+
5314
+					$colParam = HTML2PDF::$_tables[$param['num']]['cols'][$numCol];
5315
+
5316
+					// for colspans => we get all the neede widths
5317
+					$colParam['style']['width'] = array();
5318
+					for ($k=0; $k<$colspan; $k++) {
5319
+						if (isset(HTML2PDF::$_tables[$param['num']]['cols'][$numCol+$k]['style']['width'])) {
5320
+							$colParam['style']['width'][] = HTML2PDF::$_tables[$param['num']]['cols'][$numCol+$k]['style']['width'];
5321
+						}
5322
+					}
5323
+
5324
+					// calculate the total width of the column
5325
+					$total = '';
5326
+					$last = $this->parsingCss->getLastWidth();
5327
+					if (count($colParam['style']['width'])) {
5328
+						$total = $colParam['style']['width'][0]; unset($colParam['style']['width'][0]);
5329
+						foreach ($colParam['style']['width'] as $width) {
5330
+							if (substr($total, -1)=='%' && substr($width, -1)=='%')
5331
+								$total = (str_replace('%', '', $total)+str_replace('%', '', $width)).'%';
5332
+							else
5333
+								$total = ($this->parsingCss->ConvertToMM($total, $last) + $this->parsingCss->ConvertToMM($width, $last)).'mm';
5334
+						}
5335
+					}
5336
+
5337
+					// get the final width
5338
+					if ($total) {
5339
+						$colParam['style']['width'] = $total;
5340
+					} else {
5341
+						unset($colParam['style']['width']);
5342
+					}
5343
+
5344
+
5345
+					// merge the styles of the COL and the TD
5346
+					$param['style'] = array_merge($colParam['style'], $param['style']);
5347
+
5348
+					// merge the class of the COL and the TD
5349
+					if (isset($colParam['class'])) {
5350
+						$param['class'] = $colParam['class'].(isset($param['class']) ? ' '.$param['class'] : '');
5351
+					}
5352
+				}
5353
+
5354
+				$collapse = isset($this->parsingCss->value['border']['collapse']) ? $this->parsingCss->value['border']['collapse'] : false;
5355
+			}
5356
+
5357
+			$this->parsingCss->save();
5358
+
5359
+			// legacy for TD and TH
5360
+			$legacy = null;
5361
+			if (in_array($other, array('td', 'th'))) {
5362
+				$legacy = array();
5363
+
5364
+				$old = $this->parsingCss->getLastValue('background');
5365
+				if ($old && ($old['color'] || $old['image']))
5366
+					$legacy['background'] = $old;
5367
+
5368
+				if (HTML2PDF::$_tables[$param['num']]['border']) {
5369
+					$legacy['border'] = array();
5370
+					$legacy['border']['l'] = HTML2PDF::$_tables[$param['num']]['border'];
5371
+					$legacy['border']['t'] = HTML2PDF::$_tables[$param['num']]['border'];
5372
+					$legacy['border']['r'] = HTML2PDF::$_tables[$param['num']]['border'];
5373
+					$legacy['border']['b'] = HTML2PDF::$_tables[$param['num']]['border'];
5374
+				}
5375
+			}
5376
+			$return = $this->parsingCss->analyse($other, $param, $legacy);
5377
+
5378
+			if ($specialLi) {
5379
+				$this->parsingCss->value['width']-= $this->parsingCss->ConvertToMM($this->_listeGetWidth());
5380
+				$this->parsingCss->value['width']-= $this->parsingCss->ConvertToMM($this->_listeGetPadding());
5381
+			}
5382
+			$this->parsingCss->setPosition();
5383
+			$this->parsingCss->fontSet();
5384
+
5385
+			// if tale collapse => modify the borders
5386
+			if ($collapse) {
5387
+				if (!$this->_subPart) {
5388
+					if (
5389
+						(HTML2PDF::$_tables[$param['num']]['tr_curr']>1 && !HTML2PDF::$_tables[$param['num']]['new_page']) ||
5390
+						(!$this->_isInThead && count(HTML2PDF::$_tables[$param['num']]['thead']['code']))
5391
+					) {
5392
+						$this->parsingCss->value['border']['t'] = $this->parsingCss->readBorder('none');
5393
+					}
5394
+				}
5395
+
5396
+				if (HTML2PDF::$_tables[$param['num']]['td_curr']>0) {
5397
+					if (!$return) $this->parsingCss->value['width']+= $this->parsingCss->value['border']['l']['width'];
5398
+					$this->parsingCss->value['border']['l'] = $this->parsingCss->readBorder('none');
5399
+				}
5400
+			}
5401
+
5402
+			// margins of the table
5403
+			$marge = array();
5404
+			$marge['t'] = $this->parsingCss->value['padding']['t']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['t']['width'];
5405
+			$marge['r'] = $this->parsingCss->value['padding']['r']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['r']['width'];
5406
+			$marge['b'] = $this->parsingCss->value['padding']['b']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['b']['width'];
5407
+			$marge['l'] = $this->parsingCss->value['padding']['l']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['l']['width'];
5408
+
5409
+			// if we are in a sub HTML
5410
+			if ($this->_subPart) {
5411
+				// new position in the table
5412
+				HTML2PDF::$_tables[$param['num']]['td_curr']++;
5413
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x] = array();
5414
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'] = 0;
5415
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'] = 0;
5416
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['dw'] = 0;
5417
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['colspan'] = $colspan;
5418
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['rowspan'] = $rowspan;
5419
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Xr'] = HTML2PDF::$_tables[$param['num']]['corr_x'];
5420
+				HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Yr'] = HTML2PDF::$_tables[$param['num']]['corr_y'];
5421
+
5422
+				// prepare the mapping for rowspan and colspan
5423
+				for ($j=0; $j<$rowspan; $j++) {
5424
+					for ($i=0; $i<$colspan; $i++) {
5425
+						HTML2PDF::$_tables[$param['num']]['corr']
5426
+							[HTML2PDF::$_tables[$param['num']]['corr_y']+$j]
5427
+							[HTML2PDF::$_tables[$param['num']]['corr_x']+$i] = ($i+$j>0) ? '' : array($x,$y,$colspan,$rowspan);
5428
+					}
5429
+				}
5430
+				HTML2PDF::$_tables[$param['num']]['corr_x']+= $colspan;
5431
+				while (isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']])) {
5432
+					HTML2PDF::$_tables[$param['num']]['corr_x']++;
5433
+				}
5434
+
5435
+				// extract the content of the TD, and calculate his size
5436
+				$level = $this->parsingHtml->getLevel($this->_tempPos);
5437
+				$this->_createSubHTML($this->_subHtml);
5438
+				$this->_subHtml->parsingHtml->code = $level;
5439
+				$this->_subHtml->_makeHTMLcode();
5440
+				$this->_tempPos+= count($level);
5441
+			} else {
5442
+				// new position in the table
5443
+				HTML2PDF::$_tables[$param['num']]['td_curr']++;
5444
+				HTML2PDF::$_tables[$param['num']]['td_x']+= HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['dw'];
5445
+
5446
+				// borders and background of the TD
5447
+				$this->_drawRectangle(
5448
+					HTML2PDF::$_tables[$param['num']]['td_x'],
5449
+					HTML2PDF::$_tables[$param['num']]['td_y'],
5450
+					HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'],
5451
+					HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'],
5452
+					$this->parsingCss->value['border'],
5453
+					$this->parsingCss->value['padding'],
5454
+					HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5,
5455
+					$this->parsingCss->value['background']
5456
+				);
5457
+
5458
+				$this->parsingCss->value['width'] = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'] - $marge['l'] - $marge['r'];
5459
+
5460
+				// marges = size of the TD
5461
+				$mL = HTML2PDF::$_tables[$param['num']]['td_x']+$marge['l'];
5462
+				$mR = $this->pdf->getW() - $mL - $this->parsingCss->value['width'];
5463
+				$this->_saveMargin($mL, 0, $mR);
5464
+
5465
+				// position of the content, from vertical-align
5466
+				$hCorr = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'];
5467
+				$hReel = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['real_h'];
5468
+				switch($this->parsingCss->value['vertical-align'])
5469
+				{
5470
+					case 'bottom':
5471
+						$yCorr = $hCorr-$hReel;
5472
+						break;
5473
+
5474
+					case 'middle':
5475
+						$yCorr = ($hCorr-$hReel)*0.5;
5476
+						break;
5477
+
5478
+					case 'top':
5479
+					default:
5480
+						$yCorr = 0;
5481
+						break;
5482
+				}
5483
+
5484
+				//  position of the content
5485
+				$x = HTML2PDF::$_tables[$param['num']]['td_x']+$marge['l'];
5486
+				$y = HTML2PDF::$_tables[$param['num']]['td_y']+$marge['t']+$yCorr;
5487
+				$this->pdf->setXY($x, $y);
5488
+				$this->_setNewPositionForNewLine();
5489
+			}
5490
+
5491
+			return true;
5492
+		}
5493
+
5494
+		/**
5495
+		 * tag : TD
5496
+		 * mode : CLOSE
5497
+		 *
5498
+		 * @param    array $param
5499
+		 * @return boolean
5500
+		 */
5501
+		protected function _tag_close_TD($param)
5502
+		{
5503
+			if ($this->_isForOneLine) return false;
5504
+
5505
+			$this->_maxH = 0;
5506
+
5507
+			// get the margins
5508
+			$marge = array();
5509
+			$marge['t'] = $this->parsingCss->value['padding']['t']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['t']['width'];
5510
+			$marge['r'] = $this->parsingCss->value['padding']['r']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['r']['width'];
5511
+			$marge['b'] = $this->parsingCss->value['padding']['b']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['b']['width'];
5512
+			$marge['l'] = $this->parsingCss->value['padding']['l']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['l']['width'];
5513
+			$marge['t']+= 0.001;
5514
+			$marge['r']+= 0.001;
5515
+			$marge['b']+= 0.001;
5516
+			$marge['l']+= 0.001;
5517
+
5518
+			// if we are in a sub HTML
5519
+			if ($this->_subPart) {
5520
+
5521
+				// it msut take only one page
5522
+				if ($this->_testTdInOnepage && $this->_subHtml->pdf->getPage()>1) {
5523
+					throw new HTML2PDF_exception(7);
5524
+				}
5525
+
5526
+				// size of the content of the TD
5527
+				$w0 = $this->_subHtml->_maxX + $marge['l'] + $marge['r'];
5528
+				$h0 = $this->_subHtml->_maxY + $marge['t'] + $marge['b'];
5529
+
5530
+				// size from the CSS style
5531
+				$w2 = $this->parsingCss->value['width'] + $marge['l'] + $marge['r'];
5532
+				$h2 = $this->parsingCss->value['height'] + $marge['t'] + $marge['b'];
5533
+
5534
+				// final size of the TD
5535
+				HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['w'] = max(array($w0, $w2));
5536
+				HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['h'] = max(array($h0, $h2));
5537
+
5538
+				// real position of the content
5539
+				HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['real_w'] = $w0;
5540
+				HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['real_h'] = $h0;
5541
+
5542
+				// destroy the sub HTML
5543
+				$this->_destroySubHTML($this->_subHtml);
5544
+			} else {
5545
+				$this->_loadMargin();
5546
+
5547
+				HTML2PDF::$_tables[$param['num']]['td_x']+= HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['w'];
5548
+			}
5549
+
5550
+			$this->parsingCss->load();
5551
+			$this->parsingCss->fontSet();
5552
+
5553
+			return true;
5554
+		}
5555
+
5556
+
5557
+		/**
5558
+		 * tag : TH
5559
+		 * mode : OPEN
5560
+		 *
5561
+		 * @param  array $param
5562
+		 * @return boolean
5563
+		 */
5564
+		protected function _tag_open_TH($param)
5565
+		{
5566
+			if ($this->_isForOneLine) return false;
5567
+
5568
+			$this->parsingCss->save();
5569
+			$this->parsingCss->value['font-bold'] = true;
5570
+
5571
+			$this->_tag_open_TD($param, 'th');
5572
+
5573
+			return true;
5574
+		}
5575
+
5576
+		/**
5577
+		 * tag : TH
5578
+		 * mode : CLOSE
5579
+		 *
5580
+		 * @param  array $param
5581
+		 * @return boolean
5582
+		 */
5583
+		protected function _tag_close_TH($param)
5584
+		{
5585
+			if ($this->_isForOneLine) return false;
5586
+
5587
+			$this->_tag_close_TD($param);
5588
+
5589
+			$this->parsingCss->load();
5590
+
5591
+			return true;
5592
+		}
5593
+
5594
+		/**
5595
+		 * tag : IMG
5596
+		 * mode : OPEN
5597
+		 *
5598
+		 * @param  array $param
5599
+		 * @return boolean
5600
+		 */
5601
+		protected function _tag_open_IMG($param)
5602
+		{
5603
+			$src    = str_replace('&amp;', '&', $param['src']);
5604
+
5605
+			$this->parsingCss->save();
5606
+			$this->parsingCss->value['width']    = 0;
5607
+			$this->parsingCss->value['height']    = 0;
5608
+			$this->parsingCss->value['border']    = array('type' => 'none', 'width' => 0, 'color' => array(0, 0, 0));
5609
+			$this->parsingCss->value['background'] = array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
5610
+			$this->parsingCss->analyse('img', $param);
5611
+			$this->parsingCss->setPosition();
5612
+			$this->parsingCss->fontSet();
5613
+
5614
+			$res = $this->_drawImage($src, isset($param['sub_li']));
5615
+			if (!$res) return $res;
5616
+
5617
+			$this->parsingCss->load();
5618
+			$this->parsingCss->fontSet();
5619
+			$this->_maxE++;
5620
+
5621
+			return true;
5622
+		}
5623
+
5624
+		/**
5625
+		 * tag : SELECT
5626
+		 * mode : OPEN
5627
+		 *
5628
+		 * @param  array $param
5629
+		 * @return boolean
5630
+		 */
5631
+		protected function _tag_open_SELECT($param)
5632
+		{
5633
+			if (!isset($param['name'])) {
5634
+				$param['name'] = 'champs_pdf_'.(count($this->_lstField)+1);
5635
+			}
5636
+
5637
+			$param['name'] = strtolower($param['name']);
5638
+
5639
+			if (isset($this->_lstField[$param['name']])) {
5640
+				$this->_lstField[$param['name']]++;
5641
+			} else {
5642
+				$this->_lstField[$param['name']] = 1;
5643
+			}
5644
+
5645
+			$this->parsingCss->save();
5646
+			$this->parsingCss->analyse('select', $param);
5647
+			$this->parsingCss->setPosition();
5648
+			$this->parsingCss->fontSet();
5649
+
5650
+			$this->_lstSelect = array();
5651
+			$this->_lstSelect['name']    = $param['name'];
5652
+			$this->_lstSelect['multi']    = isset($param['multiple']) ? true : false;
5653
+			$this->_lstSelect['size']    = isset($param['size']) ? $param['size'] : 1;
5654
+			$this->_lstSelect['options']    = array();
5655
+
5656
+			if ($this->_lstSelect['multi'] && $this->_lstSelect['size']<3) $this->_lstSelect['size'] = 3;
5657
+
5658
+			return true;
5659
+		}
5660
+
5661
+		/**
5662
+		 * tag : OPTION
5663
+		 * mode : OPEN
5664
+		 *
5665
+		 * @param    array $param
5666
+		 * @return boolean
5667
+		 */
5668
+		protected function _tag_open_OPTION($param)
5669
+		{
5670
+			// get the content of the option : it is the text of the option
5671
+			$level = $this->parsingHtml->getLevel($this->_parsePos);
5672
+			$this->_parsePos+= count($level);
5673
+			$value = isset($param['value']) ? $param['value'] : 'aut_tag_open_opt_'.(count($this->_lstSelect)+1);
5674
+
5675
+			$this->_lstSelect['options'][$value] = isset($level[0]['param']['txt']) ? $level[0]['param']['txt'] : '';
5676
+
5677
+			return true;
5678
+		}
5679
+
5680
+		/**
5681
+		 * tag : OPTION
5682
+		 * mode : CLOSE
5683
+		 *
5684
+		 * @param    array $param
5685
+		 * @return boolean
5686
+		 */
5687
+		protected function _tag_close_OPTION($param)
5688
+		{
5689
+			// nothing to do here
5690
+
5691
+			return true;
5692
+		}
5693
+
5694
+		/**
5695
+		 * tag : SELECT
5696
+		 * mode : CLOSE
5697
+		 *
5698
+		 * @param  array $param
5699
+		 * @return boolean
5700
+		 */
5701
+		protected function _tag_close_SELECT()
5702
+		{
5703
+			// position of the select
5704
+			$x = $this->pdf->getX();
5705
+			$y = $this->pdf->getY();
5706
+			$f = 1.08*$this->parsingCss->value['font-size'];
5707
+
5708
+			// width
5709
+			$w = $this->parsingCss->value['width']; if (!$w) $w = 50;
5710
+
5711
+			// height (automatic)
5712
+			$h = ($f*1.07*$this->_lstSelect['size'] + 1);
5713
+
5714
+			$prop = $this->parsingCss->getFormStyle();
5715
+
5716
+			// multy select
5717
+			if ($this->_lstSelect['multi']) {
5718
+				$prop['multipleSelection'] = 'true';
5719
+			}
5720
+
5721
+
5722
+			// single or multi select
5723
+			if ($this->_lstSelect['size']>1) {
5724
+				$this->pdf->ListBox($this->_lstSelect['name'], $w, $h, $this->_lstSelect['options'], $prop);
5725
+			} else {
5726
+				$this->pdf->ComboBox($this->_lstSelect['name'], $w, $h, $this->_lstSelect['options'], $prop);
5727
+			}
5728
+
5729
+			$this->_maxX = max($this->_maxX, $x+$w);
5730
+			$this->_maxY = max($this->_maxY, $y+$h);
5731
+			$this->_maxH = max($this->_maxH, $h);
5732
+			$this->_maxE++;
5733
+			$this->pdf->setX($x+$w);
5734
+
5735
+			$this->parsingCss->load();
5736
+			$this->parsingCss->fontSet();
5737
+
5738
+			$this->_lstSelect = array();
5739
+
5740
+			return true;
5741
+		}
5742
+
5743
+		/**
5744
+		 * tag : TEXTAREA
5745
+		 * mode : OPEN
5746
+		 *
5747
+		 * @param    array $param
5748
+		 * @return boolean
5749
+		 */
5750
+		protected function _tag_open_TEXTAREA($param)
5751
+		{
5752
+			if (!isset($param['name'])) {
5753
+				$param['name'] = 'champs_pdf_'.(count($this->_lstField)+1);
5754
+			}
5755
+
5756
+			$param['name'] = strtolower($param['name']);
5757
+
5758
+			if (isset($this->_lstField[$param['name']])) {
5759
+				$this->_lstField[$param['name']]++;
5760
+			} else {
5761
+				$this->_lstField[$param['name']] = 1;
5762
+			}
5763
+
5764
+			$this->parsingCss->save();
5765
+			$this->parsingCss->analyse('textarea', $param);
5766
+			$this->parsingCss->setPosition();
5767
+			$this->parsingCss->fontSet();
5768
+
5769
+			$x = $this->pdf->getX();
5770
+			$y = $this->pdf->getY();
5771
+			$fx = 0.65*$this->parsingCss->value['font-size'];
5772
+			$fy = 1.08*$this->parsingCss->value['font-size'];
5773
+
5774
+			// extract the content the textarea : value
5775
+			$level = $this->parsingHtml->getLevel($this->_parsePos);
5776
+			$this->_parsePos+= count($level);
5777
+
5778
+			// automatic size, from cols and rows properties
5779
+			$w = $fx*(isset($param['cols']) ? $param['cols'] : 22)+1;
5780
+			$h = $fy*1.07*(isset($param['rows']) ? $param['rows'] : 3)+3;
5781
+
5782
+			$prop = $this->parsingCss->getFormStyle();
5783
+
5784
+			$prop['multiline'] = true;
5785
+			$prop['value'] = isset($level[0]['param']['txt']) ? $level[0]['param']['txt'] : '';
5786
+
5787
+			$this->pdf->TextField($param['name'], $w, $h, $prop, array(), $x, $y);
5788
+
5789
+			$this->_maxX = max($this->_maxX, $x+$w);
5790
+			$this->_maxY = max($this->_maxY, $y+$h);
5791
+			$this->_maxH = max($this->_maxH, $h);
5792
+			$this->_maxE++;
5793
+			$this->pdf->setX($x+$w);
5794
+
5795
+			return true;
5796
+		}
5797
+
5798
+		/**
5799
+		 * tag : TEXTAREA
5800
+		 * mode : CLOSE
5801
+		 *
5802
+		 * @param  array $param
5803
+		 * @return boolean
5804
+		 */
5805
+		protected function _tag_close_TEXTAREA()
5806
+		{
5807
+			$this->parsingCss->load();
5808
+			$this->parsingCss->fontSet();
5809
+
5810
+			return true;
5811
+		}
5812
+
5813
+		/**
5814
+		 * tag : INPUT
5815
+		 * mode : OPEN
5816
+		 *
5817
+		 * @param  array $param
5818
+		 * @return boolean
5819
+		 */
5820
+		protected function _tag_open_INPUT($param)
5821
+		{
5822
+			if (!isset($param['name']))  $param['name']  = 'champs_pdf_'.(count($this->_lstField)+1);
5823
+			if (!isset($param['value'])) $param['value'] = '';
5824
+			if (!isset($param['type']))  $param['type']  = 'text';
5825
+
5826
+			$param['name'] = strtolower($param['name']);
5827
+			$param['type'] = strtolower($param['type']);
5828
+
5829
+			// the type must be valid
5830
+			if (!in_array($param['type'], array('text', 'checkbox', 'radio', 'hidden', 'submit', 'reset', 'button'))) {
5831
+				$param['type'] = 'text';
5832
+			}
5833
+
5834
+			if (isset($this->_lstField[$param['name']])) {
5835
+				$this->_lstField[$param['name']]++;
5836
+			} else {
5837
+				$this->_lstField[$param['name']] = 1;
5838
+			}
5839
+
5840
+			$this->parsingCss->save();
5841
+			$this->parsingCss->analyse('input', $param);
5842
+			$this->parsingCss->setPosition();
5843
+			$this->parsingCss->fontSet();
5844
+
5845
+			$name = $param['name'];
5846
+
5847
+			$x = $this->pdf->getX();
5848
+			$y = $this->pdf->getY();
5849
+			$f = 1.08*$this->parsingCss->value['font-size'];
5850
+
5851
+			$prop = $this->parsingCss->getFormStyle();
5852
+
5853
+			switch($param['type'])
5854
+			{
5855
+				case 'checkbox':
5856
+					$w = 3;
5857
+					$h = $w;
5858
+					if ($h<$f) $y+= ($f-$h)*0.5;
5859
+					$checked = (isset($param['checked']) && $param['checked']=='checked');
5860
+					$this->pdf->CheckBox($name, $w, $checked, $prop, array(), ($param['value'] ? $param['value'] : 'Yes'), $x, $y);
5861
+					break;
5862
+
5863
+				case 'radio':
5864
+					$w = 3;
5865
+					$h = $w;
5866
+					if ($h<$f) $y+= ($f-$h)*0.5;
5867
+					$checked = (isset($param['checked']) && $param['checked']=='checked');
5868
+					$this->pdf->RadioButton($name, $w, $prop, array(), ($param['value'] ? $param['value'] : 'On'), $checked, $x, $y);
5869
+					break;
5870
+
5871
+				case 'hidden':
5872
+					$w = 0;
5873
+					$h = 0;
5874
+					$prop['value'] = $param['value'];
5875
+					$this->pdf->TextField($name, $w, $h, $prop, array(), $x, $y);
5876
+					break;
5877
+
5878
+				case 'text':
5879
+					$w = $this->parsingCss->value['width']; if (!$w) $w = 40;
5880
+					$h = $f*1.3;
5881
+					$prop['value'] = $param['value'];
5882
+					$this->pdf->TextField($name, $w, $h, $prop, array(), $x, $y);
5883
+					break;
5884
+
5885
+				case 'submit':
5886
+					$w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5887
+					$h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5888
+					$action = array('S'=>'SubmitForm', 'F'=>$this->_isInForm, 'Flags'=>array('ExportFormat'));
5889
+					$this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5890
+					break;
5891
+
5892
+				case 'reset':
5893
+					$w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5894
+					$h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5895
+					$action = array('S'=>'ResetForm');
5896
+					$this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5897
+					break;
5898
+
5899
+				case 'button':
5900
+					$w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5901
+					$h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5902
+					$action = isset($param['onclick']) ? $param['onclick'] : '';
5903
+					$this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5904
+					break;
5905
+
5906
+				default:
5907
+					$w = 0;
5908
+					$h = 0;
5909
+					break;
5910
+			}
5911
+
5912
+			$this->_maxX = max($this->_maxX, $x+$w);
5913
+			$this->_maxY = max($this->_maxY, $y+$h);
5914
+			$this->_maxH = max($this->_maxH, $h);
5915
+			$this->_maxE++;
5916
+			$this->pdf->setX($x+$w);
5917
+
5918
+			$this->parsingCss->load();
5919
+			$this->parsingCss->fontSet();
5920
+
5921
+			return true;
5922
+		}
5923
+
5924
+		/**
5925
+		 * tag : DRAW
5926
+		 * mode : OPEN
5927
+		 *
5928
+		 * @param  array $param
5929
+		 * @return boolean
5930
+		 */
5931
+		protected function _tag_open_DRAW($param)
5932
+		{
5933
+			if ($this->_isForOneLine) return false;
5934
+			if ($this->_debugActif) $this->_DEBUG_add('DRAW', true);
5935
+
5936
+			$this->parsingCss->save();
5937
+			$this->parsingCss->analyse('draw', $param);
5938
+			$this->parsingCss->fontSet();
5939
+
5940
+			$alignObject = null;
5941
+			if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
5942
+
5943
+			$overW = $this->parsingCss->value['width'];
5944
+			$overH = $this->parsingCss->value['height'];
5945
+			$this->parsingCss->value['old_maxX'] = $this->_maxX;
5946
+			$this->parsingCss->value['old_maxY'] = $this->_maxY;
5947
+			$this->parsingCss->value['old_maxH'] = $this->_maxH;
5948
+
5949
+			$w = $this->parsingCss->value['width'];
5950
+			$h = $this->parsingCss->value['height'];
5951
+
5952
+			if (!$this->parsingCss->value['position']) {
5953
+				if (
5954
+					$w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
5955
+					$this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
5956
+					)
5957
+					$this->_tag_open_BR(array());
5958
+
5959
+				if (
5960
+						($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
5961
+						($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
5962
+						!$this->_isInOverflow
5963
+					)
5964
+					$this->_setNewPage();
5965
+
5966
+				$old = $this->parsingCss->getOldValues();
5967
+				$parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5968
+
5969
+				if ($parentWidth>$w) {
5970
+					if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5971
+					else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
5972
+				}
5973
+
5974
+				$this->parsingCss->setPosition();
5975
+			} else {
5976
+				$old = $this->parsingCss->getOldValues();
5977
+				$parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5978
+
5979
+				if ($parentWidth>$w) {
5980
+					if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5981
+					else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
5982
+				}
5983
+
5984
+				$this->parsingCss->setPosition();
5985
+				$this->_saveMax();
5986
+				$this->_maxX = 0;
5987
+				$this->_maxY = 0;
5988
+				$this->_maxH = 0;
5989
+				$this->_maxE = 0;
5990
+			}
5991
+
5992
+			$this->_drawRectangle(
5993
+				$this->parsingCss->value['x'],
5994
+				$this->parsingCss->value['y'],
5995
+				$this->parsingCss->value['width'],
5996
+				$this->parsingCss->value['height'],
5997
+				$this->parsingCss->value['border'],
5998
+				$this->parsingCss->value['padding'],
5999
+				0,
6000
+				$this->parsingCss->value['background']
6001
+			);
6002
+
6003
+			$marge = array();
6004
+			$marge['l'] = $this->parsingCss->value['border']['l']['width'];
6005
+			$marge['r'] = $this->parsingCss->value['border']['r']['width'];
6006
+			$marge['t'] = $this->parsingCss->value['border']['t']['width'];
6007
+			$marge['b'] = $this->parsingCss->value['border']['b']['width'];
6008
+
6009
+			$this->parsingCss->value['width'] -= $marge['l']+$marge['r'];
6010
+			$this->parsingCss->value['height']-= $marge['t']+$marge['b'];
6011
+
6012
+			$overW-= $marge['l']+$marge['r'];
6013
+			$overH-= $marge['t']+$marge['b'];
6014
+
6015
+			// clipping to draw only in the size opf the DRAW tag
6016
+			$this->pdf->clippingPathStart(
6017
+				$this->parsingCss->value['x']+$marge['l'],
6018
+				$this->parsingCss->value['y']+$marge['t'],
6019
+				$this->parsingCss->value['width'],
6020
+				$this->parsingCss->value['height']
6021
+			);
6022
+
6023
+			// left and right of the DRAW tag
6024
+			$mL = $this->parsingCss->value['x']+$marge['l'];
6025
+			$mR = $this->pdf->getW() - $mL - $overW;
6026
+
6027
+			// position of the DRAW tag
6028
+			$x = $this->parsingCss->value['x']+$marge['l'];
6029
+			$y = $this->parsingCss->value['y']+$marge['t'];
6030
+
6031
+			// prepare the drawing area
6032
+			$this->_saveMargin($mL, 0, $mR);
6033
+			$this->pdf->setXY($x, $y);
6034
+
6035
+			// we are in a draw tag
6036
+			$this->_isInDraw = array(
6037
+				'x' => $x,
6038
+				'y' => $y,
6039
+				'w' => $overW,
6040
+				'h' => $overH,
6041
+			);
6042
+
6043
+			// init the translate matrix : (0,0) => ($x, $y)
6044
+			$this->pdf->doTransform(array(1,0,0,1,$x,$y));
6045
+			$this->pdf->SetAlpha(1.);
6046
+			return true;
6047
+		}
6048
+
6049
+		/**
6050
+		 * tag : DRAW
6051
+		 * mode : CLOSE
6052
+		 *
6053
+		 * @param  array $param
6054
+		 * @return boolean
6055
+		 */
6056
+		protected function _tag_close_DRAW($param)
6057
+		{
6058
+			if ($this->_isForOneLine) return false;
6059
+
6060
+			$this->pdf->SetAlpha(1.);
6061
+			$this->pdf->undoTransform();
6062
+			$this->pdf->clippingPathStop();
6063
+
6064
+			$this->_maxX = $this->parsingCss->value['old_maxX'];
6065
+			$this->_maxY = $this->parsingCss->value['old_maxY'];
6066
+			$this->_maxH = $this->parsingCss->value['old_maxH'];
6067
+
6068
+			$marge = array();
6069
+			$marge['l'] = $this->parsingCss->value['border']['l']['width'];
6070
+			$marge['r'] = $this->parsingCss->value['border']['r']['width'];
6071
+			$marge['t'] = $this->parsingCss->value['border']['t']['width'];
6072
+			$marge['b'] = $this->parsingCss->value['border']['b']['width'];
6073
+
6074
+			$x = $this->parsingCss->value['x'];
6075
+			$y = $this->parsingCss->value['y'];
6076
+			$w = $this->parsingCss->value['width']+$marge['l']+$marge['r'];
6077
+			$h = $this->parsingCss->value['height']+$marge['t']+$marge['b'];
6078
+
6079
+			if ($this->parsingCss->value['position']!='absolute') {
6080
+				$this->pdf->setXY($x+$w, $y);
6081
+
6082
+				$this->_maxX = max($this->_maxX, $x+$w);
6083
+				$this->_maxY = max($this->_maxY, $y+$h);
6084
+				$this->_maxH = max($this->_maxH, $h);
6085
+				$this->_maxE++;
6086
+			} else {
6087
+				// position
6088
+				$this->pdf->setXY($this->parsingCss->value['xc'], $this->parsingCss->value['yc']);
6089
+
6090
+				$this->_loadMax();
6091
+			}
6092
+
6093
+			$block = ($this->parsingCss->value['display']!='inline' && $this->parsingCss->value['position']!='absolute');
6094
+
6095
+			$this->parsingCss->load();
6096
+			$this->parsingCss->fontSet();
6097
+			$this->_loadMargin();
6098
+
6099
+			if ($block) $this->_tag_open_BR(array());
6100
+			if ($this->_debugActif) $this->_DEBUG_add('DRAW', false);
6101
+
6102
+			$this->_isInDraw = null;
6103
+
6104
+			return true;
6105
+		}
6106
+
6107
+		/**
6108
+		 * tag : LINE
6109
+		 * mode : OPEN
6110
+		 *
6111
+		 * @param  array $param
6112
+		 * @return boolean
6113
+		 */
6114
+		protected function _tag_open_LINE($param)
6115
+		{
6116
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'LINE');
6117
+
6118
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6119
+			$this->parsingCss->save();
6120
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6121
+			$styles['fill'] = null;
6122
+			$style = $this->pdf->svgSetStyle($styles);
6123
+
6124
+			$x1 = isset($param['x1']) ? $this->parsingCss->ConvertToMM($param['x1'], $this->_isInDraw['w']) : 0.;
6125
+			$y1 = isset($param['y1']) ? $this->parsingCss->ConvertToMM($param['y1'], $this->_isInDraw['h']) : 0.;
6126
+			$x2 = isset($param['x2']) ? $this->parsingCss->ConvertToMM($param['x2'], $this->_isInDraw['w']) : 0.;
6127
+			$y2 = isset($param['y2']) ? $this->parsingCss->ConvertToMM($param['y2'], $this->_isInDraw['h']) : 0.;
6128
+			$this->pdf->svgLine($x1, $y1, $x2, $y2);
6129
+
6130
+			$this->pdf->undoTransform();
6131
+			$this->parsingCss->load();
6132
+		}
6133
+
6134
+		/**
6135
+		 * tag : RECT
6136
+		 * mode : OPEN
6137
+		 *
6138
+		 * @param  array $param
6139
+		 * @return boolean
6140
+		 */
6141
+		protected function _tag_open_RECT($param)
6142
+		{
6143
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'RECT');
6144
+
6145
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6146
+			$this->parsingCss->save();
6147
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6148
+			$style = $this->pdf->svgSetStyle($styles);
6149
+
6150
+			$x = isset($param['x']) ? $this->parsingCss->ConvertToMM($param['x'], $this->_isInDraw['w']) : 0.;
6151
+			$y = isset($param['y']) ? $this->parsingCss->ConvertToMM($param['y'], $this->_isInDraw['h']) : 0.;
6152
+			$w = isset($param['w']) ? $this->parsingCss->ConvertToMM($param['w'], $this->_isInDraw['w']) : 0.;
6153
+			$h = isset($param['h']) ? $this->parsingCss->ConvertToMM($param['h'], $this->_isInDraw['h']) : 0.;
6154
+
6155
+			$this->pdf->svgRect($x, $y, $w, $h, $style);
6156
+
6157
+			$this->pdf->undoTransform();
6158
+			$this->parsingCss->load();
6159
+		}
6160
+
6161
+		/**
6162
+		 * tag : CIRCLE
6163
+		 * mode : OPEN
6164
+		 *
6165
+		 * @param  array $param
6166
+		 * @return boolean
6167
+		 */
6168
+		protected function _tag_open_CIRCLE($param)
6169
+		{
6170
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'CIRCLE');
6171
+
6172
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6173
+			$this->parsingCss->save();
6174
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6175
+			$style = $this->pdf->svgSetStyle($styles);
6176
+
6177
+			$cx = isset($param['cx']) ? $this->parsingCss->ConvertToMM($param['cx'], $this->_isInDraw['w']) : 0.;
6178
+			$cy = isset($param['cy']) ? $this->parsingCss->ConvertToMM($param['cy'], $this->_isInDraw['h']) : 0.;
6179
+			$r = isset($param['r']) ? $this->parsingCss->ConvertToMM($param['r'], $this->_isInDraw['w']) : 0.;
6180
+			$this->pdf->svgEllipse($cx, $cy, $r, $r, $style);
6181
+
6182
+			$this->pdf->undoTransform();
6183
+			$this->parsingCss->load();
6184
+		}
6185
+
6186
+		/**
6187
+		 * tag : ELLIPSE
6188
+		 * mode : OPEN
6189
+		 *
6190
+		 * @param  array $param
6191
+		 * @return boolean
6192
+		 */
6193
+		protected function _tag_open_ELLIPSE($param)
6194
+		{
6195
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'ELLIPSE');
6196
+
6197
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6198
+			$this->parsingCss->save();
6199
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6200
+			$style = $this->pdf->svgSetStyle($styles);
6201
+
6202
+			$cx = isset($param['cx']) ? $this->parsingCss->ConvertToMM($param['cx'], $this->_isInDraw['w']) : 0.;
6203
+			$cy = isset($param['cy']) ? $this->parsingCss->ConvertToMM($param['cy'], $this->_isInDraw['h']) : 0.;
6204
+			$rx = isset($param['ry']) ? $this->parsingCss->ConvertToMM($param['rx'], $this->_isInDraw['w']) : 0.;
6205
+			$ry = isset($param['rx']) ? $this->parsingCss->ConvertToMM($param['ry'], $this->_isInDraw['h']) : 0.;
6206
+			$this->pdf->svgEllipse($cx, $cy, $rx, $ry, $style);
6207
+
6208
+			$this->pdf->undoTransform();
6209
+			$this->parsingCss->load();
6210
+		}
6211
+
6212
+
6213
+		/**
6214
+		 * tag : POLYLINE
6215
+		 * mode : OPEN
6216
+		 *
6217
+		 * @param  array $param
6218
+		 * @return boolean
6219
+		 */
6220
+		protected function _tag_open_POLYLINE($param)
6221
+		{
6222
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'POLYGON');
6223
+
6224
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6225
+			$this->parsingCss->save();
6226
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6227
+			$style = $this->pdf->svgSetStyle($styles);
6228
+
6229
+			$path = isset($param['points']) ? $param['points'] : null;
6230
+			if ($path) {
6231
+				$path = str_replace(',', ' ', $path);
6232
+				$path = preg_replace('/[\s]+/', ' ', trim($path));
6233
+
6234
+				// prepare the path
6235
+				$path = explode(' ', $path);
6236
+				foreach ($path as $k => $v) {
6237
+					$path[$k] = trim($v);
6238
+					if ($path[$k]==='') unset($path[$k]);
6239
+				}
6240
+				$path = array_values($path);
6241
+
6242
+				$actions = array();
6243
+				for ($k=0; $k<count($path); $k+=2) {
6244
+					$actions[] = array(
6245
+						($k ? 'L' : 'M') ,
6246
+						$this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']),
6247
+						$this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h'])
6248
+					);
6249
+				}
6250
+
6251
+				// drawing
6252
+				$this->pdf->svgPolygone($actions, $style);
6253
+			}
6254
+
6255
+			$this->pdf->undoTransform();
6256
+			$this->parsingCss->load();
6257
+		}
6258
+
6259
+		/**
6260
+		 * tag : POLYGON
6261
+		 * mode : OPEN
6262
+		 *
6263
+		 * @param  array $param
6264
+		 * @return boolean
6265
+		 */
6266
+		protected function _tag_open_POLYGON($param)
6267
+		{
6268
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'POLYGON');
6269
+
6270
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6271
+			$this->parsingCss->save();
6272
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6273
+			$style = $this->pdf->svgSetStyle($styles);
6274
+
6275
+			$path = (isset($param['points']) ? $param['points'] : null);
6276
+			if ($path) {
6277
+				$path = str_replace(',', ' ', $path);
6278
+				$path = preg_replace('/[\s]+/', ' ', trim($path));
6279
+
6280
+				// prepare the path
6281
+				$path = explode(' ', $path);
6282
+				foreach ($path as $k => $v) {
6283
+					$path[$k] = trim($v);
6284
+					if ($path[$k]==='') unset($path[$k]);
6285
+				}
6286
+				$path = array_values($path);
6287
+
6288
+				$actions = array();
6289
+				for ($k=0; $k<count($path); $k+=2) {
6290
+					$actions[] = array(
6291
+						($k ? 'L' : 'M') ,
6292
+						$this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']),
6293
+						$this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h'])
6294
+					);
6295
+				}
6296
+				$actions[] = array('z');
6297
+
6298
+				// drawing
6299
+				$this->pdf->svgPolygone($actions, $style);
6300
+			}
6301
+
6302
+			$this->pdf->undoTransform();
6303
+			$this->parsingCss->load();
6304
+		}
6305
+
6306
+		/**
6307
+		 * tag : PATH
6308
+		 * mode : OPEN
6309
+		 *
6310
+		 * @param  array $param
6311
+		 * @return boolean
6312
+		 */
6313
+		protected function _tag_open_PATH($param)
6314
+		{
6315
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'PATH');
6316
+
6317
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6318
+			$this->parsingCss->save();
6319
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6320
+			$style = $this->pdf->svgSetStyle($styles);
6321
+
6322
+			$path = isset($param['d']) ? $param['d'] : null;
6323
+
6324
+			if ($path) {
6325
+				// prepare the path
6326
+				$path = str_replace(',', ' ', $path);
6327
+				$path = preg_replace('/([a-zA-Z])([0-9\.\-])/', '$1 $2', $path);
6328
+				$path = preg_replace('/([0-9\.])([a-zA-Z])/', '$1 $2', $path);
6329
+				$path = preg_replace('/[\s]+/', ' ', trim($path));
6330
+				$path = preg_replace('/ ([a-z]{2})/', '$1', $path);
6331
+
6332
+				$path = explode(' ', $path);
6333
+				foreach ($path as $k => $v) {
6334
+					$path[$k] = trim($v);
6335
+					if ($path[$k]==='') unset($path[$k]);
6336
+				}
6337
+				$path = array_values($path);
6338
+
6339
+				// read each actions in the path
6340
+				$actions = array();
6341
+				$action = array();
6342
+				$lastAction = null; // last action found
6343
+				for ($k=0; $k<count($path);true) {
6344
+
6345
+					// for this actions, we can not have multi coordonate
6346
+					if (in_array($lastAction, array('z', 'Z'))) {
6347
+						$lastAction = null;
6348
+					}
6349
+
6350
+					// read the new action (forcing if no action before)
6351
+					if (preg_match('/^[a-z]+$/i', $path[$k]) || $lastAction===null) {
6352
+						$lastAction = $path[$k];
6353
+						$k++;
6354
+					}
6355
+
6356
+					// current action
6357
+					$action = array();
6358
+					$action[] = $lastAction;
6359
+					switch($lastAction)
6360
+					{
6361
+						case 'C':
6362
+						case 'c':
6363
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x1
6364
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y1
6365
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+2], $this->_isInDraw['w']);    // x2
6366
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+3], $this->_isInDraw['h']);    // y2
6367
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+4], $this->_isInDraw['w']);    // x
6368
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+5], $this->_isInDraw['h']);    // y
6369
+							$k+= 6;
6370
+							break;
6371
+
6372
+						case 'Q':
6373
+						case 'S':
6374
+						case 'q':
6375
+						case 's':
6376
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x2
6377
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y2
6378
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+2], $this->_isInDraw['w']);    // x
6379
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+3], $this->_isInDraw['h']);    // y
6380
+							$k+= 4;
6381
+							break;
6382
+
6383
+						case 'A':
6384
+						case 'a':
6385
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // rx
6386
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // ry
6387
+							$action[] = 1.*$path[$k+2];                                                        // angle de deviation de l'axe X
6388
+							$action[] = ($path[$k+3]=='1') ? 1 : 0;                                            // large-arc-flag
6389
+							$action[] = ($path[$k+4]=='1') ? 1 : 0;                                            // sweep-flag
6390
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+5], $this->_isInDraw['w']);    // x
6391
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+6], $this->_isInDraw['h']);    // y
6392
+							$k+= 7;
6393
+							break;
6394
+
6395
+						case 'M':
6396
+						case 'L':
6397
+						case 'T':
6398
+						case 'm':
6399
+						case 'l':
6400
+						case 't':
6401
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x
6402
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y
6403
+							$k+= 2;
6404
+							break;
6405
+
6406
+						case 'H':
6407
+						case 'h':
6408
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x
6409
+							$k+= 1;
6410
+							break;
6411
+
6412
+						case 'V':
6413
+						case 'v':
6414
+							$action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['h']);    // y
6415
+							$k+= 1;
6416
+							break;
6417
+
6418
+						case 'z':
6419
+						case 'Z':
6420
+						default:
6421
+							break;
6422
+					}
6423
+					// add the action
6424
+					$actions[] = $action;
6425
+				}
6426
+
6427
+				// drawing
6428
+				$this->pdf->svgPolygone($actions, $style);
6429
+			}
6430
+
6431
+			$this->pdf->undoTransform();
6432
+			$this->parsingCss->load();
6433
+		}
6434
+
6435
+		/**
6436
+		 * tag : G
6437
+		 * mode : OPEN
6438
+		 *
6439
+		 * @param  array $param
6440
+		 * @return boolean
6441
+		 */
6442
+		protected function _tag_open_G($param)
6443
+		{
6444
+			if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'G');
6445
+
6446
+			$this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6447
+			$this->parsingCss->save();
6448
+			$styles = $this->parsingCss->getSvgStyle('path', $param);
6449
+			$style = $this->pdf->svgSetStyle($styles);
6450
+		}
6451
+
6452
+		/**
6453
+		 * tag : G
6454
+		 * mode : CLOSE
6455
+		 *
6456
+		 * @param  array $param
6457
+		 * @return boolean
6458
+		 */
6459
+		protected function _tag_close_G($param)
6460
+		{
6461
+			$this->pdf->undoTransform();
6462
+			$this->parsingCss->load();
6463
+		}
6464
+
6465
+		/**
6466
+		 * new page for the automatic Index, does not use thie method. Only HTML2PDF_myPdf could use it !!!!
6467
+		 *
6468
+		 * @param  &int $page
6469
+		 * @return integer $oldPage
6470
+		 */
6471
+		public function _INDEX_NewPage(&$page)
6472
+		{
6473
+			if ($page) {
6474
+				$oldPage = $this->pdf->getPage();
6475
+				$this->pdf->setPage($page);
6476
+				$this->pdf->setXY($this->_margeLeft, $this->_margeTop);
6477
+				$this->_maxH = 0;
6478
+				$page++;
6479
+				return $oldPage;
6480
+			} else {
6481
+				$this->_setNewPage();
6482
+				return null;
6483
+			}
6484
+		}
6485
+
6486
+	}
6488 6487
 }
6489 6488
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +917 added lines, -917 removed lines patch added patch discarded remove patch
@@ -1,4 +1,4 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 /**
3 3
  * HTML2PDF Librairy - main class
4 4
  *
@@ -14,11 +14,11 @@  discard block
 block discarded – undo
14 14
     define('__CLASS_HTML2PDF__', '4.03');
15 15
     define('HTML2PDF_USED_TCPDF_VERSION', '5.0.002');
16 16
 
17
-    require_once(dirname(__FILE__).'/_class/exception.class.php');
18
-    require_once(dirname(__FILE__).'/_class/locale.class.php');
19
-    require_once(dirname(__FILE__).'/_class/myPdf.class.php');
20
-    require_once(dirname(__FILE__).'/_class/parsingHtml.class.php');
21
-    require_once(dirname(__FILE__).'/_class/parsingCss.class.php');
17
+    require_once(dirname(__FILE__) . '/_class/exception.class.php');
18
+    require_once(dirname(__FILE__) . '/_class/locale.class.php');
19
+    require_once(dirname(__FILE__) . '/_class/myPdf.class.php');
20
+    require_once(dirname(__FILE__) . '/_class/parsingHtml.class.php');
21
+    require_once(dirname(__FILE__) . '/_class/parsingCss.class.php');
22 22
 
23 23
     class HTML2PDF
24 24
     {
@@ -40,77 +40,77 @@  discard block
 block discarded – undo
40 40
          */
41 41
         public $parsingHtml = null;
42 42
 
43
-        protected $_langue           = 'fr';        // locale of the messages
44
-        protected $_orientation      = 'P';         // page orientation : Portrait ou Landscape
45
-        protected $_format           = 'A4';        // page format : A4, A3, ...
46
-        protected $_encoding         = '';          // charset encoding
47
-        protected $_unicode          = true;        // means that the input text is unicode (default = true)
48
-
49
-        protected $_testTdInOnepage  = true;        // test of TD that can not take more than one page
50
-        protected $_testIsImage      = true;        // test if the images exist or not
51
-        protected $_testIsDeprecated = false;       // test the deprecated functions
52
-
53
-        protected $_parsePos         = 0;           // position in the parsing
54
-        protected $_tempPos          = 0;           // temporary position for complex table
55
-        protected $_page             = 0;           // current page number
56
-
57
-        protected $_subHtml          = null;        // sub html
58
-        protected $_subPart          = false;       // sub HTML2PDF
59
-        protected $_subHEADER        = array();     // sub action to make the header
60
-        protected $_subFOOTER        = array();     // sub action to make the footer
61
-        protected $_subSTATES        = array();     // array to save some parameters
62
-
63
-        protected $_isSubPart        = false;       // flag : in a sub html2pdf
64
-        protected $_isInThead        = false;       // flag : in a thead
65
-        protected $_isInTfoot        = false;       // flag : in a tfoot
66
-        protected $_isInOverflow     = false;       // flag : in a overflow
67
-        protected $_isInFooter       = false;       // flag : in a footer
68
-        protected $_isInDraw         = null;        // flag : in a draw (svg)
69
-        protected $_isAfterFloat     = false;       // flag : is just after a float
70
-        protected $_isInForm         = false;       // flag : is in a float. false / action of the form
71
-        protected $_isInLink         = '';          // flag : is in a link. empty / href of the link
72
-        protected $_isInParagraph    = false;       // flag : is in a paragraph
73
-        protected $_isForOneLine     = false;       // flag : in a specific sub html2pdf to have the height of the next line
74
-
75
-        protected $_maxX             = 0;           // maximum X of the current zone
76
-        protected $_maxY             = 0;           // maximum Y of the current zone
77
-        protected $_maxE             = 0;           // number of elements in the current zone
78
-        protected $_maxH             = 0;           // maximum height of the line in the current zone
79
-        protected $_maxSave          = array();     // save the maximums of the current zone
80
-        protected $_currentH         = 0;           // height of the current line
81
-
82
-        protected $_defaultLeft      = 0;           // default marges of the page
43
+        protected $_langue           = 'fr'; // locale of the messages
44
+        protected $_orientation      = 'P'; // page orientation : Portrait ou Landscape
45
+        protected $_format           = 'A4'; // page format : A4, A3, ...
46
+        protected $_encoding         = ''; // charset encoding
47
+        protected $_unicode          = true; // means that the input text is unicode (default = true)
48
+
49
+        protected $_testTdInOnepage  = true; // test of TD that can not take more than one page
50
+        protected $_testIsImage      = true; // test if the images exist or not
51
+        protected $_testIsDeprecated = false; // test the deprecated functions
52
+
53
+        protected $_parsePos         = 0; // position in the parsing
54
+        protected $_tempPos          = 0; // temporary position for complex table
55
+        protected $_page             = 0; // current page number
56
+
57
+        protected $_subHtml          = null; // sub html
58
+        protected $_subPart          = false; // sub HTML2PDF
59
+        protected $_subHEADER        = array(); // sub action to make the header
60
+        protected $_subFOOTER        = array(); // sub action to make the footer
61
+        protected $_subSTATES        = array(); // array to save some parameters
62
+
63
+        protected $_isSubPart        = false; // flag : in a sub html2pdf
64
+        protected $_isInThead        = false; // flag : in a thead
65
+        protected $_isInTfoot        = false; // flag : in a tfoot
66
+        protected $_isInOverflow     = false; // flag : in a overflow
67
+        protected $_isInFooter       = false; // flag : in a footer
68
+        protected $_isInDraw         = null; // flag : in a draw (svg)
69
+        protected $_isAfterFloat     = false; // flag : is just after a float
70
+        protected $_isInForm         = false; // flag : is in a float. false / action of the form
71
+        protected $_isInLink         = ''; // flag : is in a link. empty / href of the link
72
+        protected $_isInParagraph    = false; // flag : is in a paragraph
73
+        protected $_isForOneLine     = false; // flag : in a specific sub html2pdf to have the height of the next line
74
+
75
+        protected $_maxX             = 0; // maximum X of the current zone
76
+        protected $_maxY             = 0; // maximum Y of the current zone
77
+        protected $_maxE             = 0; // number of elements in the current zone
78
+        protected $_maxH             = 0; // maximum height of the line in the current zone
79
+        protected $_maxSave          = array(); // save the maximums of the current zone
80
+        protected $_currentH         = 0; // height of the current line
81
+
82
+        protected $_defaultLeft      = 0; // default marges of the page
83 83
         protected $_defaultTop       = 0;
84 84
         protected $_defaultRight     = 0;
85 85
         protected $_defaultBottom    = 0;
86
-        protected $_defaultFont      = null;        // default font to use, is the asked font does not exist
86
+        protected $_defaultFont      = null; // default font to use, is the asked font does not exist
87 87
 
88
-        protected $_margeLeft        = 0;           // current marges of the page
88
+        protected $_margeLeft        = 0; // current marges of the page
89 89
         protected $_margeTop         = 0;
90 90
         protected $_margeRight       = 0;
91 91
         protected $_margeBottom      = 0;
92
-        protected $_marges           = array();     // save the different marges of the current page
93
-        protected $_pageMarges       = array();     // float marges of the current page
94
-        protected $_background       = array();     // background informations
92
+        protected $_marges           = array(); // save the different marges of the current page
93
+        protected $_pageMarges       = array(); // float marges of the current page
94
+        protected $_background       = array(); // background informations
95 95
 
96 96
 
97
-        protected $_firstPage        = true;        // flag : first page
98
-        protected $_defList          = array();     // table to save the stats of the tags UL and OL
97
+        protected $_firstPage        = true; // flag : first page
98
+        protected $_defList          = array(); // table to save the stats of the tags UL and OL
99 99
 
100
-        protected $_lstAnchor        = array();     // list of the anchors
101
-        protected $_lstField         = array();     // list of the fields
102
-        protected $_lstSelect        = array();     // list of the options of the current select
103
-        protected $_previousCall     = null;        // last action called
100
+        protected $_lstAnchor        = array(); // list of the anchors
101
+        protected $_lstField         = array(); // list of the fields
102
+        protected $_lstSelect        = array(); // list of the options of the current select
103
+        protected $_previousCall     = null; // last action called
104 104
 
105
-        protected $_debugActif       = false;       // flag : mode debug is active
106
-        protected $_debugOkUsage     = false;       // flag : the function memory_get_usage exist
107
-        protected $_debugOkPeak      = false;       // flag : the function memory_get_peak_usage exist
108
-        protected $_debugLevel       = 0;           // level in the debug
109
-        protected $_debugStartTime   = 0;           // debug start time
110
-        protected $_debugLastTime    = 0;           // debug stop time
105
+        protected $_debugActif       = false; // flag : mode debug is active
106
+        protected $_debugOkUsage     = false; // flag : the function memory_get_usage exist
107
+        protected $_debugOkPeak      = false; // flag : the function memory_get_peak_usage exist
108
+        protected $_debugLevel       = 0; // level in the debug
109
+        protected $_debugStartTime   = 0; // debug start time
110
+        protected $_debugLastTime    = 0; // debug stop time
111 111
 
112
-        static protected $_subobj    = null;        // object html2pdf prepared in order to accelerate the creation of sub html2pdf
113
-        static protected $_tables    = array();     // static table to prepare the nested html tables
112
+        static protected $_subobj    = null; // object html2pdf prepared in order to accelerate the creation of sub html2pdf
113
+        static protected $_tables    = array(); // static table to prepare the nested html tables
114 114
 
115 115
         /**
116 116
          * class constructor
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
          * @param  array    $marges      Default marges (left, top, right, bottom)
125 125
          * @return HTML2PDF $this
126 126
          */
127
-        public function __construct($orientation = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8))
127
+        public function __construct($orientation = 'P', $format = 'A4', $langue = 'fr', $unicode = true, $encoding = 'UTF-8', $marges = array(5, 5, 5, 8))
128 128
         {
129 129
             // init the page number
130 130
             $this->_page         = 0;
@@ -286,7 +286,7 @@  discard block
 block discarded – undo
286 286
          * @return HTML2PDF $this
287 287
          * @see TCPDF::addFont
288 288
          */
289
-        public function addFont($family, $style='', $file='')
289
+        public function addFont($family, $style = '', $file = '')
290 290
         {
291 291
             $this->pdf->AddFont($family, $style, $file);
292 292
 
@@ -356,18 +356,18 @@  discard block
 block discarded – undo
356 356
             }
357 357
 
358 358
             // complete parameters
359
-            if ($dest===false) $dest = 'I';
360
-            if ($dest===true)  $dest = 'S';
361
-            if ($dest==='')    $dest = 'I';
362
-            if ($name=='')     $name='document.pdf';
359
+            if ($dest === false) $dest = 'I';
360
+            if ($dest === true)  $dest = 'S';
361
+            if ($dest === '')    $dest = 'I';
362
+            if ($name == '')     $name = 'document.pdf';
363 363
 
364 364
             // clean up the destination
365 365
             $dest = strtoupper($dest);
366
-            if (!in_array($dest, array('I', 'D', 'F', 'S', 'FI','FD'))) $dest = 'I';
366
+            if (!in_array($dest, array('I', 'D', 'F', 'S', 'FI', 'FD'))) $dest = 'I';
367 367
 
368 368
             // the name must be a PDF name
369
-            if (strtolower(substr($name, -4))!='.pdf') {
370
-                throw new HTML2PDF_exception(0, 'The output document name "'.$name.'" is not a PDF name');
369
+            if (strtolower(substr($name, -4)) != '.pdf') {
370
+                throw new HTML2PDF_exception(0, 'The output document name "' . $name . '" is not a PDF name');
371 371
             }
372 372
 
373 373
             // call the output of TCPDF
@@ -422,20 +422,20 @@  discard block
 block discarded – undo
422 422
 
423 423
             // extract the content
424 424
             $res = explode('<body', $html);
425
-            if (count($res)<2) return $html;
426
-            $content = '<page'.$res[1];
425
+            if (count($res) < 2) return $html;
426
+            $content = '<page' . $res[1];
427 427
             $content = explode('</body', $content);
428
-            $content = $content[0].'</page>';
428
+            $content = $content[0] . '</page>';
429 429
 
430 430
             // extract the link tags
431 431
             preg_match_all('/<link([^>]*)>/isU', $html, $match);
432 432
             foreach ($match[0] as $src)
433
-                $content = $src.'</link>'.$content;
433
+                $content = $src . '</link>' . $content;
434 434
 
435 435
             // extract the css style tags
436 436
             preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
437 437
             foreach ($match[0] as $src)
438
-                $content = $src.$content;
438
+                $content = $src . $content;
439 439
 
440 440
             return $content;
441 441
         }
@@ -458,7 +458,7 @@  discard block
 block discarded – undo
458 458
 
459 459
             $this->parsingCss->setOnlyLeft();
460 460
 
461
-            $this->_setNewPage($format, $orientation, null, null, ($myLastPageGroup!==null));
461
+            $this->_setNewPage($format, $orientation, null, null, ($myLastPageGroup !== null));
462 462
 
463 463
             $this->_saveMargin(0, 0, $marge);
464 464
             $this->_defList = $defLIST;
@@ -478,9 +478,9 @@  discard block
 block discarded – undo
478 478
          */
479 479
         protected function _vueHTML($content)
480 480
         {
481
-            $content = preg_replace('/<page_header([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue01').' : $1<hr><div$1>', $content);
482
-            $content = preg_replace('/<page_footer([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue02').' : $1<hr><div$1>', $content);
483
-            $content = preg_replace('/<page([^>]*)>/isU', '<hr>'.HTML2PDF_locale::get('vue03').' : $1<hr><div$1>', $content);
481
+            $content = preg_replace('/<page_header([^>]*)>/isU', '<hr>' . HTML2PDF_locale::get('vue01') . ' : $1<hr><div$1>', $content);
482
+            $content = preg_replace('/<page_footer([^>]*)>/isU', '<hr>' . HTML2PDF_locale::get('vue02') . ' : $1<hr><div$1>', $content);
483
+            $content = preg_replace('/<page([^>]*)>/isU', '<hr>' . HTML2PDF_locale::get('vue03') . ' : $1<hr><div$1>', $content);
484 484
             $content = preg_replace('/<\/page([^>]*)>/isU', '</div><hr>', $content);
485 485
             $content = preg_replace('/<bookmark([^>]*)>/isU', '<hr>bookmark : $1<hr>', $content);
486 486
             $content = preg_replace('/<\/bookmark([^>]*)>/isU', '', $content);
@@ -492,11 +492,11 @@  discard block
 block discarded – undo
492 492
             echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
493 493
 <html>
494 494
     <head>
495
-        <title>'.HTML2PDF_locale::get('vue04').' HTML</title>
496
-        <meta http-equiv="Content-Type" content="text/html; charset='.$this->_encoding.'" >
495
+        <title>'.HTML2PDF_locale::get('vue04') . ' HTML</title>
496
+        <meta http-equiv="Content-Type" content="text/html; charset='.$this->_encoding . '" >
497 497
     </head>
498 498
     <body style="padding: 10px; font-size: 10pt;font-family:    Verdana;">
499
-'.$content.'
499
+'.$content . '
500 500
     </body>
501 501
 </html>';
502 502
             exit;
@@ -513,13 +513,13 @@  discard block
 block discarded – undo
513 513
          */
514 514
         protected function _setDefaultMargins($left, $top, $right = null, $bottom = null)
515 515
         {
516
-            if ($right===null)  $right = $left;
517
-            if ($bottom===null) $bottom = 8;
516
+            if ($right === null)  $right = $left;
517
+            if ($bottom === null) $bottom = 8;
518 518
 
519
-            $this->_defaultLeft   = $this->parsingCss->ConvertToMM($left.'mm');
520
-            $this->_defaultTop    = $this->parsingCss->ConvertToMM($top.'mm');
521
-            $this->_defaultRight  = $this->parsingCss->ConvertToMM($right.'mm');
522
-            $this->_defaultBottom = $this->parsingCss->ConvertToMM($bottom.'mm');
519
+            $this->_defaultLeft   = $this->parsingCss->ConvertToMM($left . 'mm');
520
+            $this->_defaultTop    = $this->parsingCss->ConvertToMM($top . 'mm');
521
+            $this->_defaultRight  = $this->parsingCss->ConvertToMM($right . 'mm');
522
+            $this->_defaultBottom = $this->parsingCss->ConvertToMM($bottom . 'mm');
523 523
         }
524 524
 
525 525
         /**
@@ -532,13 +532,13 @@  discard block
 block discarded – undo
532 532
          * @param  integer $curr real position in the html parseur (if break line in the write of a text)
533 533
          * @param  boolean $resetPageNumber
534 534
          */
535
-        protected function _setNewPage($format = null, $orientation = '', $background = null, $curr = null, $resetPageNumber=false)
535
+        protected function _setNewPage($format = null, $orientation = '', $background = null, $curr = null, $resetPageNumber = false)
536 536
         {
537 537
             $this->_firstPage = false;
538 538
 
539 539
             $this->_format = $format ? $format : $this->_format;
540 540
             $this->_orientation = $orientation ? $orientation : $this->_orientation;
541
-            $this->_background = $background!==null ? $background : $this->_background;
541
+            $this->_background = $background !== null ? $background : $this->_background;
542 542
             $this->_maxY = 0;
543 543
             $this->_maxX = 0;
544 544
             $this->_maxH = 0;
@@ -588,9 +588,9 @@  discard block
 block discarded – undo
588 588
         protected function _setMargins()
589 589
         {
590 590
             // prepare the margins
591
-            $this->_margeLeft   = $this->_defaultLeft   + (isset($this->_background['left'])   ? $this->_background['left']   : 0);
592
-            $this->_margeRight  = $this->_defaultRight  + (isset($this->_background['right'])  ? $this->_background['right']  : 0);
593
-            $this->_margeTop    = $this->_defaultTop    + (isset($this->_background['top'])    ? $this->_background['top']    : 0);
591
+            $this->_margeLeft   = $this->_defaultLeft + (isset($this->_background['left']) ? $this->_background['left'] : 0);
592
+            $this->_margeRight  = $this->_defaultRight + (isset($this->_background['right']) ? $this->_background['right'] : 0);
593
+            $this->_margeTop    = $this->_defaultTop + (isset($this->_background['top']) ? $this->_background['top'] : 0);
594 594
             $this->_margeBottom = $this->_defaultBottom + (isset($this->_background['bottom']) ? $this->_background['bottom'] : 0);
595 595
 
596 596
             // set the PDF margins
@@ -599,10 +599,10 @@  discard block
 block discarded – undo
599 599
 
600 600
             // set the float Margins
601 601
             $this->_pageMarges = array();
602
-            if ($this->_isInParagraph!==false) {
603
-                $this->_pageMarges[floor($this->_margeTop*100)] = array($this->_isInParagraph[0], $this->pdf->getW()-$this->_isInParagraph[1]);
602
+            if ($this->_isInParagraph !== false) {
603
+                $this->_pageMarges[floor($this->_margeTop * 100)] = array($this->_isInParagraph[0], $this->pdf->getW() - $this->_isInParagraph[1]);
604 604
             } else {
605
-                $this->_pageMarges[floor($this->_margeTop*100)] = array($this->_margeLeft, $this->pdf->getW()-$this->_margeRight);
605
+                $this->_pageMarges[floor($this->_margeTop * 100)] = array($this->_margeLeft, $this->pdf->getW() - $this->_margeRight);
606 606
             }
607 607
         }
608 608
 
@@ -614,28 +614,28 @@  discard block
 block discarded – undo
614 614
          * @param  boolean $level (true=up, false=down, null=nothing to do)
615 615
          * @return $this
616 616
          */
617
-        protected function _DEBUG_add($name, $level=null)
617
+        protected function _DEBUG_add($name, $level = null)
618 618
         {
619 619
             // if true : UP
620
-            if ($level===true) $this->_debugLevel++;
620
+            if ($level === true) $this->_debugLevel++;
621 621
 
622
-            $name   = str_repeat('  ', $this->_debugLevel). $name.($level===true ? ' Begin' : ($level===false ? ' End' : ''));
622
+            $name = str_repeat('  ', $this->_debugLevel) . $name . ($level === true ? ' Begin' : ($level === false ? ' End' : ''));
623 623
             $time  = microtime(true);
624 624
             $usage = ($this->_debugOkUsage ? memory_get_usage() : 0);
625 625
             $peak  = ($this->_debugOkPeak ? memory_get_peak_usage() : 0);
626 626
 
627 627
             $this->_DEBUG_stepline(
628 628
                 $name,
629
-                number_format(($time - $this->_debugStartTime)*1000, 1, '.', ' ').' ms',
630
-                number_format(($time - $this->_debugLastTime)*1000, 1, '.', ' ').' ms',
631
-                number_format($usage/1024, 1, '.', ' ').' Ko',
632
-                number_format($peak/1024, 1, '.', ' ').' Ko'
629
+                number_format(($time - $this->_debugStartTime) * 1000, 1, '.', ' ') . ' ms',
630
+                number_format(($time - $this->_debugLastTime) * 1000, 1, '.', ' ') . ' ms',
631
+                number_format($usage / 1024, 1, '.', ' ') . ' Ko',
632
+                number_format($peak / 1024, 1, '.', ' ') . ' Ko'
633 633
             );
634 634
 
635 635
             $this->_debugLastTime = $time;
636 636
 
637 637
             // it false : DOWN
638
-            if ($level===false) $this->_debugLevel--;
638
+            if ($level === false) $this->_debugLevel--;
639 639
 
640 640
             return $this;
641 641
         }
@@ -653,13 +653,13 @@  discard block
 block discarded – undo
653 653
          */
654 654
         protected function _DEBUG_stepline($name, $timeTotal, $timeStep, $memoryUsage, $memoryPeak)
655 655
         {
656
-            $txt = str_pad($name, 30, ' ', STR_PAD_RIGHT).
657
-                    str_pad($timeTotal, 12, ' ', STR_PAD_LEFT).
658
-                    str_pad($timeStep, 12, ' ', STR_PAD_LEFT).
659
-                    str_pad($memoryUsage, 15, ' ', STR_PAD_LEFT).
656
+            $txt = str_pad($name, 30, ' ', STR_PAD_RIGHT) .
657
+                    str_pad($timeTotal, 12, ' ', STR_PAD_LEFT) .
658
+                    str_pad($timeStep, 12, ' ', STR_PAD_LEFT) .
659
+                    str_pad($memoryUsage, 15, ' ', STR_PAD_LEFT) .
660 660
                     str_pad($memoryPeak, 15, ' ', STR_PAD_LEFT);
661 661
 
662
-            echo '<pre style="padding:0; margin:0">'.$txt.'</pre>';
662
+            echo '<pre style="padding:0; margin:0">' . $txt . '</pre>';
663 663
         }
664 664
 
665 665
         /**
@@ -671,11 +671,11 @@  discard block
 block discarded – undo
671 671
          */
672 672
         protected function _getMargins($y)
673 673
         {
674
-            $y = floor($y*100);
675
-            $x = array($this->pdf->getlMargin(), $this->pdf->getW()-$this->pdf->getrMargin());
674
+            $y = floor($y * 100);
675
+            $x = array($this->pdf->getlMargin(), $this->pdf->getW() - $this->pdf->getrMargin());
676 676
 
677 677
             foreach ($this->_pageMarges as $mY => $mX)
678
-                if ($mY<=$y) $x = $mX;
678
+                if ($mY <= $y) $x = $mX;
679 679
 
680 680
             return $x;
681 681
         }
@@ -697,18 +697,18 @@  discard block
 block discarded – undo
697 697
             $oldBottom = $this->_getMargins($yBottom);
698 698
 
699 699
             // update the top float margin
700
-            if ($float=='left'  && $oldTop[0]<$xRight) $oldTop[0] = $xRight;
701
-            if ($float=='right' && $oldTop[1]>$xLeft)  $oldTop[1] = $xLeft;
700
+            if ($float == 'left' && $oldTop[0] < $xRight) $oldTop[0] = $xRight;
701
+            if ($float == 'right' && $oldTop[1] > $xLeft)  $oldTop[1] = $xLeft;
702 702
 
703
-            $yTop = floor($yTop*100);
704
-            $yBottom = floor($yBottom*100);
703
+            $yTop = floor($yTop * 100);
704
+            $yBottom = floor($yBottom * 100);
705 705
 
706 706
             // erase all the float margins that are smaller than the new one
707 707
             foreach ($this->_pageMarges as $mY => $mX) {
708
-                if ($mY<$yTop) continue;
709
-                if ($mY>$yBottom) break;
710
-                if ($float=='left' && $this->_pageMarges[$mY][0]<$xRight)  unset($this->_pageMarges[$mY]);
711
-                if ($float=='right' && $this->_pageMarges[$mY][1]>$xLeft) unset($this->_pageMarges[$mY]);
708
+                if ($mY < $yTop) continue;
709
+                if ($mY > $yBottom) break;
710
+                if ($float == 'left' && $this->_pageMarges[$mY][0] < $xRight)  unset($this->_pageMarges[$mY]);
711
+                if ($float == 'right' && $this->_pageMarges[$mY][1] > $xLeft) unset($this->_pageMarges[$mY]);
712 712
             }
713 713
 
714 714
             // save the new Top and Bottom margins
@@ -740,7 +740,7 @@  discard block
 block discarded – undo
740 740
 
741 741
             // prepare for float margins
742 742
             $this->_pageMarges = array();
743
-            $this->_pageMarges[floor($mt*100)] = array($ml, $this->pdf->getW()-$mr);
743
+            $this->_pageMarges[floor($mt * 100)] = array($ml, $this->pdf->getW() - $mr);
744 744
         }
745 745
 
746 746
         /**
@@ -760,7 +760,7 @@  discard block
 block discarded – undo
760 760
                 $ml = $this->_margeLeft;
761 761
                 $mt = 0;
762 762
                 $mr = $this->_margeRight;
763
-                $mP = array($mt => array($ml, $this->pdf->getW()-$mr));
763
+                $mP = array($mt => array($ml, $this->pdf->getW() - $mr));
764 764
             }
765 765
 
766 766
             $this->pdf->SetMargins($ml, $mt, $mr);
@@ -865,7 +865,7 @@  discard block
 block discarded – undo
865 865
             // get the margins for the current line
866 866
             list($lx, $rx) = $this->_getMargins($this->pdf->getY());
867 867
             $this->pdf->setX($lx);
868
-            $wMax = $rx-$lx;
868
+            $wMax = $rx - $lx;
869 869
             $this->_currentH = 0;
870 870
 
871 871
             // if subPart => return because align left
@@ -877,22 +877,22 @@  discard block
 block discarded – undo
877 877
             // create the sub object
878 878
             $sub = null;
879 879
             $this->_createSubHTML($sub);
880
-            $sub->_saveMargin(0, 0, $sub->pdf->getW()-$wMax);
880
+            $sub->_saveMargin(0, 0, $sub->pdf->getW() - $wMax);
881 881
             $sub->_isForOneLine = true;
882 882
             $sub->_parsePos = $this->_parsePos;
883 883
             $sub->parsingHtml->code = $this->parsingHtml->code;
884 884
 
885 885
             // if $curr => adapt the current position of the parsing
886
-            if ($curr!==null && $sub->parsingHtml->code[$this->_parsePos]['name']=='write') {
886
+            if ($curr !== null && $sub->parsingHtml->code[$this->_parsePos]['name'] == 'write') {
887 887
                 $txt = $sub->parsingHtml->code[$this->_parsePos]['param']['txt'];
888 888
                 $txt = str_replace('[[page_cu]]', $sub->pdf->getMyNumPage($this->_page), $txt);
889
-                $sub->parsingHtml->code[$this->_parsePos]['param']['txt'] = substr($txt, $curr+1);
889
+                $sub->parsingHtml->code[$this->_parsePos]['param']['txt'] = substr($txt, $curr + 1);
890 890
             } else
891 891
                 $sub->_parsePos++;
892 892
 
893 893
             // for each element of the parsing => load the action
894 894
             $res = null;
895
-            for ($sub->_parsePos; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
895
+            for ($sub->_parsePos; $sub->_parsePos < count($sub->parsingHtml->code); $sub->_parsePos++) {
896 896
                 $action = $sub->parsingHtml->code[$sub->_parsePos];
897 897
                 $res = $sub->_executeAction($action);
898 898
                 if (!$res) break;
@@ -900,16 +900,16 @@  discard block
 block discarded – undo
900 900
 
901 901
             $w = $sub->_maxX; // max width
902 902
             $h = $sub->_maxH; // max height
903
-            $e = ($res===null ? $sub->_maxE : 0); // maxnumber of elemets on the line
903
+            $e = ($res === null ? $sub->_maxE : 0); // maxnumber of elemets on the line
904 904
 
905 905
             // destroy the sub HTML
906 906
             $this->_destroySubHTML($sub);
907 907
 
908 908
             // adapt the start of the line, depending on the text-align
909
-            if ($this->parsingCss->value['text-align']=='center')
910
-                $this->pdf->setX(($rx+$this->pdf->getX()-$w)*0.5-0.01);
911
-            else if ($this->parsingCss->value['text-align']=='right')
912
-                $this->pdf->setX($rx-$w-0.01);
909
+            if ($this->parsingCss->value['text-align'] == 'center')
910
+                $this->pdf->setX(($rx + $this->pdf->getX() - $w) * 0.5 - 0.01);
911
+            else if ($this->parsingCss->value['text-align'] == 'right')
912
+                $this->pdf->setX($rx - $w - 0.01);
913 913
             else
914 914
                 $this->pdf->setX($lx);
915 915
 
@@ -917,8 +917,8 @@  discard block
 block discarded – undo
917 917
             $this->_currentH = $h;
918 918
 
919 919
             // if justify => set the word spacing
920
-            if ($this->parsingCss->value['text-align']=='justify' && $e>1) {
921
-                $this->pdf->setWordSpacing(($wMax-$w)/($e-1));
920
+            if ($this->parsingCss->value['text-align'] == 'justify' && $e > 1) {
921
+                $this->pdf->setWordSpacing(($wMax - $w) / ($e - 1));
922 922
             } else {
923 923
                 $this->pdf->setWordSpacing(0);
924 924
             }
@@ -940,7 +940,7 @@  discard block
 block discarded – undo
940 940
                                         $this->_langue,
941 941
                                         $this->_unicode,
942 942
                                         $this->_encoding,
943
-                                        array($this->_defaultLeft,$this->_defaultTop,$this->_defaultRight,$this->_defaultBottom)
943
+                                        array($this->_defaultLeft, $this->_defaultTop, $this->_defaultRight, $this->_defaultBottom)
944 944
                                     );
945 945
 
946 946
             // init
@@ -965,21 +965,21 @@  discard block
 block discarded – undo
965 965
          * @param  &HTML2PDF $subHtml sub HTML2PDF to create
966 966
          * @param  integer   $cellmargin if in a TD : cellmargin of this td
967 967
          */
968
-        protected function _createSubHTML(&$subHtml, $cellmargin=0)
968
+        protected function _createSubHTML(&$subHtml, $cellmargin = 0)
969 969
         {
970 970
             // prepare the subObject, if never prepare before
971
-            if (HTML2PDF::$_subobj===null) {
971
+            if (HTML2PDF::$_subobj === null) {
972 972
                 $this->_prepareSubObj();
973 973
             }
974 974
 
975 975
             // calculate the width to use
976 976
             if ($this->parsingCss->value['width']) {
977
-                $marge = $cellmargin*2;
978
-                $marge+= $this->parsingCss->value['padding']['l'] + $this->parsingCss->value['padding']['r'];
979
-                $marge+= $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['border']['r']['width'];
977
+                $marge = $cellmargin * 2;
978
+                $marge += $this->parsingCss->value['padding']['l'] + $this->parsingCss->value['padding']['r'];
979
+                $marge += $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['border']['r']['width'];
980 980
                 $marge = $this->pdf->getW() - $this->parsingCss->value['width'] + $marge;
981 981
             } else {
982
-                $marge = $this->_margeLeft+$this->_margeRight;
982
+                $marge = $this->_margeLeft + $this->_margeRight;
983 983
             }
984 984
 
985 985
             // BUGFIX : we have to call the method, because of a bug in php 5.1.6
@@ -1020,29 +1020,29 @@  discard block
 block discarded – undo
1020 1020
          */
1021 1021
         protected function _listeArab2Rom($nbArabic)
1022 1022
         {
1023
-            $nbBaseTen    = array('I','X','C','M');
1024
-            $nbBaseFive    = array('V','L','D');
1025
-            $nbRoman    = '';
1023
+            $nbBaseTen = array('I', 'X', 'C', 'M');
1024
+            $nbBaseFive = array('V', 'L', 'D');
1025
+            $nbRoman = '';
1026 1026
 
1027
-            if ($nbArabic<1)    return $nbArabic;
1028
-            if ($nbArabic>3999) return $nbArabic;
1027
+            if ($nbArabic < 1)    return $nbArabic;
1028
+            if ($nbArabic > 3999) return $nbArabic;
1029 1029
 
1030
-            for ($i=3; $i>=0 ; $i--) {
1031
-                $chiffre=floor($nbArabic/pow(10, $i));
1032
-                if ($chiffre>=1) {
1033
-                    $nbArabic=$nbArabic-$chiffre*pow(10, $i);
1034
-                    if ($chiffre<=3) {
1035
-                        for ($j=$chiffre; $j>=1; $j--) {
1036
-                            $nbRoman=$nbRoman.$nbBaseTen[$i];
1030
+            for ($i = 3; $i >= 0; $i--) {
1031
+                $chiffre = floor($nbArabic / pow(10, $i));
1032
+                if ($chiffre >= 1) {
1033
+                    $nbArabic = $nbArabic - $chiffre * pow(10, $i);
1034
+                    if ($chiffre <= 3) {
1035
+                        for ($j = $chiffre; $j >= 1; $j--) {
1036
+                            $nbRoman = $nbRoman . $nbBaseTen[$i];
1037 1037
                         }
1038
-                    } else if ($chiffre==9) {
1039
-                        $nbRoman=$nbRoman.$nbBaseTen[$i].$nbBaseTen[$i+1];
1040
-                    } else if ($chiffre==4) {
1041
-                    $nbRoman=$nbRoman.$nbBaseTen[$i].$nbBaseFive[$i];
1038
+                    } else if ($chiffre == 9) {
1039
+                        $nbRoman = $nbRoman . $nbBaseTen[$i] . $nbBaseTen[$i + 1];
1040
+                    } else if ($chiffre == 4) {
1041
+                    $nbRoman = $nbRoman . $nbBaseTen[$i] . $nbBaseFive[$i];
1042 1042
                     } else {
1043
-                        $nbRoman=$nbRoman.$nbBaseFive[$i];
1044
-                        for ($j=$chiffre-5; $j>=1; $j--) {
1045
-                            $nbRoman=$nbRoman.$nbBaseTen[$i];
1043
+                        $nbRoman = $nbRoman . $nbBaseFive[$i];
1044
+                        for ($j = $chiffre - 5; $j >= 1; $j--) {
1045
+                            $nbRoman = $nbRoman . $nbBaseTen[$i];
1046 1046
                         }
1047 1047
                     }
1048 1048
                 }
@@ -1057,7 +1057,7 @@  discard block
 block discarded – undo
1057 1057
          */
1058 1058
         protected function _listeAddLi()
1059 1059
         {
1060
-            $this->_defList[count($this->_defList)-1]['nb']++;
1060
+            $this->_defList[count($this->_defList) - 1]['nb']++;
1061 1061
         }
1062 1062
 
1063 1063
         /**
@@ -1090,14 +1090,14 @@  discard block
 block discarded – undo
1090 1090
          */
1091 1091
         protected function _listeGetLi()
1092 1092
         {
1093
-            $im = $this->_defList[count($this->_defList)-1]['img'];
1094
-            $st = $this->_defList[count($this->_defList)-1]['style'];
1095
-            $nb = $this->_defList[count($this->_defList)-1]['nb'];
1096
-            $up = (substr($st, 0, 6)=='upper-');
1093
+            $im = $this->_defList[count($this->_defList) - 1]['img'];
1094
+            $st = $this->_defList[count($this->_defList) - 1]['style'];
1095
+            $nb = $this->_defList[count($this->_defList) - 1]['nb'];
1096
+            $up = (substr($st, 0, 6) == 'upper-');
1097 1097
 
1098 1098
             if ($im) return array(false, false, $im);
1099 1099
 
1100
-            switch($st)
1100
+            switch ($st)
1101 1101
             {
1102 1102
                 case 'none':
1103 1103
                     return array('helvetica', true, ' ');
@@ -1105,22 +1105,22 @@  discard block
 block discarded – undo
1105 1105
                 case 'upper-alpha':
1106 1106
                 case 'lower-alpha':
1107 1107
                     $str = '';
1108
-                    while ($nb>26) {
1109
-                        $str = chr(96+$nb%26).$str;
1110
-                        $nb = floor($nb/26);
1108
+                    while ($nb > 26) {
1109
+                        $str = chr(96 + $nb % 26) . $str;
1110
+                        $nb = floor($nb / 26);
1111 1111
                     }
1112
-                    $str = chr(96+$nb).$str;
1112
+                    $str = chr(96 + $nb) . $str;
1113 1113
 
1114
-                    return array('helvetica', false, ($up ? strtoupper($str) : $str).'.');
1114
+                    return array('helvetica', false, ($up ? strtoupper($str) : $str) . '.');
1115 1115
 
1116 1116
                 case 'upper-roman':
1117 1117
                 case 'lower-roman':
1118 1118
                     $str = $this->_listeArab2Rom($nb);
1119 1119
 
1120
-                    return array('helvetica', false, ($up ? strtoupper($str) : $str).'.');
1120
+                    return array('helvetica', false, ($up ? strtoupper($str) : $str) . '.');
1121 1121
 
1122 1122
                 case 'decimal':
1123
-                    return array('helvetica', false, $nb.'.');
1123
+                    return array('helvetica', false, $nb . '.');
1124 1124
 
1125 1125
                 case 'square':
1126 1126
                     return array('zapfdingbats', true, chr(110));
@@ -1160,7 +1160,7 @@  discard block
 block discarded – undo
1160 1160
             if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) $style = '';
1161 1161
 
1162 1162
             if (!$style) {
1163
-                if ($type=='ul')    $style = 'disc';
1163
+                if ($type == 'ul')    $style = 'disc';
1164 1164
                 else                $style = 'decimal';
1165 1165
             }
1166 1166
 
@@ -1176,7 +1176,7 @@  discard block
 block discarded – undo
1176 1176
         protected function _listeDelLevel()
1177 1177
         {
1178 1178
             if (count($this->_defList)) {
1179
-                unset($this->_defList[count($this->_defList)-1]);
1179
+                unset($this->_defList[count($this->_defList) - 1]);
1180 1180
                 $this->_defList = array_values($this->_defList);
1181 1181
             }
1182 1182
         }
@@ -1189,7 +1189,7 @@  discard block
 block discarded – undo
1189 1189
         protected function _makeHTMLcode()
1190 1190
         {
1191 1191
             // foreach elements of the parsing
1192
-            for ($this->_parsePos=0; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
1192
+            for ($this->_parsePos = 0; $this->_parsePos < count($this->parsingHtml->code); $this->_parsePos++) {
1193 1193
 
1194 1194
                 // get the action to do
1195 1195
                 $action = $this->parsingHtml->code[$this->_parsePos];
@@ -1207,7 +1207,7 @@  discard block
 block discarded – undo
1207 1207
                     $this->_tempPos = $this->_parsePos;
1208 1208
 
1209 1209
                     // foreach elements, while we are in the opened tag
1210
-                    while (isset($this->parsingHtml->code[$this->_tempPos]) && !($this->parsingHtml->code[$this->_tempPos]['name']==$tagOpen && $this->parsingHtml->code[$this->_tempPos]['close'])) {
1210
+                    while (isset($this->parsingHtml->code[$this->_tempPos]) && !($this->parsingHtml->code[$this->_tempPos]['name'] == $tagOpen && $this->parsingHtml->code[$this->_tempPos]['close'])) {
1211 1211
                         // make the action
1212 1212
                         $this->_executeAction($this->parsingHtml->code[$this->_tempPos]);
1213 1213
                         $this->_tempPos++;
@@ -1236,13 +1236,13 @@  discard block
 block discarded – undo
1236 1236
         protected function _executeAction($action)
1237 1237
         {
1238 1238
             // name of the action
1239
-            $fnc = ($action['close'] ? '_tag_close_' : '_tag_open_').strtoupper($action['name']);
1239
+            $fnc = ($action['close'] ? '_tag_close_' : '_tag_open_') . strtoupper($action['name']);
1240 1240
 
1241 1241
             // parameters of the action
1242 1242
             $param = $action['param'];
1243 1243
 
1244 1244
             // if it the first action of the first page, and if it is not a open tag of PAGE => create the new page
1245
-            if ($fnc!='_tag_open_PAGE' && $this->_firstPage) {
1245
+            if ($fnc != '_tag_open_PAGE' && $this->_firstPage) {
1246 1246
                 $this->_setNewPage();
1247 1247
             }
1248 1248
 
@@ -1270,10 +1270,10 @@  discard block
 block discarded – undo
1270 1270
          */
1271 1271
         protected function _getElementY($h)
1272 1272
         {
1273
-            if ($this->_subPart || $this->_isSubPart || !$this->_currentH || $this->_currentH<$h)
1273
+            if ($this->_subPart || $this->_isSubPart || !$this->_currentH || $this->_currentH < $h)
1274 1274
                 return 0;
1275 1275
 
1276
-            return ($this->_currentH-$h)*0.8;
1276
+            return ($this->_currentH - $h) * 0.8;
1277 1277
         }
1278 1278
 
1279 1279
         /**
@@ -1286,7 +1286,7 @@  discard block
 block discarded – undo
1286 1286
         protected function _makeBreakLine($h, $curr = null)
1287 1287
         {
1288 1288
             if ($h) {
1289
-                if (($this->pdf->getY()+$h<$this->pdf->getH() - $this->pdf->getbMargin()) || $this->_isInOverflow || $this->_isInFooter)
1289
+                if (($this->pdf->getY() + $h < $this->pdf->getH() - $this->pdf->getbMargin()) || $this->_isInOverflow || $this->_isInFooter)
1290 1290
                     $this->_setNewLine($h, $curr);
1291 1291
                 else
1292 1292
                     $this->_setNewPage(null, '', null, $curr);
@@ -1306,14 +1306,14 @@  discard block
 block discarded – undo
1306 1306
          * @param  boolean $subLi if true=image of a list
1307 1307
          * @return boolean depending on "isForOneLine"
1308 1308
          */
1309
-        protected function _drawImage($src, $subLi=false)
1309
+        protected function _drawImage($src, $subLi = false)
1310 1310
         {
1311 1311
             // get the size of the image
1312 1312
             // WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
1313
-            $infos=@getimagesize($src);
1313
+            $infos = @getimagesize($src);
1314 1314
 
1315 1315
             // if the image does not exist, or can not be loaded
1316
-            if (count($infos)<2) {
1316
+            if (count($infos) < 2) {
1317 1317
                 // if the test is activ => exception
1318 1318
                 if ($this->_testIsImage) {
1319 1319
                     throw new HTML2PDF_exception(6, $src);
@@ -1325,8 +1325,8 @@  discard block
 block discarded – undo
1325 1325
             }
1326 1326
 
1327 1327
             // convert the size of the image in the unit of the PDF
1328
-            $imageWidth = $infos[0]/$this->pdf->getK();
1329
-            $imageHeight = $infos[1]/$this->pdf->getK();
1328
+            $imageWidth = $infos[0] / $this->pdf->getK();
1329
+            $imageHeight = $infos[1] / $this->pdf->getK();
1330 1330
 
1331 1331
             // calculate the size from the css style
1332 1332
             if ($this->parsingCss->value['width'] && $this->parsingCss->value['height']) {
@@ -1334,14 +1334,14 @@  discard block
 block discarded – undo
1334 1334
                 $h = $this->parsingCss->value['height'];
1335 1335
             } else if ($this->parsingCss->value['width']) {
1336 1336
                 $w = $this->parsingCss->value['width'];
1337
-                $h = $imageHeight*$w/$imageWidth;
1337
+                $h = $imageHeight * $w / $imageWidth;
1338 1338
             } else if ($this->parsingCss->value['height']) {
1339 1339
                 $h = $this->parsingCss->value['height'];
1340
-                $w = $imageWidth*$h/$imageHeight;
1340
+                $w = $imageWidth * $h / $imageHeight;
1341 1341
             } else {
1342 1342
                 // convert px to pt
1343
-                $w = 72./96.*$imageWidth;
1344
-                $h = 72./96.*$imageHeight;
1343
+                $w = 72. / 96. * $imageWidth;
1344
+                $h = 72. / 96. * $imageHeight;
1345 1345
             }
1346 1346
 
1347 1347
             // are we in a float
@@ -1360,7 +1360,7 @@  discard block
 block discarded – undo
1360 1360
             $y = $this->pdf->getY();
1361 1361
 
1362 1362
             // if the image can not be put on the current line => new line
1363
-            if (!$float && ($x + $w>$this->pdf->getW() - $this->pdf->getrMargin()) && $this->_maxH) {
1363
+            if (!$float && ($x + $w > $this->pdf->getW() - $this->pdf->getrMargin()) && $this->_maxH) {
1364 1364
                 if ($this->_isForOneLine) {
1365 1365
                     return false;
1366 1366
                 }
@@ -1375,7 +1375,7 @@  discard block
 block discarded – undo
1375 1375
             }
1376 1376
 
1377 1377
             // if the image can not be put on the current page
1378
-            if (($y + $h>$this->pdf->getH() - $this->pdf->getbMargin()) && !$this->_isInOverflow) {
1378
+            if (($y + $h > $this->pdf->getH() - $this->pdf->getbMargin()) && !$this->_isInOverflow) {
1379 1379
                 // new page
1380 1380
                 $this->_setNewPage();
1381 1381
 
@@ -1385,17 +1385,17 @@  discard block
 block discarded – undo
1385 1385
             }
1386 1386
 
1387 1387
             // correction for display the image of a list
1388
-            $hT = 0.80*$this->parsingCss->value['font-size'];
1389
-            if ($subLi && $h<$hT) {
1390
-                $y+=($hT-$h);
1388
+            $hT = 0.80 * $this->parsingCss->value['font-size'];
1389
+            if ($subLi && $h < $hT) {
1390
+                $y += ($hT - $h);
1391 1391
             }
1392 1392
 
1393 1393
             // add the margin top
1394
-            $yc = $y-$this->parsingCss->value['margin']['t'];
1394
+            $yc = $y - $this->parsingCss->value['margin']['t'];
1395 1395
 
1396 1396
             // get the width and the position of the parent
1397 1397
             $old = $this->parsingCss->getOldValues();
1398
-            if ( $old['width']) {
1398
+            if ($old['width']) {
1399 1399
                 $parentWidth = $old['width'];
1400 1400
                 $parentX = $x;
1401 1401
             } else {
@@ -1407,12 +1407,12 @@  discard block
 block discarded – undo
1407 1407
             if ($float) {
1408 1408
                 list($lx, $rx) = $this->_getMargins($yc);
1409 1409
                 $parentX = $lx;
1410
-                $parentWidth = $rx-$lx;
1410
+                $parentWidth = $rx - $lx;
1411 1411
             }
1412 1412
 
1413 1413
             // calculate the position of the image, if align to the right
1414
-            if ($parentWidth>$w && $float!='left') {
1415
-                if ($float=='right' || $this->parsingCss->value['text-align']=='li_right')    $x = $parentX + $parentWidth - $w-$this->parsingCss->value['margin']['r']-$this->parsingCss->value['margin']['l'];
1414
+            if ($parentWidth > $w && $float != 'left') {
1415
+                if ($float == 'right' || $this->parsingCss->value['text-align'] == 'li_right')    $x = $parentX + $parentWidth - $w - $this->parsingCss->value['margin']['r'] - $this->parsingCss->value['margin']['l'];
1416 1416
             }
1417 1417
 
1418 1418
             // display the image
@@ -1427,39 +1427,39 @@  discard block
 block discarded – undo
1427 1427
             }
1428 1428
 
1429 1429
             // apply the margins
1430
-            $x-= $this->parsingCss->value['margin']['l'];
1431
-            $y-= $this->parsingCss->value['margin']['t'];
1432
-            $w+= $this->parsingCss->value['margin']['l'] + $this->parsingCss->value['margin']['r'];
1433
-            $h+= $this->parsingCss->value['margin']['t'] + $this->parsingCss->value['margin']['b'];
1430
+            $x -= $this->parsingCss->value['margin']['l'];
1431
+            $y -= $this->parsingCss->value['margin']['t'];
1432
+            $w += $this->parsingCss->value['margin']['l'] + $this->parsingCss->value['margin']['r'];
1433
+            $h += $this->parsingCss->value['margin']['t'] + $this->parsingCss->value['margin']['b'];
1434 1434
 
1435
-            if ($float=='left') {
1435
+            if ($float == 'left') {
1436 1436
                 // save the current max
1437
-                $this->_maxX = max($this->_maxX, $x+$w);
1438
-                $this->_maxY = max($this->_maxY, $y+$h);
1437
+                $this->_maxX = max($this->_maxX, $x + $w);
1438
+                $this->_maxY = max($this->_maxY, $y + $h);
1439 1439
 
1440 1440
                 // add the image to the margins
1441
-                $this->_addMargins($float, $x, $y, $x+$w, $y+$h);
1441
+                $this->_addMargins($float, $x, $y, $x + $w, $y + $h);
1442 1442
 
1443 1443
                 // get the new position
1444 1444
                 list($lx, $rx) = $this->_getMargins($yc);
1445 1445
                 $this->pdf->setXY($lx, $yc);
1446
-            } else if ($float=='right') {
1446
+            } else if ($float == 'right') {
1447 1447
                 // save the current max. We don't save the X because it is not the real max of the line
1448
-                $this->_maxY = max($this->_maxY, $y+$h);
1448
+                $this->_maxY = max($this->_maxY, $y + $h);
1449 1449
 
1450 1450
                 // add the image to the margins
1451
-                $this->_addMargins($float, $x, $y, $x+$w, $y+$h);
1451
+                $this->_addMargins($float, $x, $y, $x + $w, $y + $h);
1452 1452
 
1453 1453
                 // get the new position
1454 1454
                 list($lx, $rx) = $this->_getMargins($yc);
1455 1455
                 $this->pdf->setXY($lx, $yc);
1456 1456
             } else {
1457 1457
                 // set the new position at the end of the image
1458
-                $this->pdf->setX($x+$w);
1458
+                $this->pdf->setX($x + $w);
1459 1459
 
1460 1460
                 // save the current max
1461
-                $this->_maxX = max($this->_maxX, $x+$w);
1462
-                $this->_maxY = max($this->_maxY, $y+$h);
1461
+                $this->_maxX = max($this->_maxX, $x + $w);
1462
+                $this->_maxY = max($this->_maxY, $y + $h);
1463 1463
                 $this->_maxH = max($this->_maxH, $h);
1464 1464
             }
1465 1465
 
@@ -1483,13 +1483,13 @@  discard block
 block discarded – undo
1483 1483
         protected function _drawRectangle($x, $y, $w, $h, $border, $padding, $margin, $background)
1484 1484
         {
1485 1485
             // if we are in a subpart or if height is null => return false
1486
-            if ($this->_subPart || $this->_isSubPart || $h===null) return false;
1486
+            if ($this->_subPart || $this->_isSubPart || $h === null) return false;
1487 1487
 
1488 1488
             // add the margin
1489
-            $x+= $margin;
1490
-            $y+= $margin;
1491
-            $w-= $margin*2;
1492
-            $h-= $margin*2;
1489
+            $x += $margin;
1490
+            $y += $margin;
1491
+            $w -= $margin * 2;
1492
+            $h -= $margin * 2;
1493 1493
 
1494 1494
             // get the radius of the border
1495 1495
             $outTL = $border['radius']['tl'];
@@ -1510,32 +1510,32 @@  discard block
 block discarded – undo
1510 1510
             $inBL = $outBL;
1511 1511
 
1512 1512
             if (is_array($inTL)) {
1513
-                $inTL[0]-= $border['l']['width'];
1514
-                $inTL[1]-= $border['t']['width'];
1513
+                $inTL[0] -= $border['l']['width'];
1514
+                $inTL[1] -= $border['t']['width'];
1515 1515
             }
1516 1516
             if (is_array($inTR)) {
1517
-                $inTR[0]-= $border['r']['width'];
1518
-                $inTR[1]-= $border['t']['width'];
1517
+                $inTR[0] -= $border['r']['width'];
1518
+                $inTR[1] -= $border['t']['width'];
1519 1519
             }
1520 1520
             if (is_array($inBR)) {
1521
-                $inBR[0]-= $border['r']['width'];
1522
-                $inBR[1]-= $border['b']['width'];
1521
+                $inBR[0] -= $border['r']['width'];
1522
+                $inBR[1] -= $border['b']['width'];
1523 1523
             }
1524 1524
             if (is_array($inBL)) {
1525
-                $inBL[0]-= $border['l']['width'];
1526
-                $inBL[1]-= $border['b']['width'];
1525
+                $inBL[0] -= $border['l']['width'];
1526
+                $inBL[1] -= $border['b']['width'];
1527 1527
             }
1528 1528
 
1529
-            if ($inTL[0]<=0 || $inTL[1]<=0) $inTL = null;
1530
-            if ($inTR[0]<=0 || $inTR[1]<=0) $inTR = null;
1531
-            if ($inBR[0]<=0 || $inBR[1]<=0) $inBR = null;
1532
-            if ($inBL[0]<=0 || $inBL[1]<=0) $inBL = null;
1529
+            if ($inTL[0] <= 0 || $inTL[1] <= 0) $inTL = null;
1530
+            if ($inTR[0] <= 0 || $inTR[1] <= 0) $inTR = null;
1531
+            if ($inBR[0] <= 0 || $inBR[1] <= 0) $inBR = null;
1532
+            if ($inBL[0] <= 0 || $inBL[1] <= 0) $inBL = null;
1533 1533
 
1534 1534
             // prepare the background color
1535 1535
             $pdfStyle = '';
1536 1536
             if ($background['color']) {
1537 1537
                 $this->pdf->setFillColorArray($background['color']);
1538
-                $pdfStyle.= 'F';
1538
+                $pdfStyle .= 'F';
1539 1539
             }
1540 1540
 
1541 1541
             // if we have a background to fill => fill it with a path (because of the radius)
@@ -1548,8 +1548,8 @@  discard block
 block discarded – undo
1548 1548
             // prepare the background image
1549 1549
             if ($background['image']) {
1550 1550
                 $iName      = $background['image'];
1551
-                $iPosition  = $background['position']!==null ? $background['position'] : array(0, 0);
1552
-                $iRepeat    = $background['repeat']!==null   ? $background['repeat']   : array(true, true);
1551
+                $iPosition  = $background['position'] !== null ? $background['position'] : array(0, 0);
1552
+                $iRepeat    = $background['repeat'] !== null ? $background['repeat'] : array(true, true);
1553 1553
 
1554 1554
                 // size of the background without the borders
1555 1555
                 $bX = $x;
@@ -1558,76 +1558,76 @@  discard block
 block discarded – undo
1558 1558
                 $bH = $h;
1559 1559
 
1560 1560
                 if ($border['b']['width']) {
1561
-                    $bH-= $border['b']['width'];
1561
+                    $bH -= $border['b']['width'];
1562 1562
                 }
1563 1563
                 if ($border['l']['width']) {
1564
-                    $bW-= $border['l']['width'];
1565
-                    $bX+= $border['l']['width'];
1564
+                    $bW -= $border['l']['width'];
1565
+                    $bX += $border['l']['width'];
1566 1566
                 }
1567 1567
                 if ($border['t']['width']) {
1568
-                    $bH-= $border['t']['width'];
1569
-                    $bY+= $border['t']['width'];
1568
+                    $bH -= $border['t']['width'];
1569
+                    $bY += $border['t']['width'];
1570 1570
                 }
1571 1571
                 if ($border['r']['width']) {
1572
-                    $bW-= $border['r']['width'];
1572
+                    $bW -= $border['r']['width'];
1573 1573
                 }
1574 1574
 
1575 1575
                 // get the size of the image
1576 1576
                 // WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
1577
-                $imageInfos=@getimagesize($iName);
1577
+                $imageInfos = @getimagesize($iName);
1578 1578
 
1579 1579
                 // if the image can not be loaded
1580
-                if (count($imageInfos)<2) {
1580
+                if (count($imageInfos) < 2) {
1581 1581
                     if ($this->_testIsImage) {
1582 1582
                         throw new HTML2PDF_exception(6, $iName);
1583 1583
                     }
1584 1584
                 } else {
1585 1585
                     // convert the size of the image from pixel to the unit of the PDF
1586
-                    $imageWidth    = 72./96.*$imageInfos[0]/$this->pdf->getK();
1587
-                    $imageHeight    = 72./96.*$imageInfos[1]/$this->pdf->getK();
1586
+                    $imageWidth = 72. / 96. * $imageInfos[0] / $this->pdf->getK();
1587
+                    $imageHeight = 72. / 96. * $imageInfos[1] / $this->pdf->getK();
1588 1588
 
1589 1589
                     // prepare the position of the backgroung
1590 1590
                     if ($iRepeat[0]) $iPosition[0] = $bX;
1591
-                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[0], $match)) $iPosition[0] = $bX + $match[1]*($bW-$imageWidth)/100;
1592
-                    else $iPosition[0] = $bX+$iPosition[0];
1591
+                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[0], $match)) $iPosition[0] = $bX + $match[1] * ($bW - $imageWidth) / 100;
1592
+                    else $iPosition[0] = $bX + $iPosition[0];
1593 1593
 
1594 1594
                     if ($iRepeat[1]) $iPosition[1] = $bY;
1595
-                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[1], $match)) $iPosition[1] = $bY + $match[1]*($bH-$imageHeight)/100;
1596
-                    else $iPosition[1] = $bY+$iPosition[1];
1595
+                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[1], $match)) $iPosition[1] = $bY + $match[1] * ($bH - $imageHeight) / 100;
1596
+                    else $iPosition[1] = $bY + $iPosition[1];
1597 1597
 
1598 1598
                     $imageXmin = $bX;
1599
-                    $imageXmax = $bX+$bW;
1599
+                    $imageXmax = $bX + $bW;
1600 1600
                     $imageYmin = $bY;
1601
-                    $imageYmax = $bY+$bH;
1601
+                    $imageYmax = $bY + $bH;
1602 1602
 
1603 1603
                     if (!$iRepeat[0] && !$iRepeat[1]) {
1604
-                        $imageXmin =     $iPosition[0]; $imageXmax =     $iPosition[0]+$imageWidth;
1605
-                        $imageYmin =     $iPosition[1]; $imageYmax =     $iPosition[1]+$imageHeight;
1604
+                        $imageXmin = $iPosition[0]; $imageXmax = $iPosition[0] + $imageWidth;
1605
+                        $imageYmin = $iPosition[1]; $imageYmax = $iPosition[1] + $imageHeight;
1606 1606
                     } else if ($iRepeat[0] && !$iRepeat[1]) {
1607
-                        $imageYmin =     $iPosition[1]; $imageYmax =     $iPosition[1]+$imageHeight;
1607
+                        $imageYmin = $iPosition[1]; $imageYmax = $iPosition[1] + $imageHeight;
1608 1608
                     } else if (!$iRepeat[0] && $iRepeat[1]) {
1609
-                        $imageXmin =     $iPosition[0]; $imageXmax =     $iPosition[0]+$imageWidth;
1609
+                        $imageXmin = $iPosition[0]; $imageXmax = $iPosition[0] + $imageWidth;
1610 1610
                     }
1611 1611
 
1612 1612
                     // build the path to display the image (because of radius)
1613 1613
                     $this->pdf->clippingPathStart($bX, $bY, $bW, $bH, $inTL, $inTR, $inBL, $inBR);
1614 1614
 
1615 1615
                     // repeat the image
1616
-                    for ($iY=$imageYmin; $iY<$imageYmax; $iY+=$imageHeight) {
1617
-                        for ($iX=$imageXmin; $iX<$imageXmax; $iX+=$imageWidth) {
1616
+                    for ($iY = $imageYmin; $iY < $imageYmax; $iY += $imageHeight) {
1617
+                        for ($iX = $imageXmin; $iX < $imageXmax; $iX += $imageWidth) {
1618 1618
                             $cX = null;
1619 1619
                             $cY = null;
1620 1620
                             $cW = $imageWidth;
1621 1621
                             $cH = $imageHeight;
1622
-                            if ($imageYmax-$iY<$imageHeight) {
1622
+                            if ($imageYmax - $iY < $imageHeight) {
1623 1623
                                 $cX = $iX;
1624 1624
                                 $cY = $iY;
1625
-                                $cH = $imageYmax-$iY;
1625
+                                $cH = $imageYmax - $iY;
1626 1626
                             }
1627
-                            if ($imageXmax-$iX<$imageWidth) {
1627
+                            if ($imageXmax - $iX < $imageWidth) {
1628 1628
                                 $cX = $iX;
1629 1629
                                 $cY = $iY;
1630
-                                $cW = $imageXmax-$iX;
1630
+                                $cW = $imageXmax - $iX;
1631 1631
                             }
1632 1632
 
1633 1633
                             $this->pdf->Image($iName, $iX, $iY, $imageWidth, $imageHeight, '', '');
@@ -1641,36 +1641,36 @@  discard block
 block discarded – undo
1641 1641
 
1642 1642
             // adding some loose (0.01mm)
1643 1643
             $loose = 0.01;
1644
-            $x-= $loose;
1645
-            $y-= $loose;
1646
-            $w+= 2.*$loose;
1647
-            $h+= 2.*$loose;
1648
-            if ($border['l']['width']) $border['l']['width']+= 2.*$loose;
1649
-            if ($border['t']['width']) $border['t']['width']+= 2.*$loose;
1650
-            if ($border['r']['width']) $border['r']['width']+= 2.*$loose;
1651
-            if ($border['b']['width']) $border['b']['width']+= 2.*$loose;
1644
+            $x -= $loose;
1645
+            $y -= $loose;
1646
+            $w += 2. * $loose;
1647
+            $h += 2. * $loose;
1648
+            if ($border['l']['width']) $border['l']['width'] += 2. * $loose;
1649
+            if ($border['t']['width']) $border['t']['width'] += 2. * $loose;
1650
+            if ($border['r']['width']) $border['r']['width'] += 2. * $loose;
1651
+            if ($border['b']['width']) $border['b']['width'] += 2. * $loose;
1652 1652
 
1653 1653
             // prepare the test on borders
1654
-            $testBl = ($border['l']['width'] && $border['l']['color'][0]!==null);
1655
-            $testBt = ($border['t']['width'] && $border['t']['color'][0]!==null);
1656
-            $testBr = ($border['r']['width'] && $border['r']['color'][0]!==null);
1657
-            $testBb = ($border['b']['width'] && $border['b']['color'][0]!==null);
1654
+            $testBl = ($border['l']['width'] && $border['l']['color'][0] !== null);
1655
+            $testBt = ($border['t']['width'] && $border['t']['color'][0] !== null);
1656
+            $testBr = ($border['r']['width'] && $border['r']['color'][0] !== null);
1657
+            $testBb = ($border['b']['width'] && $border['b']['color'][0] !== null);
1658 1658
 
1659 1659
             // draw the radius bottom-left
1660 1660
             if (is_array($outBL) && ($testBb || $testBl)) {
1661 1661
                 if ($inBL) {
1662 1662
                     $courbe = array();
1663
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h;
1664
-                    $courbe[] = $x;                        $courbe[] = $y+$h-$outBL[1];
1665
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$border['b']['width'];
1666
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$h-$outBL[1];
1667
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$outBL[1];
1663
+                    $courbe[] = $x + $outBL[0]; $courbe[] = $y + $h;
1664
+                    $courbe[] = $x; $courbe[] = $y + $h - $outBL[1];
1665
+                    $courbe[] = $x + $outBL[0]; $courbe[] = $y + $h - $border['b']['width'];
1666
+                    $courbe[] = $x + $border['l']['width']; $courbe[] = $y + $h - $outBL[1];
1667
+                    $courbe[] = $x + $outBL[0]; $courbe[] = $y + $h - $outBL[1];
1668 1668
                 } else {
1669 1669
                     $courbe = array();
1670
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h;
1671
-                    $courbe[] = $x;                        $courbe[] = $y+$h-$outBL[1];
1672
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$h-$border['b']['width'];
1673
-                    $courbe[] = $x+$outBL[0];              $courbe[] = $y+$h-$outBL[1];
1670
+                    $courbe[] = $x + $outBL[0]; $courbe[] = $y + $h;
1671
+                    $courbe[] = $x; $courbe[] = $y + $h - $outBL[1];
1672
+                    $courbe[] = $x + $border['l']['width']; $courbe[] = $y + $h - $border['b']['width'];
1673
+                    $courbe[] = $x + $outBL[0]; $courbe[] = $y + $h - $outBL[1];
1674 1674
                 }
1675 1675
                 $this->_drawCurve($courbe, $border['l']['color']);
1676 1676
             }
@@ -1679,17 +1679,17 @@  discard block
 block discarded – undo
1679 1679
             if (is_array($outTL) && ($testBt || $testBl)) {
1680 1680
                 if ($inTL) {
1681 1681
                     $courbe = array();
1682
-                    $courbe[] = $x;                        $courbe[] = $y+$outTL[1];
1683
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y;
1684
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$outTL[1];
1685
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y+$border['t']['width'];
1686
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y+$outTL[1];
1682
+                    $courbe[] = $x; $courbe[] = $y + $outTL[1];
1683
+                    $courbe[] = $x + $outTL[0]; $courbe[] = $y;
1684
+                    $courbe[] = $x + $border['l']['width']; $courbe[] = $y + $outTL[1];
1685
+                    $courbe[] = $x + $outTL[0]; $courbe[] = $y + $border['t']['width'];
1686
+                    $courbe[] = $x + $outTL[0]; $courbe[] = $y + $outTL[1];
1687 1687
                 } else {
1688 1688
                     $courbe = array();
1689
-                    $courbe[] = $x;                        $courbe[] = $y+$outTL[1];
1690
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y;
1691
-                    $courbe[] = $x+$border['l']['width'];  $courbe[] = $y+$border['t']['width'];
1692
-                    $courbe[] = $x+$outTL[0];              $courbe[] = $y+$outTL[1];
1689
+                    $courbe[] = $x; $courbe[] = $y + $outTL[1];
1690
+                    $courbe[] = $x + $outTL[0]; $courbe[] = $y;
1691
+                    $courbe[] = $x + $border['l']['width']; $courbe[] = $y + $border['t']['width'];
1692
+                    $courbe[] = $x + $outTL[0]; $courbe[] = $y + $outTL[1];
1693 1693
                 }
1694 1694
                 $this->_drawCurve($courbe, $border['t']['color']);
1695 1695
             }
@@ -1698,17 +1698,17 @@  discard block
 block discarded – undo
1698 1698
             if (is_array($outTR) && ($testBt || $testBr)) {
1699 1699
                 if ($inTR) {
1700 1700
                     $courbe = array();
1701
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y;
1702
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$outTR[1];
1703
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$border['t']['width'];
1704
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$outTR[1];
1705
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$outTR[1];
1701
+                    $courbe[] = $x + $w - $outTR[0]; $courbe[] = $y;
1702
+                    $courbe[] = $x + $w; $courbe[] = $y + $outTR[1];
1703
+                    $courbe[] = $x + $w - $outTR[0]; $courbe[] = $y + $border['t']['width'];
1704
+                    $courbe[] = $x + $w - $border['r']['width']; $courbe[] = $y + $outTR[1];
1705
+                    $courbe[] = $x + $w - $outTR[0]; $courbe[] = $y + $outTR[1];
1706 1706
                 } else {
1707 1707
                     $courbe = array();
1708
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y;
1709
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$outTR[1];
1710
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$border['t']['width'];
1711
-                    $courbe[] = $x+$w-$outTR[0];             $courbe[] = $y+$outTR[1];
1708
+                    $courbe[] = $x + $w - $outTR[0]; $courbe[] = $y;
1709
+                    $courbe[] = $x + $w; $courbe[] = $y + $outTR[1];
1710
+                    $courbe[] = $x + $w - $border['r']['width']; $courbe[] = $y + $border['t']['width'];
1711
+                    $courbe[] = $x + $w - $outTR[0]; $courbe[] = $y + $outTR[1];
1712 1712
                 }
1713 1713
                 $this->_drawCurve($courbe, $border['r']['color']);
1714 1714
             }
@@ -1717,17 +1717,17 @@  discard block
 block discarded – undo
1717 1717
             if (is_array($outBR) && ($testBb || $testBr)) {
1718 1718
                 if ($inBR) {
1719 1719
                     $courbe = array();
1720
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$h-$outBR[1];
1721
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h;
1722
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$h-$outBR[1];
1723
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$border['b']['width'];
1724
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$outBR[1];
1720
+                    $courbe[] = $x + $w; $courbe[] = $y + $h - $outBR[1];
1721
+                    $courbe[] = $x + $w - $outBR[0]; $courbe[] = $y + $h;
1722
+                    $courbe[] = $x + $w - $border['r']['width']; $courbe[] = $y + $h - $outBR[1];
1723
+                    $courbe[] = $x + $w - $outBR[0]; $courbe[] = $y + $h - $border['b']['width'];
1724
+                    $courbe[] = $x + $w - $outBR[0]; $courbe[] = $y + $h - $outBR[1];
1725 1725
                 } else {
1726 1726
                     $courbe = array();
1727
-                    $courbe[] = $x+$w;                       $courbe[] = $y+$h-$outBR[1];
1728
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h;
1729
-                    $courbe[] = $x+$w-$border['r']['width']; $courbe[] = $y+$h-$border['b']['width'];
1730
-                    $courbe[] = $x+$w-$outBR[0];             $courbe[] = $y+$h-$outBR[1];
1727
+                    $courbe[] = $x + $w; $courbe[] = $y + $h - $outBR[1];
1728
+                    $courbe[] = $x + $w - $outBR[0]; $courbe[] = $y + $h;
1729
+                    $courbe[] = $x + $w - $border['r']['width']; $courbe[] = $y + $h - $border['b']['width'];
1730
+                    $courbe[] = $x + $w - $outBR[0]; $courbe[] = $y + $h - $outBR[1];
1731 1731
                 }
1732 1732
                 $this->_drawCurve($courbe, $border['b']['color']);
1733 1733
             }
@@ -1735,25 +1735,25 @@  discard block
 block discarded – undo
1735 1735
             // draw the left border
1736 1736
             if ($testBl) {
1737 1737
                 $pt = array();
1738
-                $pt[] = $x;                       $pt[] = $y+$h;
1739
-                $pt[] = $x;                       $pt[] = $y+$h-$border['b']['width'];
1740
-                $pt[] = $x;                       $pt[] = $y+$border['t']['width'];
1741
-                $pt[] = $x;                       $pt[] = $y;
1742
-                $pt[] = $x+$border['l']['width']; $pt[] = $y+$border['t']['width'];
1743
-                $pt[] = $x+$border['l']['width']; $pt[] = $y+$h-$border['b']['width'];
1738
+                $pt[] = $x; $pt[] = $y + $h;
1739
+                $pt[] = $x; $pt[] = $y + $h - $border['b']['width'];
1740
+                $pt[] = $x; $pt[] = $y + $border['t']['width'];
1741
+                $pt[] = $x; $pt[] = $y;
1742
+                $pt[] = $x + $border['l']['width']; $pt[] = $y + $border['t']['width'];
1743
+                $pt[] = $x + $border['l']['width']; $pt[] = $y + $h - $border['b']['width'];
1744 1744
 
1745 1745
                 $bord = 3;
1746 1746
                 if (is_array($outBL)) {
1747
-                    $bord-=1;
1747
+                    $bord -= 1;
1748 1748
                     $pt[3] -= $outBL[1] - $border['b']['width'];
1749
-                    if ($inBL) $pt[11]-= $inBL[1];
1750
-                    unset($pt[0]);unset($pt[1]);
1749
+                    if ($inBL) $pt[11] -= $inBL[1];
1750
+                    unset($pt[0]); unset($pt[1]);
1751 1751
                 }
1752 1752
                 if (is_array($outTL)) {
1753
-                    $bord-=2;
1754
-                    $pt[5] += $outTL[1]-$border['t']['width'];
1753
+                    $bord -= 2;
1754
+                    $pt[5] += $outTL[1] - $border['t']['width'];
1755 1755
                     if ($inTL) $pt[9] += $inTL[1];
1756
-                    unset($pt[6]);unset($pt[7]);
1756
+                    unset($pt[6]); unset($pt[7]);
1757 1757
                 }
1758 1758
 
1759 1759
                 $pt = array_values($pt);
@@ -1763,25 +1763,25 @@  discard block
 block discarded – undo
1763 1763
             // draw the top border
1764 1764
             if ($testBt) {
1765 1765
                 $pt = array();
1766
-                $pt[] = $x;                          $pt[] = $y;
1767
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y;
1768
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y;
1769
-                $pt[] = $x+$w;                       $pt[] = $y;
1770
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$border['t']['width'];
1771
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y+$border['t']['width'];
1766
+                $pt[] = $x; $pt[] = $y;
1767
+                $pt[] = $x + $border['l']['width']; $pt[] = $y;
1768
+                $pt[] = $x + $w - $border['r']['width']; $pt[] = $y;
1769
+                $pt[] = $x + $w; $pt[] = $y;
1770
+                $pt[] = $x + $w - $border['r']['width']; $pt[] = $y + $border['t']['width'];
1771
+                $pt[] = $x + $border['l']['width']; $pt[] = $y + $border['t']['width'];
1772 1772
 
1773 1773
                 $bord = 3;
1774 1774
                 if (is_array($outTL)) {
1775
-                    $bord-=1;
1775
+                    $bord -= 1;
1776 1776
                     $pt[2] += $outTL[0] - $border['l']['width'];
1777
-                    if ($inTL) $pt[10]+= $inTL[0];
1778
-                    unset($pt[0]);unset($pt[1]);
1777
+                    if ($inTL) $pt[10] += $inTL[0];
1778
+                    unset($pt[0]); unset($pt[1]);
1779 1779
                 }
1780 1780
                 if (is_array($outTR)) {
1781
-                    $bord-=2;
1781
+                    $bord -= 2;
1782 1782
                     $pt[4] -= $outTR[0] - $border['r']['width'];
1783 1783
                     if ($inTR) $pt[8] -= $inTR[0];
1784
-                    unset($pt[6]);unset($pt[7]);
1784
+                    unset($pt[6]); unset($pt[7]);
1785 1785
                 }
1786 1786
 
1787 1787
                 $pt = array_values($pt);
@@ -1791,25 +1791,25 @@  discard block
 block discarded – undo
1791 1791
             // draw the right border
1792 1792
             if ($testBr) {
1793 1793
                 $pt = array();
1794
-                $pt[] = $x+$w;                       $pt[] = $y;
1795
-                $pt[] = $x+$w;                       $pt[] = $y+$border['t']['width'];
1796
-                $pt[] = $x+$w;                       $pt[] = $y+$h-$border['b']['width'];
1797
-                $pt[] = $x+$w;                       $pt[] = $y+$h;
1798
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h-$border['b']['width'];
1799
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$border['t']['width'];
1794
+                $pt[] = $x + $w; $pt[] = $y;
1795
+                $pt[] = $x + $w; $pt[] = $y + $border['t']['width'];
1796
+                $pt[] = $x + $w; $pt[] = $y + $h - $border['b']['width'];
1797
+                $pt[] = $x + $w; $pt[] = $y + $h;
1798
+                $pt[] = $x + $w - $border['r']['width']; $pt[] = $y + $h - $border['b']['width'];
1799
+                $pt[] = $x + $w - $border['r']['width']; $pt[] = $y + $border['t']['width'];
1800 1800
 
1801 1801
                 $bord = 3;
1802 1802
                 if (is_array($outTR)) {
1803
-                    $bord-=1;
1803
+                    $bord -= 1;
1804 1804
                     $pt[3] += $outTR[1] - $border['t']['width'];
1805
-                    if ($inTR) $pt[11]+= $inTR[1];
1806
-                    unset($pt[0]);unset($pt[1]);
1805
+                    if ($inTR) $pt[11] += $inTR[1];
1806
+                    unset($pt[0]); unset($pt[1]);
1807 1807
                 }
1808 1808
                 if (is_array($outBR)) {
1809
-                    $bord-=2;
1809
+                    $bord -= 2;
1810 1810
                     $pt[5] -= $outBR[1] - $border['b']['width'];
1811 1811
                     if ($inBR) $pt[9] -= $inBR[1];
1812
-                    unset($pt[6]);unset($pt[7]);
1812
+                    unset($pt[6]); unset($pt[7]);
1813 1813
                 }
1814 1814
 
1815 1815
                 $pt = array_values($pt);
@@ -1819,25 +1819,25 @@  discard block
 block discarded – undo
1819 1819
             // draw the bottom border
1820 1820
             if ($testBb) {
1821 1821
                 $pt = array();
1822
-                $pt[] = $x+$w;                       $pt[] = $y+$h;
1823
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h;
1824
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y+$h;
1825
-                $pt[] = $x;                          $pt[] = $y+$h;
1826
-                $pt[] = $x+$border['l']['width'];    $pt[] = $y+$h-$border['b']['width'];
1827
-                $pt[] = $x+$w-$border['r']['width']; $pt[] = $y+$h-$border['b']['width'];
1822
+                $pt[] = $x + $w; $pt[] = $y + $h;
1823
+                $pt[] = $x + $w - $border['r']['width']; $pt[] = $y + $h;
1824
+                $pt[] = $x + $border['l']['width']; $pt[] = $y + $h;
1825
+                $pt[] = $x; $pt[] = $y + $h;
1826
+                $pt[] = $x + $border['l']['width']; $pt[] = $y + $h - $border['b']['width'];
1827
+                $pt[] = $x + $w - $border['r']['width']; $pt[] = $y + $h - $border['b']['width'];
1828 1828
 
1829 1829
                 $bord = 3;
1830 1830
                 if (is_array($outBL)) {
1831
-                    $bord-=2;
1831
+                    $bord -= 2;
1832 1832
                     $pt[4] += $outBL[0] - $border['l']['width'];
1833 1833
                     if ($inBL) $pt[8] += $inBL[0];
1834
-                    unset($pt[6]);unset($pt[7]);
1834
+                    unset($pt[6]); unset($pt[7]);
1835 1835
                 }
1836 1836
                 if (is_array($outBR)) {
1837
-                    $bord-=1;
1837
+                    $bord -= 1;
1838 1838
                     $pt[2] -= $outBR[0] - $border['r']['width'];
1839
-                    if ($inBR) $pt[10]-= $inBR[0];
1840
-                    unset($pt[0]);unset($pt[1]);
1839
+                    if ($inBR) $pt[10] -= $inBR[0];
1840
+                    unset($pt[0]); unset($pt[1]);
1841 1841
 
1842 1842
                 }
1843 1843
 
@@ -1863,7 +1863,7 @@  discard block
 block discarded – undo
1863 1863
         {
1864 1864
             $this->pdf->setFillColorArray($color);
1865 1865
 
1866
-            if (count($pt)==10)
1866
+            if (count($pt) == 10)
1867 1867
                 $this->pdf->drawCurve($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
1868 1868
             else
1869 1869
                 $this->pdf->drawCorner($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7]);
@@ -1879,128 +1879,128 @@  discard block
 block discarded – undo
1879 1879
          * @param  float   $width
1880 1880
          * @param  integer $radius (binary from 0 to 3 with 1=>start with a radius, 2=>end with a radius)
1881 1881
          */
1882
-        protected function _drawLine($pt, $color, $type, $width, $radius=3)
1882
+        protected function _drawLine($pt, $color, $type, $width, $radius = 3)
1883 1883
         {
1884 1884
             // set the fill color
1885 1885
             $this->pdf->setFillColorArray($color);
1886 1886
 
1887 1887
             // if dashed or dotted
1888
-            if ($type=='dashed' || $type=='dotted') {
1888
+            if ($type == 'dashed' || $type == 'dotted') {
1889 1889
 
1890 1890
                 // clean the end of the line, if radius
1891
-                if ($radius==1) {
1892
-                    $tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1891
+                if ($radius == 1) {
1892
+                    $tmp = array(); $tmp[] = $pt[0]; $tmp[] = $pt[1]; $tmp[] = $pt[2]; $tmp[] = $pt[3]; $tmp[] = $pt[8]; $tmp[] = $pt[9];
1893 1893
                     $this->pdf->Polygon($tmp, 'F');
1894 1894
 
1895
-                    $tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1895
+                    $tmp = array(); $tmp[] = $pt[2]; $tmp[] = $pt[3]; $tmp[] = $pt[4]; $tmp[] = $pt[5]; $tmp[] = $pt[6]; $tmp[] = $pt[7]; $tmp[] = $pt[8]; $tmp[] = $pt[9];
1896 1896
                     $pt = $tmp;
1897
-                } else if ($radius==2) {
1898
-                    $tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7];
1897
+                } else if ($radius == 2) {
1898
+                    $tmp = array(); $tmp[] = $pt[2]; $tmp[] = $pt[3]; $tmp[] = $pt[4]; $tmp[] = $pt[5]; $tmp[] = $pt[6]; $tmp[] = $pt[7];
1899 1899
                     $this->pdf->Polygon($tmp, 'F');
1900 1900
 
1901
-                    $tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1901
+                    $tmp = array(); $tmp[] = $pt[0]; $tmp[] = $pt[1]; $tmp[] = $pt[2]; $tmp[] = $pt[3]; $tmp[] = $pt[6]; $tmp[] = $pt[7]; $tmp[] = $pt[8]; $tmp[] = $pt[9];
1902 1902
                     $pt = $tmp;
1903
-                } else if ($radius==3) {
1904
-                    $tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
1903
+                } else if ($radius == 3) {
1904
+                    $tmp = array(); $tmp[] = $pt[0]; $tmp[] = $pt[1]; $tmp[] = $pt[2]; $tmp[] = $pt[3]; $tmp[] = $pt[10]; $tmp[] = $pt[11];
1905 1905
                     $this->pdf->Polygon($tmp, 'F');
1906 1906
 
1907
-                    $tmp = array(); $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
1907
+                    $tmp = array(); $tmp[] = $pt[4]; $tmp[] = $pt[5]; $tmp[] = $pt[6]; $tmp[] = $pt[7]; $tmp[] = $pt[8]; $tmp[] = $pt[9];
1908 1908
                     $this->pdf->Polygon($tmp, 'F');
1909 1909
 
1910
-                    $tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[8]; $tmp[]=$pt[9]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
1910
+                    $tmp = array(); $tmp[] = $pt[2]; $tmp[] = $pt[3]; $tmp[] = $pt[4]; $tmp[] = $pt[5]; $tmp[] = $pt[8]; $tmp[] = $pt[9]; $tmp[] = $pt[10]; $tmp[] = $pt[11];
1911 1911
                     $pt = $tmp;
1912 1912
                 }
1913 1913
 
1914 1914
                 // horisontal or vertical line
1915
-                if ($pt[2]==$pt[0]) {
1916
-                    $l = abs(($pt[3]-$pt[1])*0.5);
1915
+                if ($pt[2] == $pt[0]) {
1916
+                    $l = abs(($pt[3] - $pt[1]) * 0.5);
1917 1917
                     $px = 0;
1918 1918
                     $py = $width;
1919
-                    $x1 = $pt[0]; $y1 = ($pt[3]+$pt[1])*0.5;
1920
-                    $x2 = $pt[6]; $y2 = ($pt[7]+$pt[5])*0.5;
1919
+                    $x1 = $pt[0]; $y1 = ($pt[3] + $pt[1]) * 0.5;
1920
+                    $x2 = $pt[6]; $y2 = ($pt[7] + $pt[5]) * 0.5;
1921 1921
                 } else {
1922
-                    $l = abs(($pt[2]-$pt[0])*0.5);
1922
+                    $l = abs(($pt[2] - $pt[0]) * 0.5);
1923 1923
                     $px = $width;
1924 1924
                     $py = 0;
1925
-                    $x1 = ($pt[2]+$pt[0])*0.5; $y1 = $pt[1];
1926
-                    $x2 = ($pt[6]+$pt[4])*0.5; $y2 = $pt[7];
1925
+                    $x1 = ($pt[2] + $pt[0]) * 0.5; $y1 = $pt[1];
1926
+                    $x2 = ($pt[6] + $pt[4]) * 0.5; $y2 = $pt[7];
1927 1927
                 }
1928 1928
 
1929 1929
                 // if dashed : 3x bigger than dotted
1930
-                if ($type=='dashed') {
1931
-                    $px = $px*3.;
1932
-                    $py = $py*3.;
1930
+                if ($type == 'dashed') {
1931
+                    $px = $px * 3.;
1932
+                    $py = $py * 3.;
1933 1933
                 }
1934
-                $mode = ($l/($px+$py)<.5);
1934
+                $mode = ($l / ($px + $py) < .5);
1935 1935
 
1936 1936
                 // display the dotted/dashed line
1937
-                for ($i=0; $l-($px+$py)*($i-0.5)>0; $i++) {
1938
-                    if (($i%2)==$mode) {
1939
-                        $j = $i-0.5;
1940
-                        $lx1 = $px*($j);   if ($lx1<-$l) $lx1 =-$l;
1941
-                        $ly1 = $py*($j);   if ($ly1<-$l) $ly1 =-$l;
1942
-                        $lx2 = $px*($j+1); if ($lx2>$l)  $lx2 = $l;
1943
-                        $ly2 = $py*($j+1); if ($ly2>$l)  $ly2 = $l;
1937
+                for ($i = 0; $l - ($px + $py) * ($i - 0.5) > 0; $i++) {
1938
+                    if (($i % 2) == $mode) {
1939
+                        $j = $i - 0.5;
1940
+                        $lx1 = $px * ($j); if ($lx1 < -$l) $lx1 = -$l;
1941
+                        $ly1 = $py * ($j); if ($ly1 < -$l) $ly1 = -$l;
1942
+                        $lx2 = $px * ($j + 1); if ($lx2 > $l)  $lx2 = $l;
1943
+                        $ly2 = $py * ($j + 1); if ($ly2 > $l)  $ly2 = $l;
1944 1944
 
1945 1945
                         $tmp = array();
1946
-                        $tmp[] = $x1+$lx1; $tmp[] = $y1+$ly1;
1947
-                        $tmp[] = $x1+$lx2; $tmp[] = $y1+$ly2;
1948
-                        $tmp[] = $x2+$lx2; $tmp[] = $y2+$ly2;
1949
-                        $tmp[] = $x2+$lx1; $tmp[] = $y2+$ly1;
1946
+                        $tmp[] = $x1 + $lx1; $tmp[] = $y1 + $ly1;
1947
+                        $tmp[] = $x1 + $lx2; $tmp[] = $y1 + $ly2;
1948
+                        $tmp[] = $x2 + $lx2; $tmp[] = $y2 + $ly2;
1949
+                        $tmp[] = $x2 + $lx1; $tmp[] = $y2 + $ly1;
1950 1950
                         $this->pdf->Polygon($tmp, 'F');
1951 1951
 
1952
-                        if ($j>0) {
1952
+                        if ($j > 0) {
1953 1953
                             $tmp = array();
1954
-                            $tmp[] = $x1-$lx1; $tmp[] = $y1-$ly1;
1955
-                            $tmp[] = $x1-$lx2; $tmp[] = $y1-$ly2;
1956
-                            $tmp[] = $x2-$lx2; $tmp[] = $y2-$ly2;
1957
-                            $tmp[] = $x2-$lx1; $tmp[] = $y2-$ly1;
1954
+                            $tmp[] = $x1 - $lx1; $tmp[] = $y1 - $ly1;
1955
+                            $tmp[] = $x1 - $lx2; $tmp[] = $y1 - $ly2;
1956
+                            $tmp[] = $x2 - $lx2; $tmp[] = $y2 - $ly2;
1957
+                            $tmp[] = $x2 - $lx1; $tmp[] = $y2 - $ly1;
1958 1958
                             $this->pdf->Polygon($tmp, 'F');
1959 1959
                         }
1960 1960
                     }
1961 1961
                 }
1962
-            } else if ($type=='double') {
1962
+            } else if ($type == 'double') {
1963 1963
 
1964 1964
                 // if double, 2 lines : 0=>1/3 and 2/3=>1
1965 1965
                 $pt1 = $pt;
1966 1966
                 $pt2 = $pt;
1967 1967
 
1968
-                if (count($pt)==12) {
1968
+                if (count($pt) == 12) {
1969 1969
                     // line 1
1970
-                    $pt1[0] = ($pt[0]-$pt[10])*0.33 + $pt[10];
1971
-                    $pt1[1] = ($pt[1]-$pt[11])*0.33 + $pt[11];
1972
-                    $pt1[2] = ($pt[2]-$pt[10])*0.33 + $pt[10];
1973
-                    $pt1[3] = ($pt[3]-$pt[11])*0.33 + $pt[11];
1974
-                    $pt1[4] = ($pt[4]-$pt[8])*0.33 + $pt[8];
1975
-                    $pt1[5] = ($pt[5]-$pt[9])*0.33 + $pt[9];
1976
-                    $pt1[6] = ($pt[6]-$pt[8])*0.33 + $pt[8];
1977
-                    $pt1[7] = ($pt[7]-$pt[9])*0.33 + $pt[9];
1978
-                    $pt2[10]= ($pt[10]-$pt[0])*0.33 + $pt[0];
1979
-                    $pt2[11]= ($pt[11]-$pt[1])*0.33 + $pt[1];
1970
+                    $pt1[0] = ($pt[0] - $pt[10]) * 0.33 + $pt[10];
1971
+                    $pt1[1] = ($pt[1] - $pt[11]) * 0.33 + $pt[11];
1972
+                    $pt1[2] = ($pt[2] - $pt[10]) * 0.33 + $pt[10];
1973
+                    $pt1[3] = ($pt[3] - $pt[11]) * 0.33 + $pt[11];
1974
+                    $pt1[4] = ($pt[4] - $pt[8]) * 0.33 + $pt[8];
1975
+                    $pt1[5] = ($pt[5] - $pt[9]) * 0.33 + $pt[9];
1976
+                    $pt1[6] = ($pt[6] - $pt[8]) * 0.33 + $pt[8];
1977
+                    $pt1[7] = ($pt[7] - $pt[9]) * 0.33 + $pt[9];
1978
+                    $pt2[10] = ($pt[10] - $pt[0]) * 0.33 + $pt[0];
1979
+                    $pt2[11] = ($pt[11] - $pt[1]) * 0.33 + $pt[1];
1980 1980
 
1981 1981
                     // line 2
1982
-                    $pt2[2] = ($pt[2] -$pt[0])*0.33 + $pt[0];
1983
-                    $pt2[3] = ($pt[3] -$pt[1])*0.33 + $pt[1];
1984
-                    $pt2[4] = ($pt[4] -$pt[6])*0.33 + $pt[6];
1985
-                    $pt2[5] = ($pt[5] -$pt[7])*0.33 + $pt[7];
1986
-                    $pt2[8] = ($pt[8] -$pt[6])*0.33 + $pt[6];
1987
-                    $pt2[9] = ($pt[9] -$pt[7])*0.33 + $pt[7];
1982
+                    $pt2[2] = ($pt[2] - $pt[0]) * 0.33 + $pt[0];
1983
+                    $pt2[3] = ($pt[3] - $pt[1]) * 0.33 + $pt[1];
1984
+                    $pt2[4] = ($pt[4] - $pt[6]) * 0.33 + $pt[6];
1985
+                    $pt2[5] = ($pt[5] - $pt[7]) * 0.33 + $pt[7];
1986
+                    $pt2[8] = ($pt[8] - $pt[6]) * 0.33 + $pt[6];
1987
+                    $pt2[9] = ($pt[9] - $pt[7]) * 0.33 + $pt[7];
1988 1988
                 } else {
1989 1989
                     // line 1
1990
-                    $pt1[0] = ($pt[0]-$pt[6])*0.33 + $pt[6];
1991
-                    $pt1[1] = ($pt[1]-$pt[7])*0.33 + $pt[7];
1992
-                    $pt1[2] = ($pt[2]-$pt[4])*0.33 + $pt[4];
1993
-                    $pt1[3] = ($pt[3]-$pt[5])*0.33 + $pt[5];
1990
+                    $pt1[0] = ($pt[0] - $pt[6]) * 0.33 + $pt[6];
1991
+                    $pt1[1] = ($pt[1] - $pt[7]) * 0.33 + $pt[7];
1992
+                    $pt1[2] = ($pt[2] - $pt[4]) * 0.33 + $pt[4];
1993
+                    $pt1[3] = ($pt[3] - $pt[5]) * 0.33 + $pt[5];
1994 1994
 
1995 1995
                     // line 2
1996
-                    $pt2[6] = ($pt[6]-$pt[0])*0.33 + $pt[0];
1997
-                    $pt2[7] = ($pt[7]-$pt[1])*0.33 + $pt[1];
1998
-                    $pt2[4] = ($pt[4]-$pt[2])*0.33 + $pt[2];
1999
-                    $pt2[5] = ($pt[5]-$pt[3])*0.33 + $pt[3];
1996
+                    $pt2[6] = ($pt[6] - $pt[0]) * 0.33 + $pt[0];
1997
+                    $pt2[7] = ($pt[7] - $pt[1]) * 0.33 + $pt[1];
1998
+                    $pt2[4] = ($pt[4] - $pt[2]) * 0.33 + $pt[2];
1999
+                    $pt2[5] = ($pt[5] - $pt[3]) * 0.33 + $pt[3];
2000 2000
                 }
2001 2001
                 $this->pdf->Polygon($pt1, 'F');
2002 2002
                 $this->pdf->Polygon($pt2, 'F');
2003
-            } else if ($type=='solid') {
2003
+            } else if ($type == 'solid') {
2004 2004
                 // solid line : draw directly the polygon
2005 2005
                 $this->pdf->Polygon($pt, 'F');
2006 2006
             }
@@ -2025,7 +2025,7 @@  discard block
 block discarded – undo
2025 2025
             $actions = array();
2026 2026
 
2027 2027
             // for actions
2028
-            for ($k=0; $k<count($match[0]); $k++) {
2028
+            for ($k = 0; $k < count($match[0]); $k++) {
2029 2029
 
2030 2030
                 // get the name of the action
2031 2031
                 $name = strtolower($match[1][$k]);
@@ -2037,46 +2037,46 @@  discard block
 block discarded – undo
2037 2037
                 }
2038 2038
 
2039 2039
                 // prepare the matrix, depending on the action
2040
-                switch($name)
2040
+                switch ($name)
2041 2041
                 {
2042 2042
                     case 'scale':
2043
-                        if (!isset($val[0])) $val[0] = 1.;      else $val[0] = 1.*$val[0];
2044
-                        if (!isset($val[1])) $val[1] = $val[0]; else $val[1] = 1.*$val[1];
2045
-                        $actions[] = array($val[0],0,0,$val[1],0,0);
2043
+                        if (!isset($val[0])) $val[0] = 1.; else $val[0] = 1. * $val[0];
2044
+                        if (!isset($val[1])) $val[1] = $val[0]; else $val[1] = 1. * $val[1];
2045
+                        $actions[] = array($val[0], 0, 0, $val[1], 0, 0);
2046 2046
                         break;
2047 2047
 
2048 2048
                     case 'translate':
2049 2049
                         if (!isset($val[0])) $val[0] = 0.; else $val[0] = $this->parsingCss->ConvertToMM($val[0], $this->_isInDraw['w']);
2050 2050
                         if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['h']);
2051
-                        $actions[] = array(1,0,0,1,$val[0],$val[1]);
2051
+                        $actions[] = array(1, 0, 0, 1, $val[0], $val[1]);
2052 2052
                         break;
2053 2053
 
2054 2054
                     case 'rotate':
2055
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2055
+                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0] * M_PI / 180.;
2056 2056
                         if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['w']);
2057 2057
                         if (!isset($val[2])) $val[2] = 0.; else $val[2] = $this->parsingCss->ConvertToMM($val[2], $this->_isInDraw['h']);
2058
-                        if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,-$val[1],-$val[2]);
2059
-                        $actions[] = array(cos($val[0]),sin($val[0]),-sin($val[0]),cos($val[0]),0,0);
2060
-                        if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,$val[1],$val[2]);
2058
+                        if ($val[1] || $val[2]) $actions[] = array(1, 0, 0, 1, -$val[1], -$val[2]);
2059
+                        $actions[] = array(cos($val[0]), sin($val[0]), -sin($val[0]), cos($val[0]), 0, 0);
2060
+                        if ($val[1] || $val[2]) $actions[] = array(1, 0, 0, 1, $val[1], $val[2]);
2061 2061
                         break;
2062 2062
 
2063 2063
                     case 'skewx':
2064
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2065
-                        $actions[] = array(1,0,tan($val[0]),1,0,0);
2064
+                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0] * M_PI / 180.;
2065
+                        $actions[] = array(1, 0, tan($val[0]), 1, 0, 0);
2066 2066
                         break;
2067 2067
 
2068 2068
                     case 'skewy':
2069
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2070
-                        $actions[] = array(1,tan($val[0]),0,1,0,0);
2069
+                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0] * M_PI / 180.;
2070
+                        $actions[] = array(1, tan($val[0]), 0, 1, 0, 0);
2071 2071
                         break;
2072 2072
                     case 'matrix':
2073
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*1.;
2074
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $val[1]*1.;
2075
-                        if (!isset($val[2])) $val[2] = 0.; else $val[2] = $val[2]*1.;
2076
-                        if (!isset($val[3])) $val[3] = 0.; else $val[3] = $val[3]*1.;
2073
+                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0] * 1.;
2074
+                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $val[1] * 1.;
2075
+                        if (!isset($val[2])) $val[2] = 0.; else $val[2] = $val[2] * 1.;
2076
+                        if (!isset($val[3])) $val[3] = 0.; else $val[3] = $val[3] * 1.;
2077 2077
                         if (!isset($val[4])) $val[4] = 0.; else $val[4] = $this->parsingCss->ConvertToMM($val[4], $this->_isInDraw['w']);
2078 2078
                         if (!isset($val[5])) $val[5] = 0.; else $val[5] = $this->parsingCss->ConvertToMM($val[5], $this->_isInDraw['h']);
2079
-                        $actions[] =$val;
2079
+                        $actions[] = $val;
2080 2080
                         break;
2081 2081
                 }
2082 2082
             }
@@ -2090,12 +2090,12 @@  discard block
 block discarded – undo
2090 2090
             // foreach matrix => multiply to the last matrix
2091 2091
             foreach ($actions as $n) {
2092 2092
                 $m = array(
2093
-                    $m[0]*$n[0]+$m[2]*$n[1],
2094
-                    $m[1]*$n[0]+$m[3]*$n[1],
2095
-                    $m[0]*$n[2]+$m[2]*$n[3],
2096
-                    $m[1]*$n[2]+$m[3]*$n[3],
2097
-                    $m[0]*$n[4]+$m[2]*$n[5]+$m[4],
2098
-                    $m[1]*$n[4]+$m[3]*$n[5]+$m[5]
2093
+                    $m[0] * $n[0] + $m[2] * $n[1],
2094
+                    $m[1] * $n[0] + $m[3] * $n[1],
2095
+                    $m[0] * $n[2] + $m[2] * $n[3],
2096
+                    $m[1] * $n[2] + $m[3] * $n[3],
2097
+                    $m[0] * $n[4] + $m[2] * $n[5] + $m[4],
2098
+                    $m[1] * $n[4] + $m[3] * $n[5] + $m[5]
2099 2099
                 );
2100 2100
             }
2101 2101
 
@@ -2114,10 +2114,10 @@  discard block
 block discarded – undo
2114 2114
 
2115 2115
             // for each cell without colspan, we get the max width for each column
2116 2116
             $sw = array();
2117
-            for ($x=0; $x<count($corr[0]); $x++) {
2118
-                $m=0;
2119
-                for ($y=0; $y<count($corr); $y++) {
2120
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]==1) {
2117
+            for ($x = 0; $x < count($corr[0]); $x++) {
2118
+                $m = 0;
2119
+                for ($y = 0; $y < count($corr); $y++) {
2120
+                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2] == 1) {
2121 2121
                         $m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']);
2122 2122
                     }
2123 2123
                 }
@@ -2125,17 +2125,17 @@  discard block
 block discarded – undo
2125 2125
             }
2126 2126
 
2127 2127
             // for each cell with colspan, we adapt the width of each column
2128
-            for ($x=0; $x<count($corr[0]); $x++) {
2129
-                for ($y=0; $y<count($corr); $y++) {
2130
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]>1) {
2128
+            for ($x = 0; $x < count($corr[0]); $x++) {
2129
+                for ($y = 0; $y < count($corr); $y++) {
2130
+                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2] > 1) {
2131 2131
 
2132 2132
                         // sum the max width of each column in colspan
2133
-                        $s = 0; for ($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
2133
+                        $s = 0; for ($i = 0; $i < $corr[$y][$x][2]; $i++) $s += $sw[$x + $i];
2134 2134
 
2135 2135
                         // if the max width is < the width of the cell with colspan => we adapt the width of each max width
2136
-                        if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']) {
2137
-                            for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2138
-                                $sw[$x+$i] = $sw[$x+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2136
+                        if ($s > 0 && $s < $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']) {
2137
+                            for ($i = 0; $i < $corr[$y][$x][2]; $i++) {
2138
+                                $sw[$x + $i] = $sw[$x + $i] / $s * $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2139 2139
                             }
2140 2140
                         }
2141 2141
                     }
@@ -2143,17 +2143,17 @@  discard block
 block discarded – undo
2143 2143
             }
2144 2144
 
2145 2145
             // set the new width, for each cell
2146
-            for ($x=0; $x<count($corr[0]); $x++) {
2147
-                for ($y=0; $y<count($corr); $y++) {
2146
+            for ($x = 0; $x < count($corr[0]); $x++) {
2147
+                for ($y = 0; $y < count($corr); $y++) {
2148 2148
                     if (isset($corr[$y][$x]) && is_array($corr[$y][$x])) {
2149 2149
                         // without colspan
2150
-                        if ($corr[$y][$x][2]==1) {
2150
+                        if ($corr[$y][$x][2] == 1) {
2151 2151
                             $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $sw[$x];
2152 2152
                         // with colspan
2153 2153
                         } else {
2154 2154
                             $s = 0;
2155
-                            for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2156
-                                $s+= $sw[$x+$i];
2155
+                            for ($i = 0; $i < $corr[$y][$x][2]; $i++) {
2156
+                                $s += $sw[$x + $i];
2157 2157
                             }
2158 2158
                             $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $s;
2159 2159
                         }
@@ -2163,10 +2163,10 @@  discard block
 block discarded – undo
2163 2163
 
2164 2164
             // for each cell without rowspan, we get the max height for each line
2165 2165
             $sh = array();
2166
-            for ($y=0; $y<count($corr); $y++) {
2167
-                $m=0;
2168
-                for ($x=0; $x<count($corr[0]); $x++) {
2169
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]==1) {
2166
+            for ($y = 0; $y < count($corr); $y++) {
2167
+                $m = 0;
2168
+                for ($x = 0; $x < count($corr[0]); $x++) {
2169
+                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3] == 1) {
2170 2170
                         $m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']);
2171 2171
                     }
2172 2172
                 }
@@ -2174,17 +2174,17 @@  discard block
 block discarded – undo
2174 2174
             }
2175 2175
 
2176 2176
             // for each cell with rowspan, we adapt the height of each line
2177
-            for ($y=0; $y<count($corr); $y++) {
2178
-                for ($x=0; $x<count($corr[0]); $x++) {
2179
-                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]>1) {
2177
+            for ($y = 0; $y < count($corr); $y++) {
2178
+                for ($x = 0; $x < count($corr[0]); $x++) {
2179
+                    if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3] > 1) {
2180 2180
 
2181 2181
                         // sum the max height of each line in rowspan
2182
-                        $s = 0; for ($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
2182
+                        $s = 0; for ($i = 0; $i < $corr[$y][$x][3]; $i++) $s += $sh[$y + $i];
2183 2183
 
2184 2184
                         // if the max height is < the height of the cell with rowspan => we adapt the height of each max height
2185
-                        if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']) {
2186
-                            for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2187
-                                $sh[$y+$i] = $sh[$y+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'];
2185
+                        if ($s > 0 && $s < $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']) {
2186
+                            for ($i = 0; $i < $corr[$y][$x][3]; $i++) {
2187
+                                $sh[$y + $i] = $sh[$y + $i] / $s * $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'];
2188 2188
                             }
2189 2189
                         }
2190 2190
                     }
@@ -2192,26 +2192,26 @@  discard block
 block discarded – undo
2192 2192
             }
2193 2193
 
2194 2194
             // set the new height, for each cell
2195
-            for ($y=0; $y<count($corr); $y++) {
2196
-                for ($x=0; $x<count($corr[0]); $x++) {
2195
+            for ($y = 0; $y < count($corr); $y++) {
2196
+                for ($x = 0; $x < count($corr[0]); $x++) {
2197 2197
                     if (isset($corr[$y][$x]) && is_array($corr[$y][$x])) {
2198 2198
                         // without rowspan
2199
-                        if ($corr[$y][$x][3]==1) {
2199
+                        if ($corr[$y][$x][3] == 1) {
2200 2200
                             $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $sh[$y];
2201 2201
                         // with rowspan
2202 2202
                         } else {
2203 2203
                             $s = 0;
2204
-                            for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2205
-                                $s+= $sh[$y+$i];
2204
+                            for ($i = 0; $i < $corr[$y][$x][3]; $i++) {
2205
+                                $s += $sh[$y + $i];
2206 2206
                             }
2207 2207
                             $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $s;
2208 2208
 
2209
-                            for ($j=1; $j<$corr[$y][$x][3]; $j++) {
2210
-                                $tx = $x+1;
2211
-                                $ty = $y+$j;
2209
+                            for ($j = 1; $j < $corr[$y][$x][3]; $j++) {
2210
+                                $tx = $x + 1;
2211
+                                $ty = $y + $j;
2212 2212
                                 for (true; isset($corr[$ty][$tx]) && !is_array($corr[$ty][$tx]); $tx++);
2213 2213
                                 if (isset($corr[$ty][$tx])) {
2214
-                                    $cases[$corr[$ty][$tx][1]][$corr[$ty][$tx][0]]['dw']+= $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2214
+                                    $cases[$corr[$ty][$tx][1]][$corr[$ty][$tx][0]]['dw'] += $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
2215 2215
                                 }
2216 2216
                             }
2217 2217
                         }
@@ -2230,11 +2230,11 @@  discard block
 block discarded – undo
2230 2230
         protected function _tag_open_PAGE($param)
2231 2231
         {
2232 2232
             if ($this->_isForOneLine) return false;
2233
-            if ($this->_debugActif) $this->_DEBUG_add('PAGE '.($this->_page+1), true);
2233
+            if ($this->_debugActif) $this->_DEBUG_add('PAGE ' . ($this->_page + 1), true);
2234 2234
 
2235
-            $newPageSet= (!isset($param['pageset']) || $param['pageset']!='old');
2235
+            $newPageSet = (!isset($param['pageset']) || $param['pageset'] != 'old');
2236 2236
 
2237
-            $resetPageNumber = (isset($param['pagegroup']) && $param['pagegroup']=='new');
2237
+            $resetPageNumber = (isset($param['pagegroup']) && $param['pagegroup'] == 'new');
2238 2238
 
2239 2239
             $this->_maxH = 0;
2240 2240
 
@@ -2247,12 +2247,12 @@  discard block
 block discarded – undo
2247 2247
                 $orientation = '';
2248 2248
                 if (isset($param['orientation'])) {
2249 2249
                     $param['orientation'] = strtolower($param['orientation']);
2250
-                    if ($param['orientation']=='p')         $orientation = 'P';
2251
-                    if ($param['orientation']=='portrait')  $orientation = 'P';
2250
+                    if ($param['orientation'] == 'p')         $orientation = 'P';
2251
+                    if ($param['orientation'] == 'portrait')  $orientation = 'P';
2252 2252
 
2253
-                    if ($param['orientation']=='l')         $orientation = 'L';
2254
-                    if ($param['orientation']=='paysage')   $orientation = 'L';
2255
-                    if ($param['orientation']=='landscape') $orientation = 'L';
2253
+                    if ($param['orientation'] == 'l')         $orientation = 'L';
2254
+                    if ($param['orientation'] == 'paysage')   $orientation = 'L';
2255
+                    if ($param['orientation'] == 'landscape') $orientation = 'L';
2256 2256
                 }
2257 2257
 
2258 2258
                 // format
@@ -2267,29 +2267,29 @@  discard block
 block discarded – undo
2267 2267
                 // background
2268 2268
                 $background = array();
2269 2269
                 if (isset($param['backimg'])) {
2270
-                    $background['img']    = isset($param['backimg'])  ? $param['backimg']  : '';       // src of the image
2270
+                    $background['img']    = isset($param['backimg']) ? $param['backimg'] : ''; // src of the image
2271 2271
                     $background['posX']   = isset($param['backimgx']) ? $param['backimgx'] : 'center'; // horizontale position of the image
2272 2272
                     $background['posY']   = isset($param['backimgy']) ? $param['backimgy'] : 'middle'; // vertical position of the image
2273
-                    $background['width']  = isset($param['backimgw']) ? $param['backimgw'] : '100%';   // width of the image (100% = page width)
2273
+                    $background['width']  = isset($param['backimgw']) ? $param['backimgw'] : '100%'; // width of the image (100% = page width)
2274 2274
 
2275 2275
                     // convert the src of the image, if parameters
2276 2276
                     $background['img'] = str_replace('&amp;', '&', $background['img']);
2277 2277
 
2278 2278
                     // convert the positions
2279
-                    if ($background['posX']=='left')    $background['posX'] = '0%';
2280
-                    if ($background['posX']=='center')  $background['posX'] = '50%';
2281
-                    if ($background['posX']=='right')   $background['posX'] = '100%';
2282
-                    if ($background['posY']=='top')     $background['posY'] = '0%';
2283
-                    if ($background['posY']=='middle')  $background['posY'] = '50%';
2284
-                    if ($background['posY']=='bottom')  $background['posY'] = '100%';
2279
+                    if ($background['posX'] == 'left')    $background['posX'] = '0%';
2280
+                    if ($background['posX'] == 'center')  $background['posX'] = '50%';
2281
+                    if ($background['posX'] == 'right')   $background['posX'] = '100%';
2282
+                    if ($background['posY'] == 'top')     $background['posY'] = '0%';
2283
+                    if ($background['posY'] == 'middle')  $background['posY'] = '50%';
2284
+                    if ($background['posY'] == 'bottom')  $background['posY'] = '100%';
2285 2285
 
2286 2286
                     if ($background['img']) {
2287 2287
                         // get the size of the image
2288 2288
                         // WARNING : if URL, "allow_url_fopen" must turned to "on" in php.ini
2289
-                        $infos=@getimagesize($background['img']);
2290
-                        if (count($infos)>1) {
2289
+                        $infos = @getimagesize($background['img']);
2290
+                        if (count($infos) > 1) {
2291 2291
                             $imageWidth = $this->parsingCss->ConvertToMM($background['width'], $this->pdf->getW());
2292
-                            $imageHeight = $imageWidth*$infos[1]/$infos[0];
2292
+                            $imageHeight = $imageWidth * $infos[1] / $infos[0];
2293 2293
 
2294 2294
                             $background['width'] = $imageWidth;
2295 2295
                             $background['posX']  = $this->parsingCss->ConvertToMM($background['posX'], $this->pdf->getW() - $imageWidth);
@@ -2303,10 +2303,10 @@  discard block
 block discarded – undo
2303 2303
                 }
2304 2304
 
2305 2305
                 // margins of the page
2306
-                $background['top']    = isset($param['backtop'])    ? $param['backtop']    : '0';
2306
+                $background['top']    = isset($param['backtop']) ? $param['backtop'] : '0';
2307 2307
                 $background['bottom'] = isset($param['backbottom']) ? $param['backbottom'] : '0';
2308
-                $background['left']   = isset($param['backleft'])   ? $param['backleft']   : '0';
2309
-                $background['right']  = isset($param['backright'])  ? $param['backright']  : '0';
2308
+                $background['left']   = isset($param['backleft']) ? $param['backleft'] : '0';
2309
+                $background['right']  = isset($param['backright']) ? $param['backright'] : '0';
2310 2310
 
2311 2311
                 // if no unit => mm
2312 2312
                 if (preg_match('/^([0-9]*)$/isU', $background['top']))    $background['top']    .= 'mm';
@@ -2322,7 +2322,7 @@  discard block
 block discarded – undo
2322 2322
 
2323 2323
                 // get the background color
2324 2324
                 $res = false;
2325
-                $background['color']    = isset($param['backcolor'])    ? $this->parsingCss->convertToColor($param['backcolor'], $res) : null;
2325
+                $background['color'] = isset($param['backcolor']) ? $this->parsingCss->convertToColor($param['backcolor'], $res) : null;
2326 2326
                 if (!$res) $background['color'] = null;
2327 2327
 
2328 2328
                 $this->parsingCss->save();
@@ -2377,7 +2377,7 @@  discard block
 block discarded – undo
2377 2377
             $this->parsingCss->load();
2378 2378
             $this->parsingCss->fontSet();
2379 2379
 
2380
-            if ($this->_debugActif) $this->_DEBUG_add('PAGE '.$this->_page, false);
2380
+            if ($this->_debugActif) $this->_DEBUG_add('PAGE ' . $this->_page, false);
2381 2381
 
2382 2382
             return true;
2383 2383
         }
@@ -2394,11 +2394,11 @@  discard block
 block discarded – undo
2394 2394
             if ($this->_isForOneLine) return false;
2395 2395
 
2396 2396
             $this->_subHEADER = array();
2397
-            for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2397
+            for ($this->_parsePos; $this->_parsePos < count($this->parsingHtml->code); $this->_parsePos++) {
2398 2398
                 $action = $this->parsingHtml->code[$this->_parsePos];
2399
-                if ($action['name']=='page_header') $action['name']='page_header_sub';
2399
+                if ($action['name'] == 'page_header') $action['name'] = 'page_header_sub';
2400 2400
                 $this->_subHEADER[] = $action;
2401
-                if (strtolower($action['name'])=='page_header_sub' && $action['close']) break;
2401
+                if (strtolower($action['name']) == 'page_header_sub' && $action['close']) break;
2402 2402
             }
2403 2403
 
2404 2404
             $this->_setPageHeader();
@@ -2418,11 +2418,11 @@  discard block
 block discarded – undo
2418 2418
             if ($this->_isForOneLine) return false;
2419 2419
 
2420 2420
             $this->_subFOOTER = array();
2421
-            for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2421
+            for ($this->_parsePos; $this->_parsePos < count($this->parsingHtml->code); $this->_parsePos++) {
2422 2422
                 $action = $this->parsingHtml->code[$this->_parsePos];
2423
-                if ($action['name']=='page_footer') $action['name']='page_footer_sub';
2423
+                if ($action['name'] == 'page_footer') $action['name'] = 'page_footer_sub';
2424 2424
                 $this->_subFOOTER[] = $action;
2425
-                if (strtolower($action['name'])=='page_footer_sub' && $action['close']) break;
2425
+                if (strtolower($action['name']) == 'page_footer_sub' && $action['close']) break;
2426 2426
             }
2427 2427
 
2428 2428
             $this->_setPageFooter();
@@ -2540,8 +2540,8 @@  discard block
 block discarded – undo
2540 2540
 
2541 2541
             $this->parsingCss->initStyle();
2542 2542
             $this->parsingCss->resetStyle();
2543
-            $this->parsingCss->value['width']    = $this->pdf->getW() - $this->_defaultLeft - $this->_defaultRight;
2544
-            $this->parsingCss->table                = array();
2543
+            $this->parsingCss->value['width'] = $this->pdf->getW() - $this->_defaultLeft - $this->_defaultRight;
2544
+            $this->parsingCss->table = array();
2545 2545
 
2546 2546
             // we create a sub HTML2PFDF, and we execute on it the content of the footer, to get the height of it
2547 2547
             $sub = null;
@@ -2574,11 +2574,11 @@  discard block
 block discarded – undo
2574 2574
 
2575 2575
             $this->parsingCss->value                = $this->_subSTATES['s'];
2576 2576
             $this->parsingCss->table                = $this->_subSTATES['t'];
2577
-            $this->_pageMarges                 = $this->_subSTATES['mp'];
2578
-            $this->_margeLeft                = $this->_subSTATES['ml'];
2579
-            $this->_margeRight                = $this->_subSTATES['mr'];
2580
-            $this->_margeTop                    = $this->_subSTATES['mt'];
2581
-            $this->_margeBottom                = $this->_subSTATES['mb'];
2577
+            $this->_pageMarges = $this->_subSTATES['mp'];
2578
+            $this->_margeLeft = $this->_subSTATES['ml'];
2579
+            $this->_margeRight = $this->_subSTATES['mr'];
2580
+            $this->_margeTop = $this->_subSTATES['mt'];
2581
+            $this->_margeBottom = $this->_subSTATES['mb'];
2582 2582
             $this->pdf->SetMargins($this->_margeLeft, $this->_margeTop, $this->_margeRight);
2583 2583
             $this->pdf->SetAutoPageBreak(false, $this->_margeBottom);
2584 2584
             $this->pdf->setXY($this->_subSTATES['x'], $this->_subSTATES['y']);
@@ -2611,8 +2611,8 @@  discard block
 block discarded – undo
2611 2611
 
2612 2612
             // if the content does not fit on the page => new page
2613 2613
             if (
2614
-                $sub->_maxY < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin()) &&
2615
-                $y + $sub->_maxY>=($this->pdf->getH() - $this->pdf->getbMargin())
2614
+                $sub->_maxY < ($this->pdf->getH() - $this->pdf->gettMargin() - $this->pdf->getbMargin()) &&
2615
+                $y + $sub->_maxY >= ($this->pdf->getH() - $this->pdf->getbMargin())
2616 2616
             ) {
2617 2617
                 $this->_setNewPage();
2618 2618
             }
@@ -2668,10 +2668,10 @@  discard block
 block discarded – undo
2668 2668
             if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
2669 2669
 
2670 2670
             $marge = array();
2671
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2672
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2673
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2674
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2671
+            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l'] + 0.03;
2672
+            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r'] + 0.03;
2673
+            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t'] + 0.03;
2674
+            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b'] + 0.03;
2675 2675
 
2676 2676
             // extract the content of the div
2677 2677
             $level = $this->parsingHtml->getLevel($this->_parsePos);
@@ -2690,10 +2690,10 @@  discard block
 block discarded – undo
2690 2690
             $wReel = $w;
2691 2691
             $hReel = $h;
2692 2692
 
2693
-            $w+= $marge['l']+$marge['r']+0.001;
2694
-            $h+= $marge['t']+$marge['b']+0.001;
2693
+            $w += $marge['l'] + $marge['r'] + 0.001;
2694
+            $h += $marge['t'] + $marge['b'] + 0.001;
2695 2695
 
2696
-            if ($this->parsingCss->value['overflow']=='hidden') {
2696
+            if ($this->parsingCss->value['overflow'] == 'hidden') {
2697 2697
                 $overW = max($w, $this->parsingCss->value['width']);
2698 2698
                 $overH = max($h, $this->parsingCss->value['height']);
2699 2699
                 $overflow = true;
@@ -2706,11 +2706,11 @@  discard block
 block discarded – undo
2706 2706
                 $overW = null;
2707 2707
                 $overH = null;
2708 2708
                 $overflow = false;
2709
-                $this->parsingCss->value['width']    = max($w, $this->parsingCss->value['width']);
2710
-                $this->parsingCss->value['height']    = max($h, $this->parsingCss->value['height']);
2709
+                $this->parsingCss->value['width'] = max($w, $this->parsingCss->value['width']);
2710
+                $this->parsingCss->value['height'] = max($h, $this->parsingCss->value['height']);
2711 2711
             }
2712 2712
 
2713
-            switch($this->parsingCss->value['rotate'])
2713
+            switch ($this->parsingCss->value['rotate'])
2714 2714
             {
2715 2715
                 case 90:
2716 2716
                     $tmp = $overH; $overH = $overW; $overW = $tmp;
@@ -2718,7 +2718,7 @@  discard block
 block discarded – undo
2718 2718
                     unset($tmp);
2719 2719
                     $w = $this->parsingCss->value['height'];
2720 2720
                     $h = $this->parsingCss->value['width'];
2721
-                    $tX =-$h;
2721
+                    $tX = -$h;
2722 2722
                     $tY = 0;
2723 2723
                     break;
2724 2724
 
@@ -2736,7 +2736,7 @@  discard block
 block discarded – undo
2736 2736
                     $w = $this->parsingCss->value['height'];
2737 2737
                     $h = $this->parsingCss->value['width'];
2738 2738
                     $tX = 0;
2739
-                    $tY =-$w;
2739
+                    $tY = -$w;
2740 2740
                     break;
2741 2741
 
2742 2742
                 default:
@@ -2749,14 +2749,14 @@  discard block
 block discarded – undo
2749 2749
 
2750 2750
             if (!$this->parsingCss->value['position']) {
2751 2751
                 if (
2752
-                    $w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
2753
-                    $this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
2752
+                    $w < ($this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin()) &&
2753
+                    $this->pdf->getX() + $w >= ($this->pdf->getW() - $this->pdf->getrMargin())
2754 2754
                     )
2755 2755
                     $this->_tag_open_BR(array());
2756 2756
 
2757 2757
                 if (
2758
-                        ($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
2759
-                        ($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
2758
+                        ($h < ($this->pdf->getH() - $this->pdf->gettMargin() - $this->pdf->getbMargin())) &&
2759
+                        ($this->pdf->getY() + $h >= ($this->pdf->getH() - $this->pdf->getbMargin())) &&
2760 2760
                         !$this->_isInOverflow
2761 2761
                     )
2762 2762
                     $this->_setNewPage();
@@ -2764,9 +2764,9 @@  discard block
 block discarded – undo
2764 2764
                 $old = $this->parsingCss->getOldValues();
2765 2765
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2766 2766
 
2767
-                if ($parentWidth>$w) {
2768
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2769
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
2767
+                if ($parentWidth > $w) {
2768
+                    if ($alignObject == 'center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth - $w) * 0.5);
2769
+                    else if ($alignObject == 'right')    $this->pdf->setX($this->pdf->getX() + $parentWidth - $w);
2770 2770
                 }
2771 2771
 
2772 2772
                 $this->parsingCss->setPosition();
@@ -2774,9 +2774,9 @@  discard block
 block discarded – undo
2774 2774
                 $old = $this->parsingCss->getOldValues();
2775 2775
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2776 2776
 
2777
-                if ($parentWidth>$w) {
2778
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2779
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
2777
+                if ($parentWidth > $w) {
2778
+                    if ($alignObject == 'center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth - $w) * 0.5);
2779
+                    else if ($alignObject == 'right')    $this->pdf->setX($this->pdf->getX() + $parentWidth - $w);
2780 2780
                 }
2781 2781
 
2782 2782
                 $this->parsingCss->setPosition();
@@ -2805,61 +2805,61 @@  discard block
 block discarded – undo
2805 2805
             );
2806 2806
 
2807 2807
             $marge = array();
2808
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2809
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2810
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2811
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2808
+            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l'] + 0.03;
2809
+            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r'] + 0.03;
2810
+            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t'] + 0.03;
2811
+            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b'] + 0.03;
2812 2812
 
2813
-            $this->parsingCss->value['width'] -= $marge['l']+$marge['r'];
2814
-            $this->parsingCss->value['height']-= $marge['t']+$marge['b'];
2813
+            $this->parsingCss->value['width'] -= $marge['l'] + $marge['r'];
2814
+            $this->parsingCss->value['height'] -= $marge['t'] + $marge['b'];
2815 2815
 
2816 2816
             $xCorr = 0;
2817 2817
             $yCorr = 0;
2818 2818
             if (!$this->_subPart && !$this->_isSubPart) {
2819
-                switch($this->parsingCss->value['text-align'])
2819
+                switch ($this->parsingCss->value['text-align'])
2820 2820
                 {
2821 2821
                     case 'right':
2822
-                        $xCorr = ($this->parsingCss->value['width']-$wReel);
2822
+                        $xCorr = ($this->parsingCss->value['width'] - $wReel);
2823 2823
                         break;
2824 2824
                     case 'center':
2825
-                        $xCorr = ($this->parsingCss->value['width']-$wReel)*0.5;
2825
+                        $xCorr = ($this->parsingCss->value['width'] - $wReel) * 0.5;
2826 2826
                         break;
2827 2827
                 }
2828
-                if ($xCorr>0) $xCorr=0;
2829
-                switch($this->parsingCss->value['vertical-align'])
2828
+                if ($xCorr > 0) $xCorr = 0;
2829
+                switch ($this->parsingCss->value['vertical-align'])
2830 2830
                 {
2831 2831
                     case 'bottom':
2832
-                        $yCorr = ($this->parsingCss->value['height']-$hReel);
2832
+                        $yCorr = ($this->parsingCss->value['height'] - $hReel);
2833 2833
                         break;
2834 2834
                     case 'middle':
2835
-                        $yCorr = ($this->parsingCss->value['height']-$hReel)*0.5;
2835
+                        $yCorr = ($this->parsingCss->value['height'] - $hReel) * 0.5;
2836 2836
                         break;
2837 2837
                 }
2838 2838
             }
2839 2839
 
2840 2840
             if ($overflow) {
2841
-                $overW-= $marge['l']+$marge['r'];
2842
-                $overH-= $marge['t']+$marge['b'];
2841
+                $overW -= $marge['l'] + $marge['r'];
2842
+                $overH -= $marge['t'] + $marge['b'];
2843 2843
                 $this->pdf->clippingPathStart(
2844
-                    $this->parsingCss->value['x']+$marge['l'],
2845
-                    $this->parsingCss->value['y']+$marge['t'],
2844
+                    $this->parsingCss->value['x'] + $marge['l'],
2845
+                    $this->parsingCss->value['y'] + $marge['t'],
2846 2846
                     $this->parsingCss->value['width'],
2847 2847
                     $this->parsingCss->value['height']
2848 2848
                 );
2849 2849
 
2850
-                $this->parsingCss->value['x']+= $xCorr;
2850
+                $this->parsingCss->value['x'] += $xCorr;
2851 2851
 
2852 2852
                 // marges from the dimension of the content
2853
-                $mL = $this->parsingCss->value['x']+$marge['l'];
2853
+                $mL = $this->parsingCss->value['x'] + $marge['l'];
2854 2854
                 $mR = $this->pdf->getW() - $mL - $overW;
2855 2855
             } else {
2856 2856
                 // marges from the dimension of the div
2857
-                $mL = $this->parsingCss->value['x']+$marge['l'];
2857
+                $mL = $this->parsingCss->value['x'] + $marge['l'];
2858 2858
                 $mR = $this->pdf->getW() - $mL - $this->parsingCss->value['width'];
2859 2859
             }
2860 2860
 
2861
-            $x = $this->parsingCss->value['x']+$marge['l'];
2862
-            $y = $this->parsingCss->value['y']+$marge['t']+$yCorr;
2861
+            $x = $this->parsingCss->value['x'] + $marge['l'];
2862
+            $y = $this->parsingCss->value['y'] + $marge['t'] + $yCorr;
2863 2863
             $this->_saveMargin($mL, 0, $mR);
2864 2864
             $this->pdf->setXY($x, $y);
2865 2865
 
@@ -2907,7 +2907,7 @@  discard block
 block discarded – undo
2907 2907
             $this->parsingCss->analyse('fieldset', $param);
2908 2908
 
2909 2909
             // get height of LEGEND element and make fieldset corrections
2910
-            for ($tempPos = $this->_parsePos + 1; $tempPos<count($this->parsingHtml->code); $tempPos++) {
2910
+            for ($tempPos = $this->_parsePos + 1; $tempPos < count($this->parsingHtml->code); $tempPos++) {
2911 2911
                 $action = $this->parsingHtml->code[$tempPos];
2912 2912
                 if ($action['name'] == 'fieldset') break;
2913 2913
                 if ($action['name'] == 'legend' && !$action['close']) {
@@ -2918,7 +2918,7 @@  discard block
 block discarded – undo
2918 2918
                     $sub->parsingHtml->code = $this->parsingHtml->getLevel($tempPos - 1);
2919 2919
 
2920 2920
                     $res = null;
2921
-                    for ($sub->_parsePos = 0; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
2921
+                    for ($sub->_parsePos = 0; $sub->_parsePos < count($sub->parsingHtml->code); $sub->_parsePos++) {
2922 2922
                         $action = $sub->parsingHtml->code[$sub->_parsePos];
2923 2923
                         $sub->_executeAction($action);
2924 2924
 
@@ -2952,11 +2952,11 @@  discard block
 block discarded – undo
2952 2952
          * @param  string $other name of tag that used the div tag
2953 2953
          * @return boolean
2954 2954
          */
2955
-        protected function _tag_close_DIV($param, $other='div')
2955
+        protected function _tag_close_DIV($param, $other = 'div')
2956 2956
         {
2957 2957
             if ($this->_isForOneLine) return false;
2958 2958
 
2959
-            if ($this->parsingCss->value['overflow']=='hidden') {
2959
+            if ($this->parsingCss->value['overflow'] == 'hidden') {
2960 2960
                 $this->_maxX = $this->parsingCss->value['old_maxX'];
2961 2961
                 $this->_maxY = $this->parsingCss->value['old_maxY'];
2962 2962
                 $this->_maxH = $this->parsingCss->value['old_maxH'];
@@ -2968,17 +2968,17 @@  discard block
 block discarded – undo
2968 2968
                 $this->pdf->stopTransform();
2969 2969
 
2970 2970
             $marge = array();
2971
-            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
2972
-            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r']+0.03;
2973
-            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t']+0.03;
2974
-            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b']+0.03;
2971
+            $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l'] + 0.03;
2972
+            $marge['r'] = $this->parsingCss->value['border']['r']['width'] + $this->parsingCss->value['padding']['r'] + 0.03;
2973
+            $marge['t'] = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['padding']['t'] + 0.03;
2974
+            $marge['b'] = $this->parsingCss->value['border']['b']['width'] + $this->parsingCss->value['padding']['b'] + 0.03;
2975 2975
 
2976 2976
             $x = $this->parsingCss->value['x'];
2977 2977
             $y = $this->parsingCss->value['y'];
2978
-            $w = $this->parsingCss->value['width']+$marge['l']+$marge['r']+$this->parsingCss->value['margin']['r'];
2979
-            $h = $this->parsingCss->value['height']+$marge['t']+$marge['b']+$this->parsingCss->value['margin']['b'];
2978
+            $w = $this->parsingCss->value['width'] + $marge['l'] + $marge['r'] + $this->parsingCss->value['margin']['r'];
2979
+            $h = $this->parsingCss->value['height'] + $marge['t'] + $marge['b'] + $this->parsingCss->value['margin']['b'];
2980 2980
 
2981
-            switch($this->parsingCss->value['rotate'])
2981
+            switch ($this->parsingCss->value['rotate'])
2982 2982
             {
2983 2983
                 case 90:
2984 2984
                     $t = $w; $w = $h; $h = $t;
@@ -2993,11 +2993,11 @@  discard block
 block discarded – undo
2993 2993
             }
2994 2994
 
2995 2995
 
2996
-            if ($this->parsingCss->value['position']!='absolute') {
2997
-                $this->pdf->setXY($x+$w, $y);
2996
+            if ($this->parsingCss->value['position'] != 'absolute') {
2997
+                $this->pdf->setXY($x + $w, $y);
2998 2998
 
2999
-                $this->_maxX = max($this->_maxX, $x+$w);
3000
-                $this->_maxY = max($this->_maxY, $y+$h);
2999
+                $this->_maxX = max($this->_maxX, $x + $w);
3000
+                $this->_maxY = max($this->_maxY, $y + $h);
3001 3001
                 $this->_maxH = max($this->_maxH, $h);
3002 3002
             } else {
3003 3003
                 $this->pdf->setXY($this->parsingCss->value['xc'], $this->parsingCss->value['yc']);
@@ -3005,7 +3005,7 @@  discard block
 block discarded – undo
3005 3005
                 $this->_loadMax();
3006 3006
             }
3007 3007
 
3008
-            $block = ($this->parsingCss->value['display']!='inline' && $this->parsingCss->value['position']!='absolute');
3008
+            $block = ($this->parsingCss->value['display'] != 'inline' && $this->parsingCss->value['position'] != 'absolute');
3009 3009
 
3010 3010
             $this->parsingCss->load();
3011 3011
             $this->parsingCss->fontSet();
@@ -3064,8 +3064,8 @@  discard block
 block discarded – undo
3064 3064
         {
3065 3065
             // for  compatibility with old versions < 3.29
3066 3066
             $lstBarcode = array();
3067
-            $lstBarcode['UPC_A']  =    'UPCA';
3068
-            $lstBarcode['CODE39'] =    'C39';
3067
+            $lstBarcode['UPC_A']  = 'UPCA';
3068
+            $lstBarcode['CODE39'] = 'C39';
3069 3069
 
3070 3070
             if (!isset($param['type']))     $param['type'] = 'C39';
3071 3071
             if (!isset($param['value']))    $param['value']    = 0;
@@ -3085,18 +3085,18 @@  discard block
 block discarded – undo
3085 3085
 
3086 3086
             $x = $this->pdf->getX();
3087 3087
             $y = $this->pdf->getY();
3088
-            $w = $this->parsingCss->value['width'];    if (!$w) $w = $this->parsingCss->ConvertToMM('50mm');
3089
-            $h = $this->parsingCss->value['height'];    if (!$h) $h = $this->parsingCss->ConvertToMM('10mm');
3090
-            $txt = ($param['label']!=='none' ? $this->parsingCss->value['font-size'] : false);
3088
+            $w = $this->parsingCss->value['width']; if (!$w) $w = $this->parsingCss->ConvertToMM('50mm');
3089
+            $h = $this->parsingCss->value['height']; if (!$h) $h = $this->parsingCss->ConvertToMM('10mm');
3090
+            $txt = ($param['label'] !== 'none' ? $this->parsingCss->value['font-size'] : false);
3091 3091
             $c = $this->parsingCss->value['color'];
3092 3092
             $infos = $this->pdf->myBarcode($param['value'], $param['type'], $x, $y, $w, $h, $txt, $c);
3093 3093
 
3094
-            $this->_maxX = max($this->_maxX, $x+$infos[0]);
3095
-            $this->_maxY = max($this->_maxY, $y+$infos[1]);
3094
+            $this->_maxX = max($this->_maxX, $x + $infos[0]);
3095
+            $this->_maxY = max($this->_maxY, $y + $infos[1]);
3096 3096
             $this->_maxH = max($this->_maxH, $infos[1]);
3097 3097
             $this->_maxE++;
3098 3098
 
3099
-            $this->pdf->setXY($x+$infos[0], $y);
3099
+            $this->pdf->setXY($x + $infos[0], $y);
3100 3100
 
3101 3101
             $this->parsingCss->load();
3102 3102
             $this->parsingCss->fontSet();
@@ -3137,13 +3137,13 @@  discard block
 block discarded – undo
3137 3137
             if (!isset($param['style']['color']))            $param['style']['color'] = '#000000';
3138 3138
             if (!isset($param['style']['background-color'])) $param['style']['background-color'] = '#FFFFFF';
3139 3139
             if (isset($param['style']['border'])) {
3140
-                $borders = $param['style']['border']!='none';
3140
+                $borders = $param['style']['border'] != 'none';
3141 3141
                 unset($param['style']['border']);
3142 3142
             } else {
3143 3143
                 $borders = true;
3144 3144
             }
3145 3145
 
3146
-            if ($param['value']==='') return true;
3146
+            if ($param['value'] === '') return true;
3147 3147
             if (!in_array($param['ec'], array('L', 'M', 'Q', 'H'))) $param['ec'] = 'H';
3148 3148
 
3149 3149
             $this->parsingCss->save();
@@ -3171,15 +3171,15 @@  discard block
 block discarded – undo
3171 3171
             }
3172 3172
 
3173 3173
             if (!$this->_subPart && !$this->_isSubPart) {
3174
-                $this->pdf->write2DBarcode($param['value'], 'QRCODE,'.$param['ec'], $x, $y, $size, $size, $style);
3174
+                $this->pdf->write2DBarcode($param['value'], 'QRCODE,' . $param['ec'], $x, $y, $size, $size, $style);
3175 3175
             }
3176 3176
 
3177
-            $this->_maxX = max($this->_maxX, $x+$size);
3178
-            $this->_maxY = max($this->_maxY, $y+$size);
3177
+            $this->_maxX = max($this->_maxX, $x + $size);
3178
+            $this->_maxY = max($this->_maxY, $y + $size);
3179 3179
             $this->_maxH = max($this->_maxH, $size);
3180 3180
             $this->_maxE++;
3181 3181
 
3182
-            $this->pdf->setX($x+$size);
3182
+            $this->pdf->setX($x + $size);
3183 3183
 
3184 3184
             $this->parsingCss->load();
3185 3185
             $this->parsingCss->fontSet();
@@ -3213,7 +3213,7 @@  discard block
 block discarded – undo
3213 3213
             $titre = isset($param['title']) ? trim($param['title']) : '';
3214 3214
             $level = isset($param['level']) ? floor($param['level']) : 0;
3215 3215
 
3216
-            if ($level<0) $level = 0;
3216
+            if ($level < 0) $level = 0;
3217 3217
             if ($titre) $this->pdf->Bookmark($titre, $level, -1);
3218 3218
 
3219 3219
             return true;
@@ -3241,7 +3241,7 @@  discard block
 block discarded – undo
3241 3241
          */
3242 3242
         protected function _tag_open_WRITE($param)
3243 3243
         {
3244
-            $fill = ($this->parsingCss->value['background']['color']!==null && $this->parsingCss->value['background']['image']===null);
3244
+            $fill = ($this->parsingCss->value['background']['color'] !== null && $this->parsingCss->value['background']['image'] === null);
3245 3245
             if (in_array($this->parsingCss->value['id_tag'], array('fieldset', 'legend', 'div', 'table', 'tr', 'td', 'th'))) {
3246 3246
                 $fill = false;
3247 3247
             }
@@ -3257,23 +3257,23 @@  discard block
 block discarded – undo
3257 3257
             $txt = str_replace('[[page_nb]]', $this->pdf->getMyAliasNbPages(), $txt);
3258 3258
             $txt = str_replace('[[page_cu]]', $this->pdf->getMyNumPage($this->_page), $txt);
3259 3259
 
3260
-            if ($this->parsingCss->value['text-transform']!='none') {
3261
-                if ($this->parsingCss->value['text-transform']=='capitalize')
3260
+            if ($this->parsingCss->value['text-transform'] != 'none') {
3261
+                if ($this->parsingCss->value['text-transform'] == 'capitalize')
3262 3262
                     $txt = ucwords($txt);
3263
-                else if ($this->parsingCss->value['text-transform']=='uppercase')
3263
+                else if ($this->parsingCss->value['text-transform'] == 'uppercase')
3264 3264
                     $txt = strtoupper($txt);
3265
-                else if ($this->parsingCss->value['text-transform']=='lowercase')
3265
+                else if ($this->parsingCss->value['text-transform'] == 'lowercase')
3266 3266
                     $txt = strtolower($txt);
3267 3267
             }
3268 3268
 
3269 3269
             // size of the text
3270
-            $h  = 1.08*$this->parsingCss->value['font-size'];
3271
-            $dh = $h*$this->parsingCss->value['mini-decal'];
3270
+            $h  = 1.08 * $this->parsingCss->value['font-size'];
3271
+            $dh = $h * $this->parsingCss->value['mini-decal'];
3272 3272
             $lh = $this->parsingCss->getLineHeight();
3273 3273
 
3274 3274
             // identify the align
3275 3275
             $align = 'L';
3276
-            if ($this->parsingCss->value['text-align']=='li_right') {
3276
+            if ($this->parsingCss->value['text-align'] == 'li_right') {
3277 3277
                 $w = $this->parsingCss->value['width'];
3278 3278
                 $align = 'R';
3279 3279
             }
@@ -3283,10 +3283,10 @@  discard block
 block discarded – undo
3283 3283
             $words = explode(' ', $txt);
3284 3284
             foreach ($words as $k => $word) {
3285 3285
                 $words[$k] = array($word, $this->pdf->GetStringWidth($word));
3286
-                $w+= $words[$k][1];
3286
+                $w += $words[$k][1];
3287 3287
             }
3288 3288
             $space = $this->pdf->GetStringWidth(' ');
3289
-            $w+= $space*(count($words)-1);
3289
+            $w += $space * (count($words) - 1);
3290 3290
 
3291 3291
             // position in the text
3292 3292
             $currPos = 0;
@@ -3306,13 +3306,13 @@  discard block
 block discarded – undo
3306 3306
             $nb = 0;
3307 3307
 
3308 3308
             // while we have words, and the text does not fit on the line => we cut the sentence
3309
-            while ($x+$w>$right && $x<$right+$space && count($words)) {
3309
+            while ($x + $w > $right && $x < $right + $space && count($words)) {
3310 3310
                 // adding words 1 by 1 to fit on the line
3311
-                $i=0;
3311
+                $i = 0;
3312 3312
                 $old = array('', 0);
3313 3313
                 $str = $words[0];
3314 3314
                 $add = false;
3315
-                while (($x+$str[1])<$right) {
3315
+                while (($x + $str[1]) < $right) {
3316 3316
                     $i++;
3317 3317
                     $add = true;
3318 3318
 
@@ -3320,26 +3320,26 @@  discard block
 block discarded – undo
3320 3320
                     $old = $str;
3321 3321
 
3322 3322
                     if (!count($words)) break;
3323
-                    $str[0].= ' '.$words[0][0];
3324
-                    $str[1]+= $space+$words[0][1];
3323
+                    $str[0] .= ' ' . $words[0][0];
3324
+                    $str[1] += $space + $words[0][1];
3325 3325
                 }
3326 3326
                 $str = $old;
3327 3327
 
3328 3328
                 // if  nothing fit on the line, and if the first word does not fit on the line => the word is too long, we put it
3329
-                if ($i==0 && (($left+$words[0][1])>=$right)) {
3329
+                if ($i == 0 && (($left + $words[0][1]) >= $right)) {
3330 3330
                     $str = $words[0];
3331 3331
                     array_shift($words);
3332 3332
                     $i++;
3333 3333
                     $add = true;
3334 3334
                 }
3335
-                $currPos+= ($currPos ? 1 : 0)+strlen($str[0]);
3335
+                $currPos += ($currPos ? 1 : 0) + strlen($str[0]);
3336 3336
 
3337 3337
                 // write the extract sentence that fit on the page
3338
-                $wc = ($align=='L' ? $str[1] : $this->parsingCss->value['width']);
3339
-                if ($right - $left<$wc) $wc = $right - $left;
3338
+                $wc = ($align == 'L' ? $str[1] : $this->parsingCss->value['width']);
3339
+                if ($right - $left < $wc) $wc = $right - $left;
3340 3340
 
3341 3341
                 if (strlen($str[0])) {
3342
-                    $this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3342
+                    $this->pdf->setXY($this->pdf->getX(), $y + $dh + $dy);
3343 3343
                     $this->pdf->Cell($wc, $h, $str[0], 0, 0, $align, $fill, $this->_isInLink);
3344 3344
                     $this->pdf->setXY($this->pdf->getX(), $y);
3345 3345
                 }
@@ -3349,7 +3349,7 @@  discard block
 block discarded – undo
3349 3349
                 $maxX = max($maxX, $this->pdf->getX());
3350 3350
 
3351 3351
                 // new position and new width for the "while"
3352
-                $w-= $str[1];
3352
+                $w -= $str[1];
3353 3353
                 $y = $this->pdf->getY();
3354 3354
                 $x = $this->pdf->getX();
3355 3355
                 $dy = $this->_getElementY($lh);
@@ -3357,16 +3357,16 @@  discard block
 block discarded – undo
3357 3357
                 // if we have again words to write
3358 3358
                 if (count($words)) {
3359 3359
                     // remove the space at the end
3360
-                    if ($add) $w-= $space;
3360
+                    if ($add) $w -= $space;
3361 3361
 
3362 3362
                     // if we don't add any word, and if the first word is empty => useless space to skip
3363
-                    if (!$add && $words[0][0]==='') {
3363
+                    if (!$add && $words[0][0] === '') {
3364 3364
                         array_shift($words);
3365 3365
                     }
3366 3366
 
3367 3367
                     // if it is just to calculate for one line => adding the number of words
3368 3368
                     if ($this->_isForOneLine) {
3369
-                        $this->_maxE+= $i;
3369
+                        $this->_maxE += $i;
3370 3370
                         $this->_maxX = max($this->_maxX, $maxX);
3371 3371
                         return null;
3372 3372
                     }
@@ -3380,7 +3380,7 @@  discard block
 block discarded – undo
3380 3380
                     $dy = $this->_getElementY($lh);
3381 3381
 
3382 3382
                     // if the next line does  not fit on the page => new page
3383
-                    if ($y + $h>=$this->pdf->getH() - $this->pdf->getbMargin()) {
3383
+                    if ($y + $h >= $this->pdf->getH() - $this->pdf->getbMargin()) {
3384 3384
                         if (!$this->_isInOverflow && !$this->_isInFooter) {
3385 3385
                             $this->_setNewPage(null, '', null, $currPos);
3386 3386
                             $y = $this->pdf->getY();
@@ -3391,9 +3391,9 @@  discard block
 block discarded – undo
3391 3391
 
3392 3392
                     // if more than 10000 line => error
3393 3393
                     $nb++;
3394
-                    if ($nb>10000) {
3395
-                        $txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3396
-                        throw new HTML2PDF_exception(2, array($txt, $right-$left, $w));
3394
+                    if ($nb > 10000) {
3395
+                        $txt = ''; foreach ($words as $k => $word) $txt .= ($k ? ' ' : '') . $word[0];
3396
+                        throw new HTML2PDF_exception(2, array($txt, $right - $left, $w));
3397 3397
                     }
3398 3398
 
3399 3399
                     // new margins for the new line
@@ -3403,17 +3403,17 @@  discard block
 block discarded – undo
3403 3403
 
3404 3404
             // if we have words after automatic cut, it is because they fit on the line => we write the text
3405 3405
             if (count($words)) {
3406
-                $txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3407
-                $w+= $this->pdf->getWordSpacing()*(count($words));
3408
-                $this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3409
-                $this->pdf->Cell(($align=='L' ? $w : $this->parsingCss->value['width']), $h, $txt, 0, 0, $align, $fill, $this->_isInLink);
3406
+                $txt = ''; foreach ($words as $k => $word) $txt .= ($k ? ' ' : '') . $word[0];
3407
+                $w += $this->pdf->getWordSpacing() * (count($words));
3408
+                $this->pdf->setXY($this->pdf->getX(), $y + $dh + $dy);
3409
+                $this->pdf->Cell(($align == 'L' ? $w : $this->parsingCss->value['width']), $h, $txt, 0, 0, $align, $fill, $this->_isInLink);
3410 3410
                 $this->pdf->setXY($this->pdf->getX(), $y);
3411 3411
                 $this->_maxH = max($this->_maxH, $lh);
3412
-                $this->_maxE+= count($words);
3412
+                $this->_maxE += count($words);
3413 3413
             }
3414 3414
 
3415 3415
             $maxX = max($maxX, $this->pdf->getX());
3416
-            $maxY = $this->pdf->getY()+$h;
3416
+            $maxY = $this->pdf->getY() + $h;
3417 3417
 
3418 3418
             $this->_maxX = max($this->_maxX, $maxX);
3419 3419
             $this->_maxY = max($this->_maxY, $maxY);
@@ -3435,7 +3435,7 @@  discard block
 block discarded – undo
3435 3435
 
3436 3436
             $h = max($this->_maxH, $this->parsingCss->getLineHeight());
3437 3437
 
3438
-            if ($this->_maxH==0) $this->_maxY = max($this->_maxY, $this->pdf->getY()+$h);
3438
+            if ($this->_maxH == 0) $this->_maxY = max($this->_maxY, $this->pdf->getY() + $h);
3439 3439
 
3440 3440
             $this->_makeBreakLine($h, $curr);
3441 3441
 
@@ -3461,21 +3461,21 @@  discard block
 block discarded – undo
3461 3461
             if ($this->_maxH) $this->_tag_open_BR($param);
3462 3462
 
3463 3463
             $fontSize = $this->parsingCss->value['font-size'];
3464
-            $this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
3465
-            $this->parsingCss->value['font-size']=0;
3464
+            $this->parsingCss->value['font-size'] = $fontSize * 0.5; $this->_tag_open_BR($param);
3465
+            $this->parsingCss->value['font-size'] = 0;
3466 3466
 
3467 3467
             $param['style']['width'] = '100%';
3468 3468
 
3469 3469
             $this->parsingCss->save();
3470
-            $this->parsingCss->value['height']=$this->parsingCss->ConvertToMM('1mm');
3470
+            $this->parsingCss->value['height'] = $this->parsingCss->ConvertToMM('1mm');
3471 3471
 
3472 3472
             $this->parsingCss->analyse('hr', $param);
3473 3473
             $this->parsingCss->setPosition();
3474 3474
             $this->parsingCss->fontSet();
3475 3475
 
3476 3476
             $h = $this->parsingCss->value['height'];
3477
-            if ($h)    $h-= $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3478
-            if ($h<=0) $h = $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3477
+            if ($h)    $h -= $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['border']['b']['width'];
3478
+            if ($h <= 0) $h = $this->parsingCss->value['border']['t']['width'] + $this->parsingCss->value['border']['b']['width'];
3479 3479
 
3480 3480
             $this->_drawRectangle($this->pdf->getX(), $this->pdf->getY(), $this->parsingCss->value['width'], $h, $this->parsingCss->value['border'], 0, 0, $this->parsingCss->value['background']);
3481 3481
             $this->_maxH = $h;
@@ -3485,8 +3485,8 @@  discard block
 block discarded – undo
3485 3485
 
3486 3486
             $this->_tag_open_BR($param);
3487 3487
 
3488
-            $this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
3489
-            $this->parsingCss->value['font-size']=$fontSize;
3488
+            $this->parsingCss->value['font-size'] = $fontSize * 0.5; $this->_tag_open_BR($param);
3489
+            $this->parsingCss->value['font-size'] = $fontSize;
3490 3490
 
3491 3491
             $this->parsingCss->value['text-align'] = $oldAlign;
3492 3492
             $this->_setNewPositionForNewLine();
@@ -3748,7 +3748,7 @@  discard block
 block discarded – undo
3748 3748
          * @param  string $other
3749 3749
          * @return boolean
3750 3750
          */
3751
-        protected function _tag_open_U($param, $other='u')
3751
+        protected function _tag_open_U($param, $other = 'u')
3752 3752
         {
3753 3753
             $this->parsingCss->save();
3754 3754
             $this->parsingCss->value['font-underline'] = true;
@@ -3810,7 +3810,7 @@  discard block
 block discarded – undo
3810 3810
             $this->_isInLink = str_replace('&amp;', '&', isset($param['href']) ? $param['href'] : '');
3811 3811
 
3812 3812
             if (isset($param['name'])) {
3813
-                $name =     $param['name'];
3813
+                $name = $param['name'];
3814 3814
                 if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
3815 3815
 
3816 3816
                 if (!$this->_lstAnchor[$name][1]) {
@@ -3845,7 +3845,7 @@  discard block
 block discarded – undo
3845 3845
          */
3846 3846
         protected function _tag_close_A($param)
3847 3847
         {
3848
-            $this->_isInLink    = '';
3848
+            $this->_isInLink = '';
3849 3849
             $this->parsingCss->load();
3850 3850
             $this->parsingCss->fontSet();
3851 3851
 
@@ -3954,7 +3954,7 @@  discard block
 block discarded – undo
3954 3954
         {
3955 3955
             if ($this->_isForOneLine) return false;
3956 3956
 
3957
-            $this->_maxH+= $this->parsingCss->value['margin']['b'];
3957
+            $this->_maxH += $this->parsingCss->value['margin']['b'];
3958 3958
             $h = max($this->_maxH, $this->parsingCss->getLineHeight());
3959 3959
 
3960 3960
             $this->parsingCss->load();
@@ -4131,21 +4131,21 @@  discard block
 block discarded – undo
4131 4131
             $this->parsingCss->fontSet();
4132 4132
 
4133 4133
              // cancel the effects of the setPosition
4134
-            $this->pdf->setXY($this->pdf->getX()-$this->parsingCss->value['margin']['l'], $this->pdf->getY()-$this->parsingCss->value['margin']['t']);
4134
+            $this->pdf->setXY($this->pdf->getX() - $this->parsingCss->value['margin']['l'], $this->pdf->getY() - $this->parsingCss->value['margin']['t']);
4135 4135
 
4136 4136
             list($mL, $mR) = $this->_getMargins($this->pdf->getY());
4137
-            $mR = $this->pdf->getW()-$mR;
4138
-            $mL+= $this->parsingCss->value['margin']['l']+$this->parsingCss->value['padding']['l'];
4139
-            $mR+= $this->parsingCss->value['margin']['r']+$this->parsingCss->value['padding']['r'];
4137
+            $mR = $this->pdf->getW() - $mR;
4138
+            $mL += $this->parsingCss->value['margin']['l'] + $this->parsingCss->value['padding']['l'];
4139
+            $mR += $this->parsingCss->value['margin']['r'] + $this->parsingCss->value['padding']['r'];
4140 4140
             $this->_saveMargin($mL, 0, $mR);
4141 4141
 
4142
-            if ($this->parsingCss->value['text-indent']>0) {
4143
-                $y = $this->pdf->getY()+$this->parsingCss->value['margin']['t']+$this->parsingCss->value['padding']['t'];
4144
-                $this->_pageMarges[floor($y*100)] = array($mL+$this->parsingCss->value['text-indent'], $this->pdf->getW()-$mR);
4145
-                $y+= $this->parsingCss->getLineHeight()*0.1;
4146
-                $this->_pageMarges[floor($y*100)] = array($mL, $this->pdf->getW()-$mR);
4142
+            if ($this->parsingCss->value['text-indent'] > 0) {
4143
+                $y = $this->pdf->getY() + $this->parsingCss->value['margin']['t'] + $this->parsingCss->value['padding']['t'];
4144
+                $this->_pageMarges[floor($y * 100)] = array($mL + $this->parsingCss->value['text-indent'], $this->pdf->getW() - $mR);
4145
+                $y += $this->parsingCss->getLineHeight() * 0.1;
4146
+                $this->_pageMarges[floor($y * 100)] = array($mL, $this->pdf->getW() - $mR);
4147 4147
             }
4148
-            $this->_makeBreakLine($this->parsingCss->value['margin']['t']+$this->parsingCss->value['padding']['t']);
4148
+            $this->_makeBreakLine($this->parsingCss->value['margin']['t'] + $this->parsingCss->value['padding']['t']);
4149 4149
             $this->_isInParagraph = array($mL, $mR);
4150 4150
             return true;
4151 4151
         }
@@ -4164,7 +4164,7 @@  discard block
 block discarded – undo
4164 4164
             if ($this->_maxH) $this->_tag_open_BR(array());
4165 4165
             $this->_isInParagraph = false;
4166 4166
             $this->_loadMargin();
4167
-            $h = $this->parsingCss->value['margin']['b']+$this->parsingCss->value['padding']['b'];
4167
+            $h = $this->parsingCss->value['margin']['b'] + $this->parsingCss->value['padding']['b'];
4168 4168
 
4169 4169
             $this->parsingCss->load();
4170 4170
             $this->parsingCss->fontSet();
@@ -4183,7 +4183,7 @@  discard block
 block discarded – undo
4183 4183
          */
4184 4184
         protected function _tag_open_PRE($param, $other = 'pre')
4185 4185
         {
4186
-            if ($other=='pre' && $this->_maxH) $this->_tag_open_BR(array());
4186
+            if ($other == 'pre' && $this->_maxH) $this->_tag_open_BR(array());
4187 4187
 
4188 4188
             $this->parsingCss->save();
4189 4189
             $this->parsingCss->value['font-family'] = 'courier';
@@ -4191,7 +4191,7 @@  discard block
 block discarded – undo
4191 4191
             $this->parsingCss->setPosition();
4192 4192
             $this->parsingCss->fontSet();
4193 4193
 
4194
-            if ($other=='pre') return $this->_tag_open_DIV($param, $other);
4194
+            if ($other == 'pre') return $this->_tag_open_DIV($param, $other);
4195 4195
 
4196 4196
             return true;
4197 4197
         }
@@ -4219,7 +4219,7 @@  discard block
 block discarded – undo
4219 4219
          */
4220 4220
         protected function _tag_close_PRE($param, $other = 'pre')
4221 4221
         {
4222
-            if ($other=='pre') {
4222
+            if ($other == 'pre') {
4223 4223
                 if ($this->_isForOneLine) return false;
4224 4224
 
4225 4225
                 $this->_tag_close_DIV($param, $other);
@@ -4253,7 +4253,7 @@  discard block
 block discarded – undo
4253 4253
         protected function _tag_open_BIG($param)
4254 4254
         {
4255 4255
             $this->parsingCss->save();
4256
-            $this->parsingCss->value['mini-decal']-= $this->parsingCss->value['mini-size']*0.12;
4256
+            $this->parsingCss->value['mini-decal'] -= $this->parsingCss->value['mini-size'] * 0.12;
4257 4257
             $this->parsingCss->value['mini-size'] *= 1.2;
4258 4258
             $this->parsingCss->analyse('big', $param);
4259 4259
             $this->parsingCss->setPosition();
@@ -4286,7 +4286,7 @@  discard block
 block discarded – undo
4286 4286
         protected function _tag_open_SMALL($param)
4287 4287
         {
4288 4288
             $this->parsingCss->save();
4289
-            $this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.05;
4289
+            $this->parsingCss->value['mini-decal'] += $this->parsingCss->value['mini-size'] * 0.05;
4290 4290
             $this->parsingCss->value['mini-size'] *= 0.82;
4291 4291
             $this->parsingCss->analyse('small', $param);
4292 4292
             $this->parsingCss->setPosition();
@@ -4319,7 +4319,7 @@  discard block
 block discarded – undo
4319 4319
         protected function _tag_open_SUP($param)
4320 4320
         {
4321 4321
             $this->parsingCss->save();
4322
-            $this->parsingCss->value['mini-decal']-= $this->parsingCss->value['mini-size']*0.15;
4322
+            $this->parsingCss->value['mini-decal'] -= $this->parsingCss->value['mini-size'] * 0.15;
4323 4323
             $this->parsingCss->value['mini-size'] *= 0.75;
4324 4324
             $this->parsingCss->analyse('sup', $param);
4325 4325
             $this->parsingCss->setPosition();
@@ -4353,7 +4353,7 @@  discard block
 block discarded – undo
4353 4353
         protected function _tag_open_SUB($param)
4354 4354
         {
4355 4355
             $this->parsingCss->save();
4356
-            $this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.15;
4356
+            $this->parsingCss->value['mini-decal'] += $this->parsingCss->value['mini-size'] * 0.15;
4357 4357
             $this->parsingCss->value['mini-size'] *= 0.75;
4358 4358
             $this->parsingCss->analyse('sub', $param);
4359 4359
             $this->parsingCss->setPosition();
@@ -4491,7 +4491,7 @@  discard block
 block discarded – undo
4491 4491
 
4492 4492
             // if small LI
4493 4493
             if ($inf[1]) {
4494
-                $this->parsingCss->value['mini-decal']+= $this->parsingCss->value['mini-size']*0.045;
4494
+                $this->parsingCss->value['mini-decal'] += $this->parsingCss->value['mini-size'] * 0.045;
4495 4495
                 $this->parsingCss->value['mini-size'] *= 0.75;
4496 4496
             }
4497 4497
 
@@ -4499,21 +4499,21 @@  discard block
 block discarded – undo
4499 4499
             if ($this->_subPart) {
4500 4500
                 // TD for the puce
4501 4501
                 $tmpPos = $this->_tempPos;
4502
-                $tmpLst1 = $this->parsingHtml->code[$tmpPos+1];
4503
-                $tmpLst2 = $this->parsingHtml->code[$tmpPos+2];
4504
-                $this->parsingHtml->code[$tmpPos+1] = array();
4505
-                $this->parsingHtml->code[$tmpPos+1]['name']    = (isset($paramPUCE['src'])) ? 'img' : 'write';
4506
-                $this->parsingHtml->code[$tmpPos+1]['param']    = $paramPUCE; unset($this->parsingHtml->code[$tmpPos+1]['param']['style']['width']);
4507
-                $this->parsingHtml->code[$tmpPos+1]['close']    = 0;
4508
-                $this->parsingHtml->code[$tmpPos+2] = array();
4509
-                $this->parsingHtml->code[$tmpPos+2]['name']    = 'li';
4510
-                $this->parsingHtml->code[$tmpPos+2]['param']    = $paramPUCE;
4511
-                $this->parsingHtml->code[$tmpPos+2]['close']    = 1;
4502
+                $tmpLst1 = $this->parsingHtml->code[$tmpPos + 1];
4503
+                $tmpLst2 = $this->parsingHtml->code[$tmpPos + 2];
4504
+                $this->parsingHtml->code[$tmpPos + 1] = array();
4505
+                $this->parsingHtml->code[$tmpPos + 1]['name'] = (isset($paramPUCE['src'])) ? 'img' : 'write';
4506
+                $this->parsingHtml->code[$tmpPos + 1]['param']    = $paramPUCE; unset($this->parsingHtml->code[$tmpPos + 1]['param']['style']['width']);
4507
+                $this->parsingHtml->code[$tmpPos + 1]['close']    = 0;
4508
+                $this->parsingHtml->code[$tmpPos + 2] = array();
4509
+                $this->parsingHtml->code[$tmpPos + 2]['name'] = 'li';
4510
+                $this->parsingHtml->code[$tmpPos + 2]['param']    = $paramPUCE;
4511
+                $this->parsingHtml->code[$tmpPos + 2]['close']    = 1;
4512 4512
                 $this->_tag_open_TD($paramPUCE, 'li_sub');
4513 4513
                 $this->_tag_close_TD($param);
4514 4514
                 $this->_tempPos = $tmpPos;
4515
-                $this->parsingHtml->code[$tmpPos+1] = $tmpLst1;
4516
-                $this->parsingHtml->code[$tmpPos+2] = $tmpLst2;
4515
+                $this->parsingHtml->code[$tmpPos + 1] = $tmpLst1;
4516
+                $this->parsingHtml->code[$tmpPos + 2] = $tmpLst2;
4517 4517
             } else {
4518 4518
                 // TD for the puce
4519 4519
                 $this->_tag_open_TD($paramPUCE, 'li_sub');
@@ -4605,16 +4605,16 @@  discard block
 block discarded – undo
4605 4605
             if ($this->_subPart) {
4606 4606
                 HTML2PDF::$_tables[$param['num']]['thead']['tr'][0] = HTML2PDF::$_tables[$param['num']]['tr_curr'];
4607 4607
                 HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();
4608
-                for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4608
+                for ($pos = $this->_tempPos; $pos < count($this->parsingHtml->code); $pos++) {
4609 4609
                     $action = $this->parsingHtml->code[$pos];
4610
-                    if (strtolower($action['name'])=='thead') $action['name'] = 'thead_sub';
4610
+                    if (strtolower($action['name']) == 'thead') $action['name'] = 'thead_sub';
4611 4611
                     HTML2PDF::$_tables[$param['num']]['thead']['code'][] = $action;
4612
-                    if (strtolower($action['name'])=='thead_sub' && $action['close']) break;
4612
+                    if (strtolower($action['name']) == 'thead_sub' && $action['close']) break;
4613 4613
                 }
4614 4614
             } else {
4615 4615
                 $level = $this->parsingHtml->getLevel($this->_parsePos);
4616
-                $this->_parsePos+= count($level);
4617
-                HTML2PDF::$_tables[$param['num']]['tr_curr']+= count(HTML2PDF::$_tables[$param['num']]['thead']['tr']);
4616
+                $this->_parsePos += count($level);
4617
+                HTML2PDF::$_tables[$param['num']]['tr_curr'] += count(HTML2PDF::$_tables[$param['num']]['thead']['tr']);
4618 4618
             }
4619 4619
 
4620 4620
             return true;
@@ -4637,7 +4637,7 @@  discard block
 block discarded – undo
4637 4637
             // if we are in a sub HTM, construct the list of the TR in the thead
4638 4638
             if ($this->_subPart) {
4639 4639
                 $min = HTML2PDF::$_tables[$param['num']]['thead']['tr'][0];
4640
-                $max = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
4640
+                $max = HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1;
4641 4641
                 HTML2PDF::$_tables[$param['num']]['thead']['tr'] = range($min, $max);
4642 4642
             }
4643 4643
 
@@ -4664,16 +4664,16 @@  discard block
 block discarded – undo
4664 4664
             if ($this->_subPart) {
4665 4665
                 HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0] = HTML2PDF::$_tables[$param['num']]['tr_curr'];
4666 4666
                 HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();
4667
-                for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4667
+                for ($pos = $this->_tempPos; $pos < count($this->parsingHtml->code); $pos++) {
4668 4668
                     $action = $this->parsingHtml->code[$pos];
4669
-                    if (strtolower($action['name'])=='tfoot') $action['name'] = 'tfoot_sub';
4669
+                    if (strtolower($action['name']) == 'tfoot') $action['name'] = 'tfoot_sub';
4670 4670
                     HTML2PDF::$_tables[$param['num']]['tfoot']['code'][] = $action;
4671
-                    if (strtolower($action['name'])=='tfoot_sub' && $action['close']) break;
4671
+                    if (strtolower($action['name']) == 'tfoot_sub' && $action['close']) break;
4672 4672
                 }
4673 4673
             } else {
4674 4674
                 $level = $this->parsingHtml->getLevel($this->_parsePos);
4675
-                $this->_parsePos+= count($level);
4676
-                HTML2PDF::$_tables[$param['num']]['tr_curr']+= count(HTML2PDF::$_tables[$param['num']]['tfoot']['tr']);
4675
+                $this->_parsePos += count($level);
4676
+                HTML2PDF::$_tables[$param['num']]['tr_curr'] += count(HTML2PDF::$_tables[$param['num']]['tfoot']['tr']);
4677 4677
             }
4678 4678
 
4679 4679
             return true;
@@ -4696,7 +4696,7 @@  discard block
 block discarded – undo
4696 4696
             // if we are in a sub HTM, construct the list of the TR in the tfoot
4697 4697
             if ($this->_subPart) {
4698 4698
                 $min = HTML2PDF::$_tables[$param['num']]['tfoot']['tr'][0];
4699
-                $max = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
4699
+                $max = HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1;
4700 4700
                 HTML2PDF::$_tables[$param['num']]['tfoot']['tr'] = range($min, $max);
4701 4701
             }
4702 4702
 
@@ -4849,7 +4849,7 @@  discard block
 block discarded – undo
4849 4849
 
4850 4850
             // collapse table ?
4851 4851
             $collapse = false;
4852
-            if ($other=='table') {
4852
+            if ($other == 'table') {
4853 4853
                 $collapse = isset($this->parsingCss->value['border']['collapse']) ? $this->parsingCss->value['border']['collapse'] : false;
4854 4854
             }
4855 4855
 
@@ -4866,50 +4866,50 @@  discard block
 block discarded – undo
4866 4866
 
4867 4867
             // if we are in a SUB html => prepare the properties of the table
4868 4868
             if ($this->_subPart) {
4869
-                if ($this->_debugActif) $this->_DEBUG_add('Table n'.$param['num'], true);
4869
+                if ($this->_debugActif) $this->_DEBUG_add('Table n' . $param['num'], true);
4870 4870
                 HTML2PDF::$_tables[$param['num']] = array();
4871 4871
                 HTML2PDF::$_tables[$param['num']]['border']          = isset($param['border']) ? $this->parsingCss->readBorder($param['border']) : null;
4872 4872
                 HTML2PDF::$_tables[$param['num']]['cellpadding']     = $this->parsingCss->ConvertToMM(isset($param['cellpadding']) ? $param['cellpadding'] : '1px');
4873 4873
                 HTML2PDF::$_tables[$param['num']]['cellspacing']     = $this->parsingCss->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px');
4874
-                HTML2PDF::$_tables[$param['num']]['cases']           = array();          // properties of each TR/TD
4875
-                HTML2PDF::$_tables[$param['num']]['corr']            = array();          // link between TR/TD and colspan/rowspan
4876
-                HTML2PDF::$_tables[$param['num']]['corr_x']          = 0;                // position in 'cases'
4877
-                HTML2PDF::$_tables[$param['num']]['corr_y']          = 0;                // position in 'cases'
4878
-                HTML2PDF::$_tables[$param['num']]['td_curr']         = 0;                // current column
4879
-                HTML2PDF::$_tables[$param['num']]['tr_curr']         = 0;                // current row
4874
+                HTML2PDF::$_tables[$param['num']]['cases']           = array(); // properties of each TR/TD
4875
+                HTML2PDF::$_tables[$param['num']]['corr']            = array(); // link between TR/TD and colspan/rowspan
4876
+                HTML2PDF::$_tables[$param['num']]['corr_x']          = 0; // position in 'cases'
4877
+                HTML2PDF::$_tables[$param['num']]['corr_y']          = 0; // position in 'cases'
4878
+                HTML2PDF::$_tables[$param['num']]['td_curr']         = 0; // current column
4879
+                HTML2PDF::$_tables[$param['num']]['tr_curr']         = 0; // current row
4880 4880
                 HTML2PDF::$_tables[$param['num']]['curr_x']          = $this->pdf->getX();
4881 4881
                 HTML2PDF::$_tables[$param['num']]['curr_y']          = $this->pdf->getY();
4882
-                HTML2PDF::$_tables[$param['num']]['width']           = 0;                // global width
4883
-                HTML2PDF::$_tables[$param['num']]['height']          = 0;                // global height
4882
+                HTML2PDF::$_tables[$param['num']]['width']           = 0; // global width
4883
+                HTML2PDF::$_tables[$param['num']]['height']          = 0; // global height
4884 4884
                 HTML2PDF::$_tables[$param['num']]['align']           = $alignObject;
4885 4885
                 HTML2PDF::$_tables[$param['num']]['marge']           = array();
4886
-                HTML2PDF::$_tables[$param['num']]['marge']['t']      = $this->parsingCss->value['padding']['t']+$this->parsingCss->value['border']['t']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4887
-                HTML2PDF::$_tables[$param['num']]['marge']['r']      = $this->parsingCss->value['padding']['r']+$this->parsingCss->value['border']['r']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4888
-                HTML2PDF::$_tables[$param['num']]['marge']['b']      = $this->parsingCss->value['padding']['b']+$this->parsingCss->value['border']['b']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4889
-                HTML2PDF::$_tables[$param['num']]['marge']['l']      = $this->parsingCss->value['padding']['l']+$this->parsingCss->value['border']['l']['width']+HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5;
4890
-                HTML2PDF::$_tables[$param['num']]['page']            = 0;                // number of pages
4891
-                HTML2PDF::$_tables[$param['num']]['new_page']        = true;             // flag : new page for the current TR
4892
-                HTML2PDF::$_tables[$param['num']]['style_value']     = null;             // CSS style of the table
4893
-                HTML2PDF::$_tables[$param['num']]['thead']           = array();          // properties on the thead
4894
-                HTML2PDF::$_tables[$param['num']]['tfoot']           = array();          // properties on the tfoot
4895
-                HTML2PDF::$_tables[$param['num']]['thead']['tr']     = array();          // list of the TRs in the thead
4896
-                HTML2PDF::$_tables[$param['num']]['tfoot']['tr']     = array();          // list of the TRs in the tfoot
4897
-                HTML2PDF::$_tables[$param['num']]['thead']['height']    = 0;             // thead height
4898
-                HTML2PDF::$_tables[$param['num']]['tfoot']['height']    = 0;             // tfoot height
4899
-                HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();            // HTML content of the thead
4900
-                HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();            // HTML content of the tfoot
4901
-                HTML2PDF::$_tables[$param['num']]['cols']        = array();              // properties of the COLs
4886
+                HTML2PDF::$_tables[$param['num']]['marge']['t']      = $this->parsingCss->value['padding']['t'] + $this->parsingCss->value['border']['t']['width'] + HTML2PDF::$_tables[$param['num']]['cellspacing'] * 0.5;
4887
+                HTML2PDF::$_tables[$param['num']]['marge']['r']      = $this->parsingCss->value['padding']['r'] + $this->parsingCss->value['border']['r']['width'] + HTML2PDF::$_tables[$param['num']]['cellspacing'] * 0.5;
4888
+                HTML2PDF::$_tables[$param['num']]['marge']['b']      = $this->parsingCss->value['padding']['b'] + $this->parsingCss->value['border']['b']['width'] + HTML2PDF::$_tables[$param['num']]['cellspacing'] * 0.5;
4889
+                HTML2PDF::$_tables[$param['num']]['marge']['l']      = $this->parsingCss->value['padding']['l'] + $this->parsingCss->value['border']['l']['width'] + HTML2PDF::$_tables[$param['num']]['cellspacing'] * 0.5;
4890
+                HTML2PDF::$_tables[$param['num']]['page']            = 0; // number of pages
4891
+                HTML2PDF::$_tables[$param['num']]['new_page']        = true; // flag : new page for the current TR
4892
+                HTML2PDF::$_tables[$param['num']]['style_value']     = null; // CSS style of the table
4893
+                HTML2PDF::$_tables[$param['num']]['thead']           = array(); // properties on the thead
4894
+                HTML2PDF::$_tables[$param['num']]['tfoot']           = array(); // properties on the tfoot
4895
+                HTML2PDF::$_tables[$param['num']]['thead']['tr']     = array(); // list of the TRs in the thead
4896
+                HTML2PDF::$_tables[$param['num']]['tfoot']['tr']     = array(); // list of the TRs in the tfoot
4897
+                HTML2PDF::$_tables[$param['num']]['thead']['height']    = 0; // thead height
4898
+                HTML2PDF::$_tables[$param['num']]['tfoot']['height']    = 0; // tfoot height
4899
+                HTML2PDF::$_tables[$param['num']]['thead']['code'] = array(); // HTML content of the thead
4900
+                HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array(); // HTML content of the tfoot
4901
+                HTML2PDF::$_tables[$param['num']]['cols'] = array(); // properties of the COLs
4902 4902
 
4903 4903
                 $this->_saveMargin($this->pdf->getlMargin(), $this->pdf->gettMargin(), $this->pdf->getrMargin());
4904 4904
 
4905
-                $this->parsingCss->value['width']-= HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4905
+                $this->parsingCss->value['width'] -= HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4906 4906
             } else {
4907 4907
                 // we start from the first page and the first page of the table
4908 4908
                 HTML2PDF::$_tables[$param['num']]['page'] = 0;
4909 4909
                 HTML2PDF::$_tables[$param['num']]['td_curr']    = 0;
4910 4910
                 HTML2PDF::$_tables[$param['num']]['tr_curr']    = 0;
4911
-                HTML2PDF::$_tables[$param['num']]['td_x']        = HTML2PDF::$_tables[$param['num']]['marge']['l']+HTML2PDF::$_tables[$param['num']]['curr_x'];
4912
-                HTML2PDF::$_tables[$param['num']]['td_y']        = HTML2PDF::$_tables[$param['num']]['marge']['t']+HTML2PDF::$_tables[$param['num']]['curr_y'];
4911
+                HTML2PDF::$_tables[$param['num']]['td_x']        = HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['curr_x'];
4912
+                HTML2PDF::$_tables[$param['num']]['td_y']        = HTML2PDF::$_tables[$param['num']]['marge']['t'] + HTML2PDF::$_tables[$param['num']]['curr_y'];
4913 4913
 
4914 4914
                 // draw the borders/background of the first page/part of the table
4915 4915
                 $this->_drawRectangle(
@@ -4954,10 +4954,10 @@  discard block
 block discarded – undo
4954 4954
                     foreach (HTML2PDF::$_tables[$param['num']][$mode]['tr'] as $tr) {
4955 4955
                         // hauteur de la ligne tr
4956 4956
                         $h = 0;
4957
-                        for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$tr]); $i++)
4958
-                            if (HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['rowspan']==1)
4957
+                        for ($i = 0; $i < count(HTML2PDF::$_tables[$param['num']]['cases'][$tr]); $i++)
4958
+                            if (HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['rowspan'] == 1)
4959 4959
                                 $h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['h']);
4960
-                        HTML2PDF::$_tables[$param['num']][$mode]['height']+= $h;
4960
+                        HTML2PDF::$_tables[$param['num']][$mode]['height'] += $h;
4961 4961
                     }
4962 4962
                 }
4963 4963
 
@@ -4965,7 +4965,7 @@  discard block
 block discarded – undo
4965 4965
                 HTML2PDF::$_tables[$param['num']]['width'] = HTML2PDF::$_tables[$param['num']]['marge']['l'] + HTML2PDF::$_tables[$param['num']]['marge']['r'];
4966 4966
                 if (isset(HTML2PDF::$_tables[$param['num']]['cases'][0])) {
4967 4967
                     foreach (HTML2PDF::$_tables[$param['num']]['cases'][0] as $case) {
4968
-                        HTML2PDF::$_tables[$param['num']]['width']+= $case['w'];
4968
+                        HTML2PDF::$_tables[$param['num']]['width'] += $case['w'];
4969 4969
                     }
4970 4970
                 }
4971 4971
 
@@ -4974,11 +4974,11 @@  discard block
 block discarded – undo
4974 4974
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
4975 4975
                 $x = HTML2PDF::$_tables[$param['num']]['curr_x'];
4976 4976
                 $w = HTML2PDF::$_tables[$param['num']]['width'];
4977
-                if ($parentWidth>$w) {
4978
-                    if (HTML2PDF::$_tables[$param['num']]['align']=='center')
4979
-                        $x = $x + ($parentWidth-$w)*0.5;
4980
-                    else if (HTML2PDF::$_tables[$param['num']]['align']=='right')
4981
-                        $x = $x + $parentWidth-$w;
4977
+                if ($parentWidth > $w) {
4978
+                    if (HTML2PDF::$_tables[$param['num']]['align'] == 'center')
4979
+                        $x = $x + ($parentWidth - $w) * 0.5;
4980
+                    else if (HTML2PDF::$_tables[$param['num']]['align'] == 'right')
4981
+                        $x = $x + $parentWidth - $w;
4982 4982
 
4983 4983
                     HTML2PDF::$_tables[$param['num']]['curr_x'] = $x;
4984 4984
                 }
@@ -4988,7 +4988,7 @@  discard block
 block discarded – undo
4988 4988
 
4989 4989
                 // minimum of the height because of margins, and of the thead and tfoot height
4990 4990
                 $h0 = HTML2PDF::$_tables[$param['num']]['marge']['t'] + HTML2PDF::$_tables[$param['num']]['marge']['b'];
4991
-                $h0+= HTML2PDF::$_tables[$param['num']]['thead']['height'] + HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
4991
+                $h0 += HTML2PDF::$_tables[$param['num']]['thead']['height'] + HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
4992 4992
 
4993 4993
                 // max height of the page
4994 4994
                 $max = $this->pdf->getH() - $this->pdf->getbMargin();
@@ -4998,7 +4998,7 @@  discard block
 block discarded – undo
4998 4998
                 $height = $h0;
4999 4999
 
5000 5000
                 // we get the height of each line
5001
-                for ($k=0; $k<count(HTML2PDF::$_tables[$param['num']]['cases']); $k++) {
5001
+                for ($k = 0; $k < count(HTML2PDF::$_tables[$param['num']]['cases']); $k++) {
5002 5002
 
5003 5003
                     // if it is a TR of the thead or of the tfoot => skip
5004 5004
                     if (in_array($k, HTML2PDF::$_tables[$param['num']]['thead']['tr'])) continue;
@@ -5007,25 +5007,25 @@  discard block
 block discarded – undo
5007 5007
                     // height of the line
5008 5008
                     $th = 0;
5009 5009
                     $h = 0;
5010
-                    for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$k]); $i++) {
5010
+                    for ($i = 0; $i < count(HTML2PDF::$_tables[$param['num']]['cases'][$k]); $i++) {
5011 5011
                         $h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5012 5012
 
5013
-                        if (HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['rowspan']==1)
5013
+                        if (HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['rowspan'] == 1)
5014 5014
                             $th = max($th, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5015 5015
                     }
5016 5016
 
5017 5017
                     // if the row does not fit on the page => new page
5018
-                    if ($y+$h+$height>$max) {
5019
-                        if ($height==$h0) $height = null;
5018
+                    if ($y + $h + $height > $max) {
5019
+                        if ($height == $h0) $height = null;
5020 5020
                         HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5021 5021
                         $height = $h0;
5022 5022
                         $y = $this->_margeTop;
5023 5023
                     }
5024
-                    $height+= $th;
5024
+                    $height += $th;
5025 5025
                 }
5026 5026
 
5027 5027
                 // if ther is a height at the end, add it
5028
-                if ($height!=$h0 || $k==0) HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5028
+                if ($height != $h0 || $k == 0) HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5029 5029
             } else {
5030 5030
                 // if we have tfoor, draw it
5031 5031
                 if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
@@ -5042,7 +5042,7 @@  discard block
 block discarded – undo
5042 5042
                     $this->_makeHTMLcode();
5043 5043
                     $this->_isInTfoot = false;
5044 5044
 
5045
-                    $this->_parsePos =     $oldParsePos;
5045
+                    $this->_parsePos = $oldParsePos;
5046 5046
                     $this->parsingHtml->code = $oldParseCode;
5047 5047
                     HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5048 5048
                     HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
@@ -5050,10 +5050,10 @@  discard block
 block discarded – undo
5050 5050
 
5051 5051
                 // get the positions of the end of the table
5052 5052
                 $x = HTML2PDF::$_tables[$param['num']]['curr_x'] + HTML2PDF::$_tables[$param['num']]['width'];
5053
-                if (count(HTML2PDF::$_tables[$param['num']]['height'])>1)
5054
-                    $y = $this->_margeTop+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5055
-                else if (count(HTML2PDF::$_tables[$param['num']]['height'])==1)
5056
-                    $y = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5053
+                if (count(HTML2PDF::$_tables[$param['num']]['height']) > 1)
5054
+                    $y = $this->_margeTop + HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height']) - 1];
5055
+                else if (count(HTML2PDF::$_tables[$param['num']]['height']) == 1)
5056
+                    $y = HTML2PDF::$_tables[$param['num']]['curr_y'] + HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height']) - 1];
5057 5057
                 else
5058 5058
                     $y = HTML2PDF::$_tables[$param['num']]['curr_y'];
5059 5059
 
@@ -5064,7 +5064,7 @@  discard block
 block discarded – undo
5064 5064
 
5065 5065
                 $this->_loadMargin();
5066 5066
 
5067
-                if ($this->_debugActif) $this->_DEBUG_add('Table '.$param['num'], false);
5067
+                if ($this->_debugActif) $this->_DEBUG_add('Table ' . $param['num'], false);
5068 5068
             }
5069 5069
 
5070 5070
             $this->parsingCss->load();
@@ -5084,7 +5084,7 @@  discard block
 block discarded – undo
5084 5084
         protected function _tag_open_COL($param)
5085 5085
         {
5086 5086
             $span = isset($param['span']) ? $param['span'] : 1;
5087
-            for ($k=0; $k<$span; $k++)
5087
+            for ($k = 0; $k < $span; $k++)
5088 5088
                 HTML2PDF::$_tables[$param['num']]['cols'][] = $param;
5089 5089
         }
5090 5090
 
@@ -5122,22 +5122,22 @@  discard block
 block discarded – undo
5122 5122
 
5123 5123
             // position in the table
5124 5124
             HTML2PDF::$_tables[$param['num']]['tr_curr']++;
5125
-            HTML2PDF::$_tables[$param['num']]['td_curr']= 0;
5125
+            HTML2PDF::$_tables[$param['num']]['td_curr'] = 0;
5126 5126
 
5127 5127
             // if we are not in a sub html
5128 5128
             if (!$this->_subPart) {
5129 5129
 
5130 5130
                 // Y after the row
5131
-                $ty=null;
5132
-                for ($ii=0; $ii<count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1]); $ii++) {
5133
-                    $ty = max($ty, HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['h']);
5131
+                $ty = null;
5132
+                for ($ii = 0; $ii < count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1]); $ii++) {
5133
+                    $ty = max($ty, HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][$ii]['h']);
5134 5134
                 }
5135 5135
 
5136 5136
                 // height of the tfoot
5137 5137
                 $hfoot = HTML2PDF::$_tables[$param['num']]['tfoot']['height'];
5138 5138
 
5139 5139
                 // if the line does not fit on the page => new page
5140
-                if (!$this->_isInTfoot && HTML2PDF::$_tables[$param['num']]['td_y'] + HTML2PDF::$_tables[$param['num']]['marge']['b'] + $ty +$hfoot> $this->pdf->getH() - $this->pdf->getbMargin()) {
5140
+                if (!$this->_isInTfoot && HTML2PDF::$_tables[$param['num']]['td_y'] + HTML2PDF::$_tables[$param['num']]['marge']['b'] + $ty + $hfoot > $this->pdf->getH() - $this->pdf->getbMargin()) {
5141 5141
 
5142 5142
                     // fi ther is a tfoot => draw it
5143 5143
                     if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
@@ -5154,7 +5154,7 @@  discard block
 block discarded – undo
5154 5154
                         $this->_makeHTMLcode();
5155 5155
                         $this->_isInTfoot = false;
5156 5156
 
5157
-                        $this->_parsePos =     $oldParsePos;
5157
+                        $this->_parsePos = $oldParsePos;
5158 5158
                         $this->parsingHtml->code = $oldParseCode;
5159 5159
                         HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5160 5160
                         HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
@@ -5167,7 +5167,7 @@  discard block
 block discarded – undo
5167 5167
                     // new position
5168 5168
                     HTML2PDF::$_tables[$param['num']]['page']++;
5169 5169
                     HTML2PDF::$_tables[$param['num']]['curr_y'] = $this->pdf->getY();
5170
-                    HTML2PDF::$_tables[$param['num']]['td_y'] = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['marge']['t'];
5170
+                    HTML2PDF::$_tables[$param['num']]['td_y'] = HTML2PDF::$_tables[$param['num']]['curr_y'] + HTML2PDF::$_tables[$param['num']]['marge']['t'];
5171 5171
 
5172 5172
                     // if we have the height of the tbale on the page => draw borders and background
5173 5173
                     if (isset(HTML2PDF::$_tables[$param['num']]['height'][HTML2PDF::$_tables[$param['num']]['page']])) {
@@ -5181,7 +5181,7 @@  discard block
 block discarded – undo
5181 5181
                             HTML2PDF::$_tables[$param['num']]['height'][HTML2PDF::$_tables[$param['num']]['page']],
5182 5182
                             $this->parsingCss->value['border'],
5183 5183
                             $this->parsingCss->value['padding'],
5184
-                            HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5,
5184
+                            HTML2PDF::$_tables[$param['num']]['cellspacing'] * 0.5,
5185 5185
                             $this->parsingCss->value['background']
5186 5186
                         );
5187 5187
 
@@ -5205,7 +5205,7 @@  discard block
 block discarded – undo
5205 5205
                     $this->_makeHTMLcode();
5206 5206
                     $this->_isInThead = false;
5207 5207
 
5208
-                    $this->_parsePos =     $oldParsePos;
5208
+                    $this->_parsePos = $oldParsePos;
5209 5209
                     $this->parsingHtml->code = $oldParseCode;
5210 5210
                     HTML2PDF::$_tables[$param['num']]['tr_curr'] = $tmpTR;
5211 5211
                     HTML2PDF::$_tables[$param['num']]['td_curr'] = $tmpTD;
@@ -5214,12 +5214,12 @@  discard block
 block discarded – undo
5214 5214
             // else (in a sub HTML)
5215 5215
             } else {
5216 5216
                 // prepare it
5217
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1] = array();
5217
+                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1] = array();
5218 5218
                 if (!isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']]))
5219 5219
                     HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']] = array();
5220 5220
 
5221
-                HTML2PDF::$_tables[$param['num']]['corr_x']=0;
5222
-                while(isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']]))
5221
+                HTML2PDF::$_tables[$param['num']]['corr_x'] = 0;
5222
+                while (isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']]))
5223 5223
                     HTML2PDF::$_tables[$param['num']]['corr_x']++;
5224 5224
             }
5225 5225
 
@@ -5246,16 +5246,16 @@  discard block
 block discarded – undo
5246 5246
             if (!$this->_subPart) {
5247 5247
 
5248 5248
                 // Y of the current line
5249
-                $ty=null;
5250
-                for ($ii=0; $ii<count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1]); $ii++) {
5251
-                    if (HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['rowspan']==1) {
5252
-                        $ty = HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][$ii]['h'];
5249
+                $ty = null;
5250
+                for ($ii = 0; $ii < count(HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1]); $ii++) {
5251
+                    if (HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][$ii]['rowspan'] == 1) {
5252
+                        $ty = HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][$ii]['h'];
5253 5253
                     }
5254 5254
                 }
5255 5255
 
5256 5256
                 // new position
5257
-                HTML2PDF::$_tables[$param['num']]['td_x'] = HTML2PDF::$_tables[$param['num']]['curr_x']+HTML2PDF::$_tables[$param['num']]['marge']['l'];
5258
-                HTML2PDF::$_tables[$param['num']]['td_y']+= $ty;
5257
+                HTML2PDF::$_tables[$param['num']]['td_x'] = HTML2PDF::$_tables[$param['num']]['curr_x'] + HTML2PDF::$_tables[$param['num']]['marge']['l'];
5258
+                HTML2PDF::$_tables[$param['num']]['td_y'] += $ty;
5259 5259
                 HTML2PDF::$_tables[$param['num']]['new_page'] = false;
5260 5260
             } else {
5261 5261
                 HTML2PDF::$_tables[$param['num']]['corr_y']++;
@@ -5277,15 +5277,15 @@  discard block
 block discarded – undo
5277 5277
 
5278 5278
             $this->_maxH = 0;
5279 5279
 
5280
-            $param['cellpadding'] = HTML2PDF::$_tables[$param['num']]['cellpadding'].'mm';
5281
-            $param['cellspacing'] = HTML2PDF::$_tables[$param['num']]['cellspacing'].'mm';
5280
+            $param['cellpadding'] = HTML2PDF::$_tables[$param['num']]['cellpadding'] . 'mm';
5281
+            $param['cellspacing'] = HTML2PDF::$_tables[$param['num']]['cellspacing'] . 'mm';
5282 5282
 
5283 5283
             // specific style for LI
5284
-            if ($other=='li') {
5284
+            if ($other == 'li') {
5285 5285
                 $specialLi = true;
5286 5286
             } else {
5287 5287
                 $specialLi = false;
5288
-                if ($other=='li_sub') {
5288
+                if ($other == 'li_sub') {
5289 5289
                     $param['style']['border'] = 'none';
5290 5290
                     $param['style']['background-color']    = 'transparent';
5291 5291
                     $param['style']['background-image']    = 'none';
@@ -5297,7 +5297,7 @@  discard block
 block discarded – undo
5297 5297
 
5298 5298
             // get the properties of the TD
5299 5299
             $x = HTML2PDF::$_tables[$param['num']]['td_curr'];
5300
-            $y = HTML2PDF::$_tables[$param['num']]['tr_curr']-1;
5300
+            $y = HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1;
5301 5301
             $colspan = isset($param['colspan']) ? $param['colspan'] : 1;
5302 5302
             $rowspan = isset($param['rowspan']) ? $param['rowspan'] : 1;
5303 5303
 
@@ -5316,9 +5316,9 @@  discard block
 block discarded – undo
5316 5316
 
5317 5317
                     // for colspans => we get all the neede widths
5318 5318
                     $colParam['style']['width'] = array();
5319
-                    for ($k=0; $k<$colspan; $k++) {
5320
-                        if (isset(HTML2PDF::$_tables[$param['num']]['cols'][$numCol+$k]['style']['width'])) {
5321
-                            $colParam['style']['width'][] = HTML2PDF::$_tables[$param['num']]['cols'][$numCol+$k]['style']['width'];
5319
+                    for ($k = 0; $k < $colspan; $k++) {
5320
+                        if (isset(HTML2PDF::$_tables[$param['num']]['cols'][$numCol + $k]['style']['width'])) {
5321
+                            $colParam['style']['width'][] = HTML2PDF::$_tables[$param['num']]['cols'][$numCol + $k]['style']['width'];
5322 5322
                         }
5323 5323
                     }
5324 5324
 
@@ -5328,10 +5328,10 @@  discard block
 block discarded – undo
5328 5328
                     if (count($colParam['style']['width'])) {
5329 5329
                         $total = $colParam['style']['width'][0]; unset($colParam['style']['width'][0]);
5330 5330
                         foreach ($colParam['style']['width'] as $width) {
5331
-                            if (substr($total, -1)=='%' && substr($width, -1)=='%')
5332
-                                $total = (str_replace('%', '', $total)+str_replace('%', '', $width)).'%';
5331
+                            if (substr($total, -1) == '%' && substr($width, -1) == '%')
5332
+                                $total = (str_replace('%', '', $total) + str_replace('%', '', $width)) . '%';
5333 5333
                             else
5334
-                                $total = ($this->parsingCss->ConvertToMM($total, $last) + $this->parsingCss->ConvertToMM($width, $last)).'mm';
5334
+                                $total = ($this->parsingCss->ConvertToMM($total, $last) + $this->parsingCss->ConvertToMM($width, $last)) . 'mm';
5335 5335
                         }
5336 5336
                     }
5337 5337
 
@@ -5348,7 +5348,7 @@  discard block
 block discarded – undo
5348 5348
 
5349 5349
                     // merge the class of the COL and the TD
5350 5350
                     if (isset($colParam['class'])) {
5351
-                        $param['class'] = $colParam['class'].(isset($param['class']) ? ' '.$param['class'] : '');
5351
+                        $param['class'] = $colParam['class'] . (isset($param['class']) ? ' ' . $param['class'] : '');
5352 5352
                     }
5353 5353
                 }
5354 5354
 
@@ -5377,8 +5377,8 @@  discard block
 block discarded – undo
5377 5377
             $return = $this->parsingCss->analyse($other, $param, $legacy);
5378 5378
 
5379 5379
             if ($specialLi) {
5380
-                $this->parsingCss->value['width']-= $this->parsingCss->ConvertToMM($this->_listeGetWidth());
5381
-                $this->parsingCss->value['width']-= $this->parsingCss->ConvertToMM($this->_listeGetPadding());
5380
+                $this->parsingCss->value['width'] -= $this->parsingCss->ConvertToMM($this->_listeGetWidth());
5381
+                $this->parsingCss->value['width'] -= $this->parsingCss->ConvertToMM($this->_listeGetPadding());
5382 5382
             }
5383 5383
             $this->parsingCss->setPosition();
5384 5384
             $this->parsingCss->fontSet();
@@ -5387,25 +5387,25 @@  discard block
 block discarded – undo
5387 5387
             if ($collapse) {
5388 5388
                 if (!$this->_subPart) {
5389 5389
                     if (
5390
-                        (HTML2PDF::$_tables[$param['num']]['tr_curr']>1 && !HTML2PDF::$_tables[$param['num']]['new_page']) ||
5390
+                        (HTML2PDF::$_tables[$param['num']]['tr_curr'] > 1 && !HTML2PDF::$_tables[$param['num']]['new_page']) ||
5391 5391
                         (!$this->_isInThead && count(HTML2PDF::$_tables[$param['num']]['thead']['code']))
5392 5392
                     ) {
5393 5393
                         $this->parsingCss->value['border']['t'] = $this->parsingCss->readBorder('none');
5394 5394
                     }
5395 5395
                 }
5396 5396
 
5397
-                if (HTML2PDF::$_tables[$param['num']]['td_curr']>0) {
5398
-                    if (!$return) $this->parsingCss->value['width']+= $this->parsingCss->value['border']['l']['width'];
5397
+                if (HTML2PDF::$_tables[$param['num']]['td_curr'] > 0) {
5398
+                    if (!$return) $this->parsingCss->value['width'] += $this->parsingCss->value['border']['l']['width'];
5399 5399
                     $this->parsingCss->value['border']['l'] = $this->parsingCss->readBorder('none');
5400 5400
                 }
5401 5401
             }
5402 5402
 
5403 5403
             // margins of the table
5404 5404
             $marge = array();
5405
-            $marge['t'] = $this->parsingCss->value['padding']['t']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['t']['width'];
5406
-            $marge['r'] = $this->parsingCss->value['padding']['r']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['r']['width'];
5407
-            $marge['b'] = $this->parsingCss->value['padding']['b']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['b']['width'];
5408
-            $marge['l'] = $this->parsingCss->value['padding']['l']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['l']['width'];
5405
+            $marge['t'] = $this->parsingCss->value['padding']['t'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['t']['width'];
5406
+            $marge['r'] = $this->parsingCss->value['padding']['r'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['r']['width'];
5407
+            $marge['b'] = $this->parsingCss->value['padding']['b'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['b']['width'];
5408
+            $marge['l'] = $this->parsingCss->value['padding']['l'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['l']['width'];
5409 5409
 
5410 5410
             // if we are in a sub HTML
5411 5411
             if ($this->_subPart) {
@@ -5421,14 +5421,14 @@  discard block
 block discarded – undo
5421 5421
                 HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['Yr'] = HTML2PDF::$_tables[$param['num']]['corr_y'];
5422 5422
 
5423 5423
                 // prepare the mapping for rowspan and colspan
5424
-                for ($j=0; $j<$rowspan; $j++) {
5425
-                    for ($i=0; $i<$colspan; $i++) {
5424
+                for ($j = 0; $j < $rowspan; $j++) {
5425
+                    for ($i = 0; $i < $colspan; $i++) {
5426 5426
                         HTML2PDF::$_tables[$param['num']]['corr']
5427
-                            [HTML2PDF::$_tables[$param['num']]['corr_y']+$j]
5428
-                            [HTML2PDF::$_tables[$param['num']]['corr_x']+$i] = ($i+$j>0) ? '' : array($x,$y,$colspan,$rowspan);
5427
+                            [HTML2PDF::$_tables[$param['num']]['corr_y'] + $j]
5428
+                            [HTML2PDF::$_tables[$param['num']]['corr_x'] + $i] = ($i + $j > 0) ? '' : array($x, $y, $colspan, $rowspan);
5429 5429
                     }
5430 5430
                 }
5431
-                HTML2PDF::$_tables[$param['num']]['corr_x']+= $colspan;
5431
+                HTML2PDF::$_tables[$param['num']]['corr_x'] += $colspan;
5432 5432
                 while (isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']])) {
5433 5433
                     HTML2PDF::$_tables[$param['num']]['corr_x']++;
5434 5434
                 }
@@ -5438,11 +5438,11 @@  discard block
 block discarded – undo
5438 5438
                 $this->_createSubHTML($this->_subHtml);
5439 5439
                 $this->_subHtml->parsingHtml->code = $level;
5440 5440
                 $this->_subHtml->_makeHTMLcode();
5441
-                $this->_tempPos+= count($level);
5441
+                $this->_tempPos += count($level);
5442 5442
             } else {
5443 5443
                 // new position in the table
5444 5444
                 HTML2PDF::$_tables[$param['num']]['td_curr']++;
5445
-                HTML2PDF::$_tables[$param['num']]['td_x']+= HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['dw'];
5445
+                HTML2PDF::$_tables[$param['num']]['td_x'] += HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['dw'];
5446 5446
 
5447 5447
                 // borders and background of the TD
5448 5448
                 $this->_drawRectangle(
@@ -5452,28 +5452,28 @@  discard block
 block discarded – undo
5452 5452
                     HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'],
5453 5453
                     $this->parsingCss->value['border'],
5454 5454
                     $this->parsingCss->value['padding'],
5455
-                    HTML2PDF::$_tables[$param['num']]['cellspacing']*0.5,
5455
+                    HTML2PDF::$_tables[$param['num']]['cellspacing'] * 0.5,
5456 5456
                     $this->parsingCss->value['background']
5457 5457
                 );
5458 5458
 
5459 5459
                 $this->parsingCss->value['width'] = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['w'] - $marge['l'] - $marge['r'];
5460 5460
 
5461 5461
                 // marges = size of the TD
5462
-                $mL = HTML2PDF::$_tables[$param['num']]['td_x']+$marge['l'];
5462
+                $mL = HTML2PDF::$_tables[$param['num']]['td_x'] + $marge['l'];
5463 5463
                 $mR = $this->pdf->getW() - $mL - $this->parsingCss->value['width'];
5464 5464
                 $this->_saveMargin($mL, 0, $mR);
5465 5465
 
5466 5466
                 // position of the content, from vertical-align
5467 5467
                 $hCorr = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['h'];
5468 5468
                 $hReel = HTML2PDF::$_tables[$param['num']]['cases'][$y][$x]['real_h'];
5469
-                switch($this->parsingCss->value['vertical-align'])
5469
+                switch ($this->parsingCss->value['vertical-align'])
5470 5470
                 {
5471 5471
                     case 'bottom':
5472
-                        $yCorr = $hCorr-$hReel;
5472
+                        $yCorr = $hCorr - $hReel;
5473 5473
                         break;
5474 5474
 
5475 5475
                     case 'middle':
5476
-                        $yCorr = ($hCorr-$hReel)*0.5;
5476
+                        $yCorr = ($hCorr - $hReel) * 0.5;
5477 5477
                         break;
5478 5478
 
5479 5479
                     case 'top':
@@ -5483,8 +5483,8 @@  discard block
 block discarded – undo
5483 5483
                 }
5484 5484
 
5485 5485
                 //  position of the content
5486
-                $x = HTML2PDF::$_tables[$param['num']]['td_x']+$marge['l'];
5487
-                $y = HTML2PDF::$_tables[$param['num']]['td_y']+$marge['t']+$yCorr;
5486
+                $x = HTML2PDF::$_tables[$param['num']]['td_x'] + $marge['l'];
5487
+                $y = HTML2PDF::$_tables[$param['num']]['td_y'] + $marge['t'] + $yCorr;
5488 5488
                 $this->pdf->setXY($x, $y);
5489 5489
                 $this->_setNewPositionForNewLine();
5490 5490
             }
@@ -5507,20 +5507,20 @@  discard block
 block discarded – undo
5507 5507
 
5508 5508
             // get the margins
5509 5509
             $marge = array();
5510
-            $marge['t'] = $this->parsingCss->value['padding']['t']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['t']['width'];
5511
-            $marge['r'] = $this->parsingCss->value['padding']['r']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['r']['width'];
5512
-            $marge['b'] = $this->parsingCss->value['padding']['b']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['b']['width'];
5513
-            $marge['l'] = $this->parsingCss->value['padding']['l']+0.5*HTML2PDF::$_tables[$param['num']]['cellspacing']+$this->parsingCss->value['border']['l']['width'];
5514
-            $marge['t']+= 0.001;
5515
-            $marge['r']+= 0.001;
5516
-            $marge['b']+= 0.001;
5517
-            $marge['l']+= 0.001;
5510
+            $marge['t'] = $this->parsingCss->value['padding']['t'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['t']['width'];
5511
+            $marge['r'] = $this->parsingCss->value['padding']['r'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['r']['width'];
5512
+            $marge['b'] = $this->parsingCss->value['padding']['b'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['b']['width'];
5513
+            $marge['l'] = $this->parsingCss->value['padding']['l'] + 0.5 * HTML2PDF::$_tables[$param['num']]['cellspacing'] + $this->parsingCss->value['border']['l']['width'];
5514
+            $marge['t'] += 0.001;
5515
+            $marge['r'] += 0.001;
5516
+            $marge['b'] += 0.001;
5517
+            $marge['l'] += 0.001;
5518 5518
 
5519 5519
             // if we are in a sub HTML
5520 5520
             if ($this->_subPart) {
5521 5521
 
5522 5522
                 // it msut take only one page
5523
-                if ($this->_testTdInOnepage && $this->_subHtml->pdf->getPage()>1) {
5523
+                if ($this->_testTdInOnepage && $this->_subHtml->pdf->getPage() > 1) {
5524 5524
                     throw new HTML2PDF_exception(7);
5525 5525
                 }
5526 5526
 
@@ -5533,19 +5533,19 @@  discard block
 block discarded – undo
5533 5533
                 $h2 = $this->parsingCss->value['height'] + $marge['t'] + $marge['b'];
5534 5534
 
5535 5535
                 // final size of the TD
5536
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['w'] = max(array($w0, $w2));
5537
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['h'] = max(array($h0, $h2));
5536
+                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][HTML2PDF::$_tables[$param['num']]['td_curr'] - 1]['w'] = max(array($w0, $w2));
5537
+                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][HTML2PDF::$_tables[$param['num']]['td_curr'] - 1]['h'] = max(array($h0, $h2));
5538 5538
 
5539 5539
                 // real position of the content
5540
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['real_w'] = $w0;
5541
-                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['real_h'] = $h0;
5540
+                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][HTML2PDF::$_tables[$param['num']]['td_curr'] - 1]['real_w'] = $w0;
5541
+                HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][HTML2PDF::$_tables[$param['num']]['td_curr'] - 1]['real_h'] = $h0;
5542 5542
 
5543 5543
                 // destroy the sub HTML
5544 5544
                 $this->_destroySubHTML($this->_subHtml);
5545 5545
             } else {
5546 5546
                 $this->_loadMargin();
5547 5547
 
5548
-                HTML2PDF::$_tables[$param['num']]['td_x']+= HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1][HTML2PDF::$_tables[$param['num']]['td_curr']-1]['w'];
5548
+                HTML2PDF::$_tables[$param['num']]['td_x'] += HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr'] - 1][HTML2PDF::$_tables[$param['num']]['td_curr'] - 1]['w'];
5549 5549
             }
5550 5550
 
5551 5551
             $this->parsingCss->load();
@@ -5601,10 +5601,10 @@  discard block
 block discarded – undo
5601 5601
          */
5602 5602
         protected function _tag_open_IMG($param)
5603 5603
         {
5604
-            $src    = str_replace('&amp;', '&', $param['src']);
5604
+            $src = str_replace('&amp;', '&', $param['src']);
5605 5605
 
5606 5606
             $this->parsingCss->save();
5607
-            $this->parsingCss->value['width']    = 0;
5607
+            $this->parsingCss->value['width'] = 0;
5608 5608
             $this->parsingCss->value['height']    = 0;
5609 5609
             $this->parsingCss->value['border']    = array('type' => 'none', 'width' => 0, 'color' => array(0, 0, 0));
5610 5610
             $this->parsingCss->value['background'] = array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
@@ -5632,7 +5632,7 @@  discard block
 block discarded – undo
5632 5632
         protected function _tag_open_SELECT($param)
5633 5633
         {
5634 5634
             if (!isset($param['name'])) {
5635
-                $param['name'] = 'champs_pdf_'.(count($this->_lstField)+1);
5635
+                $param['name'] = 'champs_pdf_' . (count($this->_lstField) + 1);
5636 5636
             }
5637 5637
 
5638 5638
             $param['name'] = strtolower($param['name']);
@@ -5650,11 +5650,11 @@  discard block
 block discarded – undo
5650 5650
 
5651 5651
             $this->_lstSelect = array();
5652 5652
             $this->_lstSelect['name']    = $param['name'];
5653
-            $this->_lstSelect['multi']    = isset($param['multiple']) ? true : false;
5653
+            $this->_lstSelect['multi'] = isset($param['multiple']) ? true : false;
5654 5654
             $this->_lstSelect['size']    = isset($param['size']) ? $param['size'] : 1;
5655
-            $this->_lstSelect['options']    = array();
5655
+            $this->_lstSelect['options'] = array();
5656 5656
 
5657
-            if ($this->_lstSelect['multi'] && $this->_lstSelect['size']<3) $this->_lstSelect['size'] = 3;
5657
+            if ($this->_lstSelect['multi'] && $this->_lstSelect['size'] < 3) $this->_lstSelect['size'] = 3;
5658 5658
 
5659 5659
             return true;
5660 5660
         }
@@ -5670,8 +5670,8 @@  discard block
 block discarded – undo
5670 5670
         {
5671 5671
             // get the content of the option : it is the text of the option
5672 5672
             $level = $this->parsingHtml->getLevel($this->_parsePos);
5673
-            $this->_parsePos+= count($level);
5674
-            $value = isset($param['value']) ? $param['value'] : 'aut_tag_open_opt_'.(count($this->_lstSelect)+1);
5673
+            $this->_parsePos += count($level);
5674
+            $value = isset($param['value']) ? $param['value'] : 'aut_tag_open_opt_' . (count($this->_lstSelect) + 1);
5675 5675
 
5676 5676
             $this->_lstSelect['options'][$value] = isset($level[0]['param']['txt']) ? $level[0]['param']['txt'] : '';
5677 5677
 
@@ -5704,13 +5704,13 @@  discard block
 block discarded – undo
5704 5704
             // position of the select
5705 5705
             $x = $this->pdf->getX();
5706 5706
             $y = $this->pdf->getY();
5707
-            $f = 1.08*$this->parsingCss->value['font-size'];
5707
+            $f = 1.08 * $this->parsingCss->value['font-size'];
5708 5708
 
5709 5709
             // width
5710 5710
             $w = $this->parsingCss->value['width']; if (!$w) $w = 50;
5711 5711
 
5712 5712
             // height (automatic)
5713
-            $h = ($f*1.07*$this->_lstSelect['size'] + 1);
5713
+            $h = ($f * 1.07 * $this->_lstSelect['size'] + 1);
5714 5714
 
5715 5715
             $prop = $this->parsingCss->getFormStyle();
5716 5716
 
@@ -5721,17 +5721,17 @@  discard block
 block discarded – undo
5721 5721
 
5722 5722
 
5723 5723
             // single or multi select
5724
-            if ($this->_lstSelect['size']>1) {
5724
+            if ($this->_lstSelect['size'] > 1) {
5725 5725
                 $this->pdf->ListBox($this->_lstSelect['name'], $w, $h, $this->_lstSelect['options'], $prop);
5726 5726
             } else {
5727 5727
                 $this->pdf->ComboBox($this->_lstSelect['name'], $w, $h, $this->_lstSelect['options'], $prop);
5728 5728
             }
5729 5729
 
5730
-            $this->_maxX = max($this->_maxX, $x+$w);
5731
-            $this->_maxY = max($this->_maxY, $y+$h);
5730
+            $this->_maxX = max($this->_maxX, $x + $w);
5731
+            $this->_maxY = max($this->_maxY, $y + $h);
5732 5732
             $this->_maxH = max($this->_maxH, $h);
5733 5733
             $this->_maxE++;
5734
-            $this->pdf->setX($x+$w);
5734
+            $this->pdf->setX($x + $w);
5735 5735
 
5736 5736
             $this->parsingCss->load();
5737 5737
             $this->parsingCss->fontSet();
@@ -5751,7 +5751,7 @@  discard block
 block discarded – undo
5751 5751
         protected function _tag_open_TEXTAREA($param)
5752 5752
         {
5753 5753
             if (!isset($param['name'])) {
5754
-                $param['name'] = 'champs_pdf_'.(count($this->_lstField)+1);
5754
+                $param['name'] = 'champs_pdf_' . (count($this->_lstField) + 1);
5755 5755
             }
5756 5756
 
5757 5757
             $param['name'] = strtolower($param['name']);
@@ -5769,16 +5769,16 @@  discard block
 block discarded – undo
5769 5769
 
5770 5770
             $x = $this->pdf->getX();
5771 5771
             $y = $this->pdf->getY();
5772
-            $fx = 0.65*$this->parsingCss->value['font-size'];
5773
-            $fy = 1.08*$this->parsingCss->value['font-size'];
5772
+            $fx = 0.65 * $this->parsingCss->value['font-size'];
5773
+            $fy = 1.08 * $this->parsingCss->value['font-size'];
5774 5774
 
5775 5775
             // extract the content the textarea : value
5776 5776
             $level = $this->parsingHtml->getLevel($this->_parsePos);
5777
-            $this->_parsePos+= count($level);
5777
+            $this->_parsePos += count($level);
5778 5778
 
5779 5779
             // automatic size, from cols and rows properties
5780
-            $w = $fx*(isset($param['cols']) ? $param['cols'] : 22)+1;
5781
-            $h = $fy*1.07*(isset($param['rows']) ? $param['rows'] : 3)+3;
5780
+            $w = $fx * (isset($param['cols']) ? $param['cols'] : 22) + 1;
5781
+            $h = $fy * 1.07 * (isset($param['rows']) ? $param['rows'] : 3) + 3;
5782 5782
 
5783 5783
             $prop = $this->parsingCss->getFormStyle();
5784 5784
 
@@ -5787,11 +5787,11 @@  discard block
 block discarded – undo
5787 5787
 
5788 5788
             $this->pdf->TextField($param['name'], $w, $h, $prop, array(), $x, $y);
5789 5789
 
5790
-            $this->_maxX = max($this->_maxX, $x+$w);
5791
-            $this->_maxY = max($this->_maxY, $y+$h);
5790
+            $this->_maxX = max($this->_maxX, $x + $w);
5791
+            $this->_maxY = max($this->_maxY, $y + $h);
5792 5792
             $this->_maxH = max($this->_maxH, $h);
5793 5793
             $this->_maxE++;
5794
-            $this->pdf->setX($x+$w);
5794
+            $this->pdf->setX($x + $w);
5795 5795
 
5796 5796
             return true;
5797 5797
         }
@@ -5820,7 +5820,7 @@  discard block
 block discarded – undo
5820 5820
          */
5821 5821
         protected function _tag_open_INPUT($param)
5822 5822
         {
5823
-            if (!isset($param['name']))  $param['name']  = 'champs_pdf_'.(count($this->_lstField)+1);
5823
+            if (!isset($param['name']))  $param['name']  = 'champs_pdf_' . (count($this->_lstField) + 1);
5824 5824
             if (!isset($param['value'])) $param['value'] = '';
5825 5825
             if (!isset($param['type']))  $param['type']  = 'text';
5826 5826
 
@@ -5847,25 +5847,25 @@  discard block
 block discarded – undo
5847 5847
 
5848 5848
             $x = $this->pdf->getX();
5849 5849
             $y = $this->pdf->getY();
5850
-            $f = 1.08*$this->parsingCss->value['font-size'];
5850
+            $f = 1.08 * $this->parsingCss->value['font-size'];
5851 5851
 
5852 5852
             $prop = $this->parsingCss->getFormStyle();
5853 5853
 
5854
-            switch($param['type'])
5854
+            switch ($param['type'])
5855 5855
             {
5856 5856
                 case 'checkbox':
5857 5857
                     $w = 3;
5858 5858
                     $h = $w;
5859
-                    if ($h<$f) $y+= ($f-$h)*0.5;
5860
-                    $checked = (isset($param['checked']) && $param['checked']=='checked');
5859
+                    if ($h < $f) $y += ($f - $h) * 0.5;
5860
+                    $checked = (isset($param['checked']) && $param['checked'] == 'checked');
5861 5861
                     $this->pdf->CheckBox($name, $w, $checked, $prop, array(), ($param['value'] ? $param['value'] : 'Yes'), $x, $y);
5862 5862
                     break;
5863 5863
 
5864 5864
                 case 'radio':
5865 5865
                     $w = 3;
5866 5866
                     $h = $w;
5867
-                    if ($h<$f) $y+= ($f-$h)*0.5;
5868
-                    $checked = (isset($param['checked']) && $param['checked']=='checked');
5867
+                    if ($h < $f) $y += ($f - $h) * 0.5;
5868
+                    $checked = (isset($param['checked']) && $param['checked'] == 'checked');
5869 5869
                     $this->pdf->RadioButton($name, $w, $prop, array(), ($param['value'] ? $param['value'] : 'On'), $checked, $x, $y);
5870 5870
                     break;
5871 5871
 
@@ -5878,28 +5878,28 @@  discard block
 block discarded – undo
5878 5878
 
5879 5879
                 case 'text':
5880 5880
                     $w = $this->parsingCss->value['width']; if (!$w) $w = 40;
5881
-                    $h = $f*1.3;
5881
+                    $h = $f * 1.3;
5882 5882
                     $prop['value'] = $param['value'];
5883 5883
                     $this->pdf->TextField($name, $w, $h, $prop, array(), $x, $y);
5884 5884
                     break;
5885 5885
 
5886 5886
                 case 'submit':
5887
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5888
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5887
+                    $w = $this->parsingCss->value['width']; if (!$w) $w = 40;
5888
+                    $h = $this->parsingCss->value['height']; if (!$h) $h = $f * 1.3;
5889 5889
                     $action = array('S'=>'SubmitForm', 'F'=>$this->_isInForm, 'Flags'=>array('ExportFormat'));
5890 5890
                     $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5891 5891
                     break;
5892 5892
 
5893 5893
                 case 'reset':
5894
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5895
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5894
+                    $w = $this->parsingCss->value['width']; if (!$w) $w = 40;
5895
+                    $h = $this->parsingCss->value['height']; if (!$h) $h = $f * 1.3;
5896 5896
                     $action = array('S'=>'ResetForm');
5897 5897
                     $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5898 5898
                     break;
5899 5899
 
5900 5900
                 case 'button':
5901
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5902
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
5901
+                    $w = $this->parsingCss->value['width']; if (!$w) $w = 40;
5902
+                    $h = $this->parsingCss->value['height']; if (!$h) $h = $f * 1.3;
5903 5903
                     $action = isset($param['onclick']) ? $param['onclick'] : '';
5904 5904
                     $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5905 5905
                     break;
@@ -5910,11 +5910,11 @@  discard block
 block discarded – undo
5910 5910
                     break;
5911 5911
             }
5912 5912
 
5913
-            $this->_maxX = max($this->_maxX, $x+$w);
5914
-            $this->_maxY = max($this->_maxY, $y+$h);
5913
+            $this->_maxX = max($this->_maxX, $x + $w);
5914
+            $this->_maxY = max($this->_maxY, $y + $h);
5915 5915
             $this->_maxH = max($this->_maxH, $h);
5916 5916
             $this->_maxE++;
5917
-            $this->pdf->setX($x+$w);
5917
+            $this->pdf->setX($x + $w);
5918 5918
 
5919 5919
             $this->parsingCss->load();
5920 5920
             $this->parsingCss->fontSet();
@@ -5952,14 +5952,14 @@  discard block
 block discarded – undo
5952 5952
 
5953 5953
             if (!$this->parsingCss->value['position']) {
5954 5954
                 if (
5955
-                    $w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
5956
-                    $this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
5955
+                    $w < ($this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin()) &&
5956
+                    $this->pdf->getX() + $w >= ($this->pdf->getW() - $this->pdf->getrMargin())
5957 5957
                     )
5958 5958
                     $this->_tag_open_BR(array());
5959 5959
 
5960 5960
                 if (
5961
-                        ($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
5962
-                        ($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
5961
+                        ($h < ($this->pdf->getH() - $this->pdf->gettMargin() - $this->pdf->getbMargin())) &&
5962
+                        ($this->pdf->getY() + $h >= ($this->pdf->getH() - $this->pdf->getbMargin())) &&
5963 5963
                         !$this->_isInOverflow
5964 5964
                     )
5965 5965
                     $this->_setNewPage();
@@ -5967,9 +5967,9 @@  discard block
 block discarded – undo
5967 5967
                 $old = $this->parsingCss->getOldValues();
5968 5968
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5969 5969
 
5970
-                if ($parentWidth>$w) {
5971
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5972
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
5970
+                if ($parentWidth > $w) {
5971
+                    if ($alignObject == 'center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth - $w) * 0.5);
5972
+                    else if ($alignObject == 'right')    $this->pdf->setX($this->pdf->getX() + $parentWidth - $w);
5973 5973
                 }
5974 5974
 
5975 5975
                 $this->parsingCss->setPosition();
@@ -5977,9 +5977,9 @@  discard block
 block discarded – undo
5977 5977
                 $old = $this->parsingCss->getOldValues();
5978 5978
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5979 5979
 
5980
-                if ($parentWidth>$w) {
5981
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5982
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
5980
+                if ($parentWidth > $w) {
5981
+                    if ($alignObject == 'center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth - $w) * 0.5);
5982
+                    else if ($alignObject == 'right')    $this->pdf->setX($this->pdf->getX() + $parentWidth - $w);
5983 5983
                 }
5984 5984
 
5985 5985
                 $this->parsingCss->setPosition();
@@ -6007,27 +6007,27 @@  discard block
 block discarded – undo
6007 6007
             $marge['t'] = $this->parsingCss->value['border']['t']['width'];
6008 6008
             $marge['b'] = $this->parsingCss->value['border']['b']['width'];
6009 6009
 
6010
-            $this->parsingCss->value['width'] -= $marge['l']+$marge['r'];
6011
-            $this->parsingCss->value['height']-= $marge['t']+$marge['b'];
6010
+            $this->parsingCss->value['width'] -= $marge['l'] + $marge['r'];
6011
+            $this->parsingCss->value['height'] -= $marge['t'] + $marge['b'];
6012 6012
 
6013
-            $overW-= $marge['l']+$marge['r'];
6014
-            $overH-= $marge['t']+$marge['b'];
6013
+            $overW -= $marge['l'] + $marge['r'];
6014
+            $overH -= $marge['t'] + $marge['b'];
6015 6015
 
6016 6016
             // clipping to draw only in the size opf the DRAW tag
6017 6017
             $this->pdf->clippingPathStart(
6018
-                $this->parsingCss->value['x']+$marge['l'],
6019
-                $this->parsingCss->value['y']+$marge['t'],
6018
+                $this->parsingCss->value['x'] + $marge['l'],
6019
+                $this->parsingCss->value['y'] + $marge['t'],
6020 6020
                 $this->parsingCss->value['width'],
6021 6021
                 $this->parsingCss->value['height']
6022 6022
             );
6023 6023
 
6024 6024
             // left and right of the DRAW tag
6025
-            $mL = $this->parsingCss->value['x']+$marge['l'];
6025
+            $mL = $this->parsingCss->value['x'] + $marge['l'];
6026 6026
             $mR = $this->pdf->getW() - $mL - $overW;
6027 6027
 
6028 6028
             // position of the DRAW tag
6029
-            $x = $this->parsingCss->value['x']+$marge['l'];
6030
-            $y = $this->parsingCss->value['y']+$marge['t'];
6029
+            $x = $this->parsingCss->value['x'] + $marge['l'];
6030
+            $y = $this->parsingCss->value['y'] + $marge['t'];
6031 6031
 
6032 6032
             // prepare the drawing area
6033 6033
             $this->_saveMargin($mL, 0, $mR);
@@ -6042,7 +6042,7 @@  discard block
 block discarded – undo
6042 6042
             );
6043 6043
 
6044 6044
             // init the translate matrix : (0,0) => ($x, $y)
6045
-            $this->pdf->doTransform(array(1,0,0,1,$x,$y));
6045
+            $this->pdf->doTransform(array(1, 0, 0, 1, $x, $y));
6046 6046
             $this->pdf->SetAlpha(1.);
6047 6047
             return true;
6048 6048
         }
@@ -6074,14 +6074,14 @@  discard block
 block discarded – undo
6074 6074
 
6075 6075
             $x = $this->parsingCss->value['x'];
6076 6076
             $y = $this->parsingCss->value['y'];
6077
-            $w = $this->parsingCss->value['width']+$marge['l']+$marge['r'];
6078
-            $h = $this->parsingCss->value['height']+$marge['t']+$marge['b'];
6077
+            $w = $this->parsingCss->value['width'] + $marge['l'] + $marge['r'];
6078
+            $h = $this->parsingCss->value['height'] + $marge['t'] + $marge['b'];
6079 6079
 
6080
-            if ($this->parsingCss->value['position']!='absolute') {
6081
-                $this->pdf->setXY($x+$w, $y);
6080
+            if ($this->parsingCss->value['position'] != 'absolute') {
6081
+                $this->pdf->setXY($x + $w, $y);
6082 6082
 
6083
-                $this->_maxX = max($this->_maxX, $x+$w);
6084
-                $this->_maxY = max($this->_maxY, $y+$h);
6083
+                $this->_maxX = max($this->_maxX, $x + $w);
6084
+                $this->_maxY = max($this->_maxY, $y + $h);
6085 6085
                 $this->_maxH = max($this->_maxH, $h);
6086 6086
                 $this->_maxE++;
6087 6087
             } else {
@@ -6091,7 +6091,7 @@  discard block
 block discarded – undo
6091 6091
                 $this->_loadMax();
6092 6092
             }
6093 6093
 
6094
-            $block = ($this->parsingCss->value['display']!='inline' && $this->parsingCss->value['position']!='absolute');
6094
+            $block = ($this->parsingCss->value['display'] != 'inline' && $this->parsingCss->value['position'] != 'absolute');
6095 6095
 
6096 6096
             $this->parsingCss->load();
6097 6097
             $this->parsingCss->fontSet();
@@ -6236,16 +6236,16 @@  discard block
 block discarded – undo
6236 6236
                 $path = explode(' ', $path);
6237 6237
                 foreach ($path as $k => $v) {
6238 6238
                     $path[$k] = trim($v);
6239
-                    if ($path[$k]==='') unset($path[$k]);
6239
+                    if ($path[$k] === '') unset($path[$k]);
6240 6240
                 }
6241 6241
                 $path = array_values($path);
6242 6242
 
6243 6243
                 $actions = array();
6244
-                for ($k=0; $k<count($path); $k+=2) {
6244
+                for ($k = 0; $k < count($path); $k += 2) {
6245 6245
                     $actions[] = array(
6246
-                        ($k ? 'L' : 'M') ,
6247
-                        $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']),
6248
-                        $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h'])
6246
+                        ($k ? 'L' : 'M'),
6247
+                        $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']),
6248
+                        $this->parsingCss->ConvertToMM($path[$k + 1], $this->_isInDraw['h'])
6249 6249
                     );
6250 6250
                 }
6251 6251
 
@@ -6282,16 +6282,16 @@  discard block
 block discarded – undo
6282 6282
                 $path = explode(' ', $path);
6283 6283
                 foreach ($path as $k => $v) {
6284 6284
                     $path[$k] = trim($v);
6285
-                    if ($path[$k]==='') unset($path[$k]);
6285
+                    if ($path[$k] === '') unset($path[$k]);
6286 6286
                 }
6287 6287
                 $path = array_values($path);
6288 6288
 
6289 6289
                 $actions = array();
6290
-                for ($k=0; $k<count($path); $k+=2) {
6290
+                for ($k = 0; $k < count($path); $k += 2) {
6291 6291
                     $actions[] = array(
6292
-                        ($k ? 'L' : 'M') ,
6293
-                        $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']),
6294
-                        $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h'])
6292
+                        ($k ? 'L' : 'M'),
6293
+                        $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']),
6294
+                        $this->parsingCss->ConvertToMM($path[$k + 1], $this->_isInDraw['h'])
6295 6295
                     );
6296 6296
                 }
6297 6297
                 $actions[] = array('z');
@@ -6333,7 +6333,7 @@  discard block
 block discarded – undo
6333 6333
                 $path = explode(' ', $path);
6334 6334
                 foreach ($path as $k => $v) {
6335 6335
                     $path[$k] = trim($v);
6336
-                    if ($path[$k]==='') unset($path[$k]);
6336
+                    if ($path[$k] === '') unset($path[$k]);
6337 6337
                 }
6338 6338
                 $path = array_values($path);
6339 6339
 
@@ -6341,7 +6341,7 @@  discard block
 block discarded – undo
6341 6341
                 $actions = array();
6342 6342
                 $action = array();
6343 6343
                 $lastAction = null; // last action found
6344
-                for ($k=0; $k<count($path);true) {
6344
+                for ($k = 0; $k < count($path); true) {
6345 6345
 
6346 6346
                     // for this actions, we can not have multi coordonate
6347 6347
                     if (in_array($lastAction, array('z', 'Z'))) {
@@ -6349,7 +6349,7 @@  discard block
 block discarded – undo
6349 6349
                     }
6350 6350
 
6351 6351
                     // read the new action (forcing if no action before)
6352
-                    if (preg_match('/^[a-z]+$/i', $path[$k]) || $lastAction===null) {
6352
+                    if (preg_match('/^[a-z]+$/i', $path[$k]) || $lastAction === null) {
6353 6353
                         $lastAction = $path[$k];
6354 6354
                         $k++;
6355 6355
                     }
@@ -6357,40 +6357,40 @@  discard block
 block discarded – undo
6357 6357
                     // current action
6358 6358
                     $action = array();
6359 6359
                     $action[] = $lastAction;
6360
-                    switch($lastAction)
6360
+                    switch ($lastAction)
6361 6361
                     {
6362 6362
                         case 'C':
6363 6363
                         case 'c':
6364
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x1
6365
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y1
6366
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+2], $this->_isInDraw['w']);    // x2
6367
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+3], $this->_isInDraw['h']);    // y2
6368
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+4], $this->_isInDraw['w']);    // x
6369
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+5], $this->_isInDraw['h']);    // y
6370
-                            $k+= 6;
6364
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']); // x1
6365
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 1], $this->_isInDraw['h']); // y1
6366
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 2], $this->_isInDraw['w']); // x2
6367
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 3], $this->_isInDraw['h']); // y2
6368
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 4], $this->_isInDraw['w']); // x
6369
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 5], $this->_isInDraw['h']); // y
6370
+                            $k += 6;
6371 6371
                             break;
6372 6372
 
6373 6373
                         case 'Q':
6374 6374
                         case 'S':
6375 6375
                         case 'q':
6376 6376
                         case 's':
6377
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x2
6378
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y2
6379
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+2], $this->_isInDraw['w']);    // x
6380
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+3], $this->_isInDraw['h']);    // y
6381
-                            $k+= 4;
6377
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']); // x2
6378
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 1], $this->_isInDraw['h']); // y2
6379
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 2], $this->_isInDraw['w']); // x
6380
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 3], $this->_isInDraw['h']); // y
6381
+                            $k += 4;
6382 6382
                             break;
6383 6383
 
6384 6384
                         case 'A':
6385 6385
                         case 'a':
6386
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // rx
6387
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // ry
6388
-                            $action[] = 1.*$path[$k+2];                                                        // angle de deviation de l'axe X
6389
-                            $action[] = ($path[$k+3]=='1') ? 1 : 0;                                            // large-arc-flag
6390
-                            $action[] = ($path[$k+4]=='1') ? 1 : 0;                                            // sweep-flag
6391
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+5], $this->_isInDraw['w']);    // x
6392
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+6], $this->_isInDraw['h']);    // y
6393
-                            $k+= 7;
6386
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']); // rx
6387
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 1], $this->_isInDraw['h']); // ry
6388
+                            $action[] = 1. * $path[$k + 2]; // angle de deviation de l'axe X
6389
+                            $action[] = ($path[$k + 3] == '1') ? 1 : 0; // large-arc-flag
6390
+                            $action[] = ($path[$k + 4] == '1') ? 1 : 0; // sweep-flag
6391
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 5], $this->_isInDraw['w']); // x
6392
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 6], $this->_isInDraw['h']); // y
6393
+                            $k += 7;
6394 6394
                             break;
6395 6395
 
6396 6396
                         case 'M':
@@ -6399,21 +6399,21 @@  discard block
 block discarded – undo
6399 6399
                         case 'm':
6400 6400
                         case 'l':
6401 6401
                         case 't':
6402
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x
6403
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+1], $this->_isInDraw['h']);    // y
6404
-                            $k+= 2;
6402
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']); // x
6403
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 1], $this->_isInDraw['h']); // y
6404
+                            $k += 2;
6405 6405
                             break;
6406 6406
 
6407 6407
                         case 'H':
6408 6408
                         case 'h':
6409
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['w']);    // x
6410
-                            $k+= 1;
6409
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['w']); // x
6410
+                            $k += 1;
6411 6411
                             break;
6412 6412
 
6413 6413
                         case 'V':
6414 6414
                         case 'v':
6415
-                            $action[] = $this->parsingCss->ConvertToMM($path[$k+0], $this->_isInDraw['h']);    // y
6416
-                            $k+= 1;
6415
+                            $action[] = $this->parsingCss->ConvertToMM($path[$k + 0], $this->_isInDraw['h']); // y
6416
+                            $k += 1;
6417 6417
                             break;
6418 6418
 
6419 6419
                         case 'z':
Please login to merge, or discard this patch.
Braces   +865 added lines, -323 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 /**
3 5
  * HTML2PDF Librairy - main class
4 6
  *
@@ -162,7 +164,9 @@  discard block
 block discarded – undo
162 164
             $this->_subPart = false;
163 165
 
164 166
             // init the marges of the page
165
-            if (!is_array($marges)) $marges = array($marges, $marges, $marges, $marges);
167
+            if (!is_array($marges)) {
168
+            	$marges = array($marges, $marges, $marges, $marges);
169
+            }
166 170
             $this->_setDefaultMargins($marges[0], $marges[1], $marges[2], $marges[3]);
167 171
             $this->_setMargins();
168 172
             $this->_marges = array();
@@ -310,7 +314,9 @@  discard block
 block discarded – undo
310 314
         {
311 315
             $oldPage = $this->_INDEX_NewPage($onPage);
312 316
             $this->pdf->createIndex($this, $titre, $sizeTitle, $sizeBookmark, $bookmarkTitle, $displayPage, $onPage, $fontName);
313
-            if ($oldPage) $this->pdf->setPage($oldPage);
317
+            if ($oldPage) {
318
+            	$this->pdf->setPage($oldPage);
319
+            }
314 320
         }
315 321
 
316 322
         /**
@@ -356,14 +362,24 @@  discard block
 block discarded – undo
356 362
             }
357 363
 
358 364
             // complete parameters
359
-            if ($dest===false) $dest = 'I';
360
-            if ($dest===true)  $dest = 'S';
361
-            if ($dest==='')    $dest = 'I';
362
-            if ($name=='')     $name='document.pdf';
365
+            if ($dest===false) {
366
+            	$dest = 'I';
367
+            }
368
+            if ($dest===true) {
369
+            	$dest = 'S';
370
+            }
371
+            if ($dest==='') {
372
+            	$dest = 'I';
373
+            }
374
+            if ($name=='') {
375
+            	$name='document.pdf';
376
+            }
363 377
 
364 378
             // clean up the destination
365 379
             $dest = strtoupper($dest);
366
-            if (!in_array($dest, array('I', 'D', 'F', 'S', 'FI','FD'))) $dest = 'I';
380
+            if (!in_array($dest, array('I', 'D', 'F', 'S', 'FI','FD'))) {
381
+            	$dest = 'I';
382
+            }
367 383
 
368 384
             // the name must be a PDF name
369 385
             if (strtolower(substr($name, -4))!='.pdf') {
@@ -385,8 +401,9 @@  discard block
 block discarded – undo
385 401
         public function writeHTML($html, $debugVue = false)
386 402
         {
387 403
             // if it is a real html page, we have to convert it
388
-            if (preg_match('/<body/isU', $html))
389
-                $html = $this->getHtmlFromPage($html);
404
+            if (preg_match('/<body/isU', $html)) {
405
+                            $html = $this->getHtmlFromPage($html);
406
+            }
390 407
 
391 408
             $html = str_replace('[[date_y]]', date('Y'), $html);
392 409
             $html = str_replace('[[date_m]]', date('m'), $html);
@@ -422,20 +439,24 @@  discard block
 block discarded – undo
422 439
 
423 440
             // extract the content
424 441
             $res = explode('<body', $html);
425
-            if (count($res)<2) return $html;
442
+            if (count($res)<2) {
443
+            	return $html;
444
+            }
426 445
             $content = '<page'.$res[1];
427 446
             $content = explode('</body', $content);
428 447
             $content = $content[0].'</page>';
429 448
 
430 449
             // extract the link tags
431 450
             preg_match_all('/<link([^>]*)>/isU', $html, $match);
432
-            foreach ($match[0] as $src)
433
-                $content = $src.'</link>'.$content;
451
+            foreach ($match[0] as $src) {
452
+                            $content = $src.'</link>'.$content;
453
+            }
434 454
 
435 455
             // extract the css style tags
436 456
             preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
437
-            foreach ($match[0] as $src)
438
-                $content = $src.$content;
457
+            foreach ($match[0] as $src) {
458
+                            $content = $src.$content;
459
+            }
439 460
 
440 461
             return $content;
441 462
         }
@@ -513,8 +534,12 @@  discard block
 block discarded – undo
513 534
          */
514 535
         protected function _setDefaultMargins($left, $top, $right = null, $bottom = null)
515 536
         {
516
-            if ($right===null)  $right = $left;
517
-            if ($bottom===null) $bottom = 8;
537
+            if ($right===null) {
538
+            	$right = $left;
539
+            }
540
+            if ($bottom===null) {
541
+            	$bottom = 8;
542
+            }
518 543
 
519 544
             $this->_defaultLeft   = $this->parsingCss->ConvertToMM($left.'mm');
520 545
             $this->_defaultTop    = $this->parsingCss->ConvertToMM($top.'mm');
@@ -565,8 +590,9 @@  discard block
 block discarded – undo
565 590
                         $this->pdf->Rect(0, 0, $this->pdf->getW(), $this->pdf->getH(), 'F');
566 591
                     }
567 592
 
568
-                    if (isset($this->_background['img']) && $this->_background['img'])
569
-                        $this->pdf->Image($this->_background['img'], $this->_background['posX'], $this->_background['posY'], $this->_background['width']);
593
+                    if (isset($this->_background['img']) && $this->_background['img']) {
594
+                                            $this->pdf->Image($this->_background['img'], $this->_background['posX'], $this->_background['posY'], $this->_background['width']);
595
+                    }
570 596
                 }
571 597
 
572 598
                 $this->_setPageHeader();
@@ -617,7 +643,9 @@  discard block
 block discarded – undo
617 643
         protected function _DEBUG_add($name, $level=null)
618 644
         {
619 645
             // if true : UP
620
-            if ($level===true) $this->_debugLevel++;
646
+            if ($level===true) {
647
+            	$this->_debugLevel++;
648
+            }
621 649
 
622 650
             $name   = str_repeat('  ', $this->_debugLevel). $name.($level===true ? ' Begin' : ($level===false ? ' End' : ''));
623 651
             $time  = microtime(true);
@@ -635,7 +663,9 @@  discard block
 block discarded – undo
635 663
             $this->_debugLastTime = $time;
636 664
 
637 665
             // it false : DOWN
638
-            if ($level===false) $this->_debugLevel--;
666
+            if ($level===false) {
667
+            	$this->_debugLevel--;
668
+            }
639 669
 
640 670
             return $this;
641 671
         }
@@ -674,8 +704,9 @@  discard block
 block discarded – undo
674 704
             $y = floor($y*100);
675 705
             $x = array($this->pdf->getlMargin(), $this->pdf->getW()-$this->pdf->getrMargin());
676 706
 
677
-            foreach ($this->_pageMarges as $mY => $mX)
678
-                if ($mY<=$y) $x = $mX;
707
+            foreach ($this->_pageMarges as $mY => $mX) {
708
+                            if ($mY<=$y) $x = $mX;
709
+            }
679 710
 
680 711
             return $x;
681 712
         }
@@ -697,18 +728,30 @@  discard block
 block discarded – undo
697 728
             $oldBottom = $this->_getMargins($yBottom);
698 729
 
699 730
             // update the top float margin
700
-            if ($float=='left'  && $oldTop[0]<$xRight) $oldTop[0] = $xRight;
701
-            if ($float=='right' && $oldTop[1]>$xLeft)  $oldTop[1] = $xLeft;
731
+            if ($float=='left'  && $oldTop[0]<$xRight) {
732
+            	$oldTop[0] = $xRight;
733
+            }
734
+            if ($float=='right' && $oldTop[1]>$xLeft) {
735
+            	$oldTop[1] = $xLeft;
736
+            }
702 737
 
703 738
             $yTop = floor($yTop*100);
704 739
             $yBottom = floor($yBottom*100);
705 740
 
706 741
             // erase all the float margins that are smaller than the new one
707 742
             foreach ($this->_pageMarges as $mY => $mX) {
708
-                if ($mY<$yTop) continue;
709
-                if ($mY>$yBottom) break;
710
-                if ($float=='left' && $this->_pageMarges[$mY][0]<$xRight)  unset($this->_pageMarges[$mY]);
711
-                if ($float=='right' && $this->_pageMarges[$mY][1]>$xLeft) unset($this->_pageMarges[$mY]);
743
+                if ($mY<$yTop) {
744
+                	continue;
745
+                }
746
+                if ($mY>$yBottom) {
747
+                	break;
748
+                }
749
+                if ($float=='left' && $this->_pageMarges[$mY][0]<$xRight) {
750
+                	unset($this->_pageMarges[$mY]);
751
+                }
752
+                if ($float=='right' && $this->_pageMarges[$mY][1]>$xLeft) {
753
+                	unset($this->_pageMarges[$mY]);
754
+                }
712 755
             }
713 756
 
714 757
             // save the new Top and Bottom margins
@@ -806,7 +849,9 @@  discard block
 block discarded – undo
806 849
          */
807 850
         protected function _setPageHeader()
808 851
         {
809
-            if (!count($this->_subHEADER)) return false;
852
+            if (!count($this->_subHEADER)) {
853
+            	return false;
854
+            }
810 855
 
811 856
             $oldParsePos = $this->_parsePos;
812 857
             $oldParseCode = $this->parsingHtml->code;
@@ -826,7 +871,9 @@  discard block
 block discarded – undo
826 871
          */
827 872
         protected function _setPageFooter()
828 873
         {
829
-            if (!count($this->_subFOOTER)) return false;
874
+            if (!count($this->_subFOOTER)) {
875
+            	return false;
876
+            }
830 877
 
831 878
             $oldParsePos = $this->_parsePos;
832 879
             $oldParseCode = $this->parsingHtml->code;
@@ -887,15 +934,18 @@  discard block
 block discarded – undo
887 934
                 $txt = $sub->parsingHtml->code[$this->_parsePos]['param']['txt'];
888 935
                 $txt = str_replace('[[page_cu]]', $sub->pdf->getMyNumPage($this->_page), $txt);
889 936
                 $sub->parsingHtml->code[$this->_parsePos]['param']['txt'] = substr($txt, $curr+1);
890
-            } else
891
-                $sub->_parsePos++;
937
+            } else {
938
+                            $sub->_parsePos++;
939
+            }
892 940
 
893 941
             // for each element of the parsing => load the action
894 942
             $res = null;
895 943
             for ($sub->_parsePos; $sub->_parsePos<count($sub->parsingHtml->code); $sub->_parsePos++) {
896 944
                 $action = $sub->parsingHtml->code[$sub->_parsePos];
897 945
                 $res = $sub->_executeAction($action);
898
-                if (!$res) break;
946
+                if (!$res) {
947
+                	break;
948
+                }
899 949
             }
900 950
 
901 951
             $w = $sub->_maxX; // max width
@@ -906,12 +956,13 @@  discard block
 block discarded – undo
906 956
             $this->_destroySubHTML($sub);
907 957
 
908 958
             // adapt the start of the line, depending on the text-align
909
-            if ($this->parsingCss->value['text-align']=='center')
910
-                $this->pdf->setX(($rx+$this->pdf->getX()-$w)*0.5-0.01);
911
-            else if ($this->parsingCss->value['text-align']=='right')
912
-                $this->pdf->setX($rx-$w-0.01);
913
-            else
914
-                $this->pdf->setX($lx);
959
+            if ($this->parsingCss->value['text-align']=='center') {
960
+                            $this->pdf->setX(($rx+$this->pdf->getX()-$w)*0.5-0.01);
961
+            } else if ($this->parsingCss->value['text-align']=='right') {
962
+                            $this->pdf->setX($rx-$w-0.01);
963
+            } else {
964
+                            $this->pdf->setX($lx);
965
+            }
915 966
 
916 967
             // set the height of the line
917 968
             $this->_currentH = $h;
@@ -1024,8 +1075,12 @@  discard block
 block discarded – undo
1024 1075
             $nbBaseFive    = array('V','L','D');
1025 1076
             $nbRoman    = '';
1026 1077
 
1027
-            if ($nbArabic<1)    return $nbArabic;
1028
-            if ($nbArabic>3999) return $nbArabic;
1078
+            if ($nbArabic<1) {
1079
+            	return $nbArabic;
1080
+            }
1081
+            if ($nbArabic>3999) {
1082
+            	return $nbArabic;
1083
+            }
1029 1084
 
1030 1085
             for ($i=3; $i>=0 ; $i--) {
1031 1086
                 $chiffre=floor($nbArabic/pow(10, $i));
@@ -1095,7 +1150,9 @@  discard block
 block discarded – undo
1095 1150
             $nb = $this->_defList[count($this->_defList)-1]['nb'];
1096 1151
             $up = (substr($st, 0, 6)=='upper-');
1097 1152
 
1098
-            if ($im) return array(false, false, $im);
1153
+            if ($im) {
1154
+            	return array(false, false, $im);
1155
+            }
1099 1156
 
1100 1157
             switch($st)
1101 1158
             {
@@ -1156,12 +1213,19 @@  discard block
 block discarded – undo
1156 1213
             }
1157 1214
 
1158 1215
             // prepare the datas
1159
-            if (!in_array($type, array('ul', 'ol'))) $type = 'ul';
1160
-            if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) $style = '';
1216
+            if (!in_array($type, array('ul', 'ol'))) {
1217
+            	$type = 'ul';
1218
+            }
1219
+            if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) {
1220
+            	$style = '';
1221
+            }
1161 1222
 
1162 1223
             if (!$style) {
1163
-                if ($type=='ul')    $style = 'disc';
1164
-                else                $style = 'decimal';
1224
+                if ($type=='ul') {
1225
+                	$style = 'disc';
1226
+                } else {
1227
+                	$style = 'decimal';
1228
+                }
1165 1229
             }
1166 1230
 
1167 1231
             // add the new level
@@ -1270,8 +1334,9 @@  discard block
 block discarded – undo
1270 1334
          */
1271 1335
         protected function _getElementY($h)
1272 1336
         {
1273
-            if ($this->_subPart || $this->_isSubPart || !$this->_currentH || $this->_currentH<$h)
1274
-                return 0;
1337
+            if ($this->_subPart || $this->_isSubPart || !$this->_currentH || $this->_currentH<$h) {
1338
+                            return 0;
1339
+            }
1275 1340
 
1276 1341
             return ($this->_currentH-$h)*0.8;
1277 1342
         }
@@ -1286,10 +1351,11 @@  discard block
 block discarded – undo
1286 1351
         protected function _makeBreakLine($h, $curr = null)
1287 1352
         {
1288 1353
             if ($h) {
1289
-                if (($this->pdf->getY()+$h<$this->pdf->getH() - $this->pdf->getbMargin()) || $this->_isInOverflow || $this->_isInFooter)
1290
-                    $this->_setNewLine($h, $curr);
1291
-                else
1292
-                    $this->_setNewPage(null, '', null, $curr);
1354
+                if (($this->pdf->getY()+$h<$this->pdf->getH() - $this->pdf->getbMargin()) || $this->_isInOverflow || $this->_isInFooter) {
1355
+                                    $this->_setNewLine($h, $curr);
1356
+                } else {
1357
+                                    $this->_setNewPage(null, '', null, $curr);
1358
+                }
1293 1359
             } else {
1294 1360
                 $this->_setNewPositionForNewLine($curr);
1295 1361
             }
@@ -1412,7 +1478,9 @@  discard block
 block discarded – undo
1412 1478
 
1413 1479
             // calculate the position of the image, if align to the right
1414 1480
             if ($parentWidth>$w && $float!='left') {
1415
-                if ($float=='right' || $this->parsingCss->value['text-align']=='li_right')    $x = $parentX + $parentWidth - $w-$this->parsingCss->value['margin']['r']-$this->parsingCss->value['margin']['l'];
1481
+                if ($float=='right' || $this->parsingCss->value['text-align']=='li_right') {
1482
+                	$x = $parentX + $parentWidth - $w-$this->parsingCss->value['margin']['r']-$this->parsingCss->value['margin']['l'];
1483
+                }
1416 1484
             }
1417 1485
 
1418 1486
             // display the image
@@ -1483,7 +1551,9 @@  discard block
 block discarded – undo
1483 1551
         protected function _drawRectangle($x, $y, $w, $h, $border, $padding, $margin, $background)
1484 1552
         {
1485 1553
             // if we are in a subpart or if height is null => return false
1486
-            if ($this->_subPart || $this->_isSubPart || $h===null) return false;
1554
+            if ($this->_subPart || $this->_isSubPart || $h===null) {
1555
+            	return false;
1556
+            }
1487 1557
 
1488 1558
             // add the margin
1489 1559
             $x+= $margin;
@@ -1526,10 +1596,18 @@  discard block
 block discarded – undo
1526 1596
                 $inBL[1]-= $border['b']['width'];
1527 1597
             }
1528 1598
 
1529
-            if ($inTL[0]<=0 || $inTL[1]<=0) $inTL = null;
1530
-            if ($inTR[0]<=0 || $inTR[1]<=0) $inTR = null;
1531
-            if ($inBR[0]<=0 || $inBR[1]<=0) $inBR = null;
1532
-            if ($inBL[0]<=0 || $inBL[1]<=0) $inBL = null;
1599
+            if ($inTL[0]<=0 || $inTL[1]<=0) {
1600
+            	$inTL = null;
1601
+            }
1602
+            if ($inTR[0]<=0 || $inTR[1]<=0) {
1603
+            	$inTR = null;
1604
+            }
1605
+            if ($inBR[0]<=0 || $inBR[1]<=0) {
1606
+            	$inBR = null;
1607
+            }
1608
+            if ($inBL[0]<=0 || $inBL[1]<=0) {
1609
+            	$inBL = null;
1610
+            }
1533 1611
 
1534 1612
             // prepare the background color
1535 1613
             $pdfStyle = '';
@@ -1587,13 +1665,21 @@  discard block
 block discarded – undo
1587 1665
                     $imageHeight    = 72./96.*$imageInfos[1]/$this->pdf->getK();
1588 1666
 
1589 1667
                     // prepare the position of the backgroung
1590
-                    if ($iRepeat[0]) $iPosition[0] = $bX;
1591
-                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[0], $match)) $iPosition[0] = $bX + $match[1]*($bW-$imageWidth)/100;
1592
-                    else $iPosition[0] = $bX+$iPosition[0];
1668
+                    if ($iRepeat[0]) {
1669
+                    	$iPosition[0] = $bX;
1670
+                    } else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[0], $match)) {
1671
+                    	$iPosition[0] = $bX + $match[1]*($bW-$imageWidth)/100;
1672
+                    } else {
1673
+                    	$iPosition[0] = $bX+$iPosition[0];
1674
+                    }
1593 1675
 
1594
-                    if ($iRepeat[1]) $iPosition[1] = $bY;
1595
-                    else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[1], $match)) $iPosition[1] = $bY + $match[1]*($bH-$imageHeight)/100;
1596
-                    else $iPosition[1] = $bY+$iPosition[1];
1676
+                    if ($iRepeat[1]) {
1677
+                    	$iPosition[1] = $bY;
1678
+                    } else if (preg_match('/^([-]?[0-9\.]+)%/isU', $iPosition[1], $match)) {
1679
+                    	$iPosition[1] = $bY + $match[1]*($bH-$imageHeight)/100;
1680
+                    } else {
1681
+                    	$iPosition[1] = $bY+$iPosition[1];
1682
+                    }
1597 1683
 
1598 1684
                     $imageXmin = $bX;
1599 1685
                     $imageXmax = $bX+$bW;
@@ -1645,10 +1731,18 @@  discard block
 block discarded – undo
1645 1731
             $y-= $loose;
1646 1732
             $w+= 2.*$loose;
1647 1733
             $h+= 2.*$loose;
1648
-            if ($border['l']['width']) $border['l']['width']+= 2.*$loose;
1649
-            if ($border['t']['width']) $border['t']['width']+= 2.*$loose;
1650
-            if ($border['r']['width']) $border['r']['width']+= 2.*$loose;
1651
-            if ($border['b']['width']) $border['b']['width']+= 2.*$loose;
1734
+            if ($border['l']['width']) {
1735
+            	$border['l']['width']+= 2.*$loose;
1736
+            }
1737
+            if ($border['t']['width']) {
1738
+            	$border['t']['width']+= 2.*$loose;
1739
+            }
1740
+            if ($border['r']['width']) {
1741
+            	$border['r']['width']+= 2.*$loose;
1742
+            }
1743
+            if ($border['b']['width']) {
1744
+            	$border['b']['width']+= 2.*$loose;
1745
+            }
1652 1746
 
1653 1747
             // prepare the test on borders
1654 1748
             $testBl = ($border['l']['width'] && $border['l']['color'][0]!==null);
@@ -1746,13 +1840,17 @@  discard block
 block discarded – undo
1746 1840
                 if (is_array($outBL)) {
1747 1841
                     $bord-=1;
1748 1842
                     $pt[3] -= $outBL[1] - $border['b']['width'];
1749
-                    if ($inBL) $pt[11]-= $inBL[1];
1843
+                    if ($inBL) {
1844
+                    	$pt[11]-= $inBL[1];
1845
+                    }
1750 1846
                     unset($pt[0]);unset($pt[1]);
1751 1847
                 }
1752 1848
                 if (is_array($outTL)) {
1753 1849
                     $bord-=2;
1754 1850
                     $pt[5] += $outTL[1]-$border['t']['width'];
1755
-                    if ($inTL) $pt[9] += $inTL[1];
1851
+                    if ($inTL) {
1852
+                    	$pt[9] += $inTL[1];
1853
+                    }
1756 1854
                     unset($pt[6]);unset($pt[7]);
1757 1855
                 }
1758 1856
 
@@ -1774,13 +1872,17 @@  discard block
 block discarded – undo
1774 1872
                 if (is_array($outTL)) {
1775 1873
                     $bord-=1;
1776 1874
                     $pt[2] += $outTL[0] - $border['l']['width'];
1777
-                    if ($inTL) $pt[10]+= $inTL[0];
1875
+                    if ($inTL) {
1876
+                    	$pt[10]+= $inTL[0];
1877
+                    }
1778 1878
                     unset($pt[0]);unset($pt[1]);
1779 1879
                 }
1780 1880
                 if (is_array($outTR)) {
1781 1881
                     $bord-=2;
1782 1882
                     $pt[4] -= $outTR[0] - $border['r']['width'];
1783
-                    if ($inTR) $pt[8] -= $inTR[0];
1883
+                    if ($inTR) {
1884
+                    	$pt[8] -= $inTR[0];
1885
+                    }
1784 1886
                     unset($pt[6]);unset($pt[7]);
1785 1887
                 }
1786 1888
 
@@ -1802,13 +1904,17 @@  discard block
 block discarded – undo
1802 1904
                 if (is_array($outTR)) {
1803 1905
                     $bord-=1;
1804 1906
                     $pt[3] += $outTR[1] - $border['t']['width'];
1805
-                    if ($inTR) $pt[11]+= $inTR[1];
1907
+                    if ($inTR) {
1908
+                    	$pt[11]+= $inTR[1];
1909
+                    }
1806 1910
                     unset($pt[0]);unset($pt[1]);
1807 1911
                 }
1808 1912
                 if (is_array($outBR)) {
1809 1913
                     $bord-=2;
1810 1914
                     $pt[5] -= $outBR[1] - $border['b']['width'];
1811
-                    if ($inBR) $pt[9] -= $inBR[1];
1915
+                    if ($inBR) {
1916
+                    	$pt[9] -= $inBR[1];
1917
+                    }
1812 1918
                     unset($pt[6]);unset($pt[7]);
1813 1919
                 }
1814 1920
 
@@ -1830,13 +1936,17 @@  discard block
 block discarded – undo
1830 1936
                 if (is_array($outBL)) {
1831 1937
                     $bord-=2;
1832 1938
                     $pt[4] += $outBL[0] - $border['l']['width'];
1833
-                    if ($inBL) $pt[8] += $inBL[0];
1939
+                    if ($inBL) {
1940
+                    	$pt[8] += $inBL[0];
1941
+                    }
1834 1942
                     unset($pt[6]);unset($pt[7]);
1835 1943
                 }
1836 1944
                 if (is_array($outBR)) {
1837 1945
                     $bord-=1;
1838 1946
                     $pt[2] -= $outBR[0] - $border['r']['width'];
1839
-                    if ($inBR) $pt[10]-= $inBR[0];
1947
+                    if ($inBR) {
1948
+                    	$pt[10]-= $inBR[0];
1949
+                    }
1840 1950
                     unset($pt[0]);unset($pt[1]);
1841 1951
 
1842 1952
                 }
@@ -1863,10 +1973,11 @@  discard block
 block discarded – undo
1863 1973
         {
1864 1974
             $this->pdf->setFillColorArray($color);
1865 1975
 
1866
-            if (count($pt)==10)
1867
-                $this->pdf->drawCurve($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
1868
-            else
1869
-                $this->pdf->drawCorner($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7]);
1976
+            if (count($pt)==10) {
1977
+                            $this->pdf->drawCurve($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
1978
+            } else {
1979
+                            $this->pdf->drawCorner($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7]);
1980
+            }
1870 1981
         }
1871 1982
 
1872 1983
         /**
@@ -1937,10 +2048,18 @@  discard block
 block discarded – undo
1937 2048
                 for ($i=0; $l-($px+$py)*($i-0.5)>0; $i++) {
1938 2049
                     if (($i%2)==$mode) {
1939 2050
                         $j = $i-0.5;
1940
-                        $lx1 = $px*($j);   if ($lx1<-$l) $lx1 =-$l;
1941
-                        $ly1 = $py*($j);   if ($ly1<-$l) $ly1 =-$l;
1942
-                        $lx2 = $px*($j+1); if ($lx2>$l)  $lx2 = $l;
1943
-                        $ly2 = $py*($j+1); if ($ly2>$l)  $ly2 = $l;
2051
+                        $lx1 = $px*($j);   if ($lx1<-$l) {
2052
+                        	$lx1 =-$l;
2053
+                        }
2054
+                        $ly1 = $py*($j);   if ($ly1<-$l) {
2055
+                        	$ly1 =-$l;
2056
+                        }
2057
+                        $lx2 = $px*($j+1); if ($lx2>$l) {
2058
+                        	$lx2 = $l;
2059
+                        }
2060
+                        $ly2 = $py*($j+1); if ($ly2>$l) {
2061
+                        	$ly2 = $l;
2062
+                        }
1944 2063
 
1945 2064
                         $tmp = array();
1946 2065
                         $tmp[] = $x1+$lx1; $tmp[] = $y1+$ly1;
@@ -2016,10 +2135,14 @@  discard block
 block discarded – undo
2016 2135
         protected function _prepareTransform($transform)
2017 2136
         {
2018 2137
             // it can not be  empty
2019
-            if (!$transform) return null;
2138
+            if (!$transform) {
2139
+            	return null;
2140
+            }
2020 2141
 
2021 2142
             // sctions must be like scale(...)
2022
-            if (!preg_match_all('/([a-z]+)\(([^\)]*)\)/isU', $transform, $match)) return null;
2143
+            if (!preg_match_all('/([a-z]+)\(([^\)]*)\)/isU', $transform, $match)) {
2144
+            	return null;
2145
+            }
2023 2146
 
2024 2147
             // prepare the list of the actions
2025 2148
             $actions = array();
@@ -2040,49 +2163,115 @@  discard block
 block discarded – undo
2040 2163
                 switch($name)
2041 2164
                 {
2042 2165
                     case 'scale':
2043
-                        if (!isset($val[0])) $val[0] = 1.;      else $val[0] = 1.*$val[0];
2044
-                        if (!isset($val[1])) $val[1] = $val[0]; else $val[1] = 1.*$val[1];
2166
+                        if (!isset($val[0])) {
2167
+                        	$val[0] = 1.;
2168
+                        } else {
2169
+                        	$val[0] = 1.*$val[0];
2170
+                        }
2171
+                        if (!isset($val[1])) {
2172
+                        	$val[1] = $val[0];
2173
+                        } else {
2174
+                        	$val[1] = 1.*$val[1];
2175
+                        }
2045 2176
                         $actions[] = array($val[0],0,0,$val[1],0,0);
2046 2177
                         break;
2047 2178
 
2048 2179
                     case 'translate':
2049
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $this->parsingCss->ConvertToMM($val[0], $this->_isInDraw['w']);
2050
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['h']);
2180
+                        if (!isset($val[0])) {
2181
+                        	$val[0] = 0.;
2182
+                        } else {
2183
+                        	$val[0] = $this->parsingCss->ConvertToMM($val[0], $this->_isInDraw['w']);
2184
+                        }
2185
+                        if (!isset($val[1])) {
2186
+                        	$val[1] = 0.;
2187
+                        } else {
2188
+                        	$val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['h']);
2189
+                        }
2051 2190
                         $actions[] = array(1,0,0,1,$val[0],$val[1]);
2052 2191
                         break;
2053 2192
 
2054 2193
                     case 'rotate':
2055
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2056
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['w']);
2057
-                        if (!isset($val[2])) $val[2] = 0.; else $val[2] = $this->parsingCss->ConvertToMM($val[2], $this->_isInDraw['h']);
2058
-                        if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,-$val[1],-$val[2]);
2194
+                        if (!isset($val[0])) {
2195
+                        	$val[0] = 0.;
2196
+                        } else {
2197
+                        	$val[0] = $val[0]*M_PI/180.;
2198
+                        }
2199
+                        if (!isset($val[1])) {
2200
+                        	$val[1] = 0.;
2201
+                        } else {
2202
+                        	$val[1] = $this->parsingCss->ConvertToMM($val[1], $this->_isInDraw['w']);
2203
+                        }
2204
+                        if (!isset($val[2])) {
2205
+                        	$val[2] = 0.;
2206
+                        } else {
2207
+                        	$val[2] = $this->parsingCss->ConvertToMM($val[2], $this->_isInDraw['h']);
2208
+                        }
2209
+                        if ($val[1] || $val[2]) {
2210
+                        	$actions[] = array(1,0,0,1,-$val[1],-$val[2]);
2211
+                        }
2059 2212
                         $actions[] = array(cos($val[0]),sin($val[0]),-sin($val[0]),cos($val[0]),0,0);
2060
-                        if ($val[1] || $val[2]) $actions[] = array(1,0,0,1,$val[1],$val[2]);
2213
+                        if ($val[1] || $val[2]) {
2214
+                        	$actions[] = array(1,0,0,1,$val[1],$val[2]);
2215
+                        }
2061 2216
                         break;
2062 2217
 
2063 2218
                     case 'skewx':
2064
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2219
+                        if (!isset($val[0])) {
2220
+                        	$val[0] = 0.;
2221
+                        } else {
2222
+                        	$val[0] = $val[0]*M_PI/180.;
2223
+                        }
2065 2224
                         $actions[] = array(1,0,tan($val[0]),1,0,0);
2066 2225
                         break;
2067 2226
 
2068 2227
                     case 'skewy':
2069
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*M_PI/180.;
2228
+                        if (!isset($val[0])) {
2229
+                        	$val[0] = 0.;
2230
+                        } else {
2231
+                        	$val[0] = $val[0]*M_PI/180.;
2232
+                        }
2070 2233
                         $actions[] = array(1,tan($val[0]),0,1,0,0);
2071 2234
                         break;
2072 2235
                     case 'matrix':
2073
-                        if (!isset($val[0])) $val[0] = 0.; else $val[0] = $val[0]*1.;
2074
-                        if (!isset($val[1])) $val[1] = 0.; else $val[1] = $val[1]*1.;
2075
-                        if (!isset($val[2])) $val[2] = 0.; else $val[2] = $val[2]*1.;
2076
-                        if (!isset($val[3])) $val[3] = 0.; else $val[3] = $val[3]*1.;
2077
-                        if (!isset($val[4])) $val[4] = 0.; else $val[4] = $this->parsingCss->ConvertToMM($val[4], $this->_isInDraw['w']);
2078
-                        if (!isset($val[5])) $val[5] = 0.; else $val[5] = $this->parsingCss->ConvertToMM($val[5], $this->_isInDraw['h']);
2236
+                        if (!isset($val[0])) {
2237
+                        	$val[0] = 0.;
2238
+                        } else {
2239
+                        	$val[0] = $val[0]*1.;
2240
+                        }
2241
+                        if (!isset($val[1])) {
2242
+                        	$val[1] = 0.;
2243
+                        } else {
2244
+                        	$val[1] = $val[1]*1.;
2245
+                        }
2246
+                        if (!isset($val[2])) {
2247
+                        	$val[2] = 0.;
2248
+                        } else {
2249
+                        	$val[2] = $val[2]*1.;
2250
+                        }
2251
+                        if (!isset($val[3])) {
2252
+                        	$val[3] = 0.;
2253
+                        } else {
2254
+                        	$val[3] = $val[3]*1.;
2255
+                        }
2256
+                        if (!isset($val[4])) {
2257
+                        	$val[4] = 0.;
2258
+                        } else {
2259
+                        	$val[4] = $this->parsingCss->ConvertToMM($val[4], $this->_isInDraw['w']);
2260
+                        }
2261
+                        if (!isset($val[5])) {
2262
+                        	$val[5] = 0.;
2263
+                        } else {
2264
+                        	$val[5] = $this->parsingCss->ConvertToMM($val[5], $this->_isInDraw['h']);
2265
+                        }
2079 2266
                         $actions[] =$val;
2080 2267
                         break;
2081 2268
                 }
2082 2269
             }
2083 2270
 
2084 2271
             // if ther is no actions => return
2085
-            if (!$actions) return null;
2272
+            if (!$actions) {
2273
+            	return null;
2274
+            }
2086 2275
 
2087 2276
             // get the first matrix
2088 2277
             $m = $actions[0]; unset($actions[0]);
@@ -2110,7 +2299,9 @@  discard block
 block discarded – undo
2110 2299
          */
2111 2300
         protected function _calculateTableCellSize(&$cases, &$corr)
2112 2301
         {
2113
-            if (!isset($corr[0])) return true;
2302
+            if (!isset($corr[0])) {
2303
+            	return true;
2304
+            }
2114 2305
 
2115 2306
             // for each cell without colspan, we get the max width for each column
2116 2307
             $sw = array();
@@ -2130,7 +2321,9 @@  discard block
 block discarded – undo
2130 2321
                     if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]>1) {
2131 2322
 
2132 2323
                         // sum the max width of each column in colspan
2133
-                        $s = 0; for ($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
2324
+                        $s = 0; for ($i=0; $i<$corr[$y][$x][2]; $i++) {
2325
+                        	$s+= $sw[$x+$i];
2326
+                        }
2134 2327
 
2135 2328
                         // if the max width is < the width of the cell with colspan => we adapt the width of each max width
2136 2329
                         if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']) {
@@ -2179,7 +2372,9 @@  discard block
 block discarded – undo
2179 2372
                     if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]>1) {
2180 2373
 
2181 2374
                         // sum the max height of each line in rowspan
2182
-                        $s = 0; for ($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
2375
+                        $s = 0; for ($i=0; $i<$corr[$y][$x][3]; $i++) {
2376
+                        	$s+= $sh[$y+$i];
2377
+                        }
2183 2378
 
2184 2379
                         // if the max height is < the height of the cell with rowspan => we adapt the height of each max height
2185 2380
                         if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']) {
@@ -2229,8 +2424,12 @@  discard block
 block discarded – undo
2229 2424
          */
2230 2425
         protected function _tag_open_PAGE($param)
2231 2426
         {
2232
-            if ($this->_isForOneLine) return false;
2233
-            if ($this->_debugActif) $this->_DEBUG_add('PAGE '.($this->_page+1), true);
2427
+            if ($this->_isForOneLine) {
2428
+            	return false;
2429
+            }
2430
+            if ($this->_debugActif) {
2431
+            	$this->_DEBUG_add('PAGE '.($this->_page+1), true);
2432
+            }
2234 2433
 
2235 2434
             $newPageSet= (!isset($param['pageset']) || $param['pageset']!='old');
2236 2435
 
@@ -2247,12 +2446,22 @@  discard block
 block discarded – undo
2247 2446
                 $orientation = '';
2248 2447
                 if (isset($param['orientation'])) {
2249 2448
                     $param['orientation'] = strtolower($param['orientation']);
2250
-                    if ($param['orientation']=='p')         $orientation = 'P';
2251
-                    if ($param['orientation']=='portrait')  $orientation = 'P';
2449
+                    if ($param['orientation']=='p') {
2450
+                    	$orientation = 'P';
2451
+                    }
2452
+                    if ($param['orientation']=='portrait') {
2453
+                    	$orientation = 'P';
2454
+                    }
2252 2455
 
2253
-                    if ($param['orientation']=='l')         $orientation = 'L';
2254
-                    if ($param['orientation']=='paysage')   $orientation = 'L';
2255
-                    if ($param['orientation']=='landscape') $orientation = 'L';
2456
+                    if ($param['orientation']=='l') {
2457
+                    	$orientation = 'L';
2458
+                    }
2459
+                    if ($param['orientation']=='paysage') {
2460
+                    	$orientation = 'L';
2461
+                    }
2462
+                    if ($param['orientation']=='landscape') {
2463
+                    	$orientation = 'L';
2464
+                    }
2256 2465
                 }
2257 2466
 
2258 2467
                 // format
@@ -2276,12 +2485,24 @@  discard block
 block discarded – undo
2276 2485
                     $background['img'] = str_replace('&amp;', '&', $background['img']);
2277 2486
 
2278 2487
                     // convert the positions
2279
-                    if ($background['posX']=='left')    $background['posX'] = '0%';
2280
-                    if ($background['posX']=='center')  $background['posX'] = '50%';
2281
-                    if ($background['posX']=='right')   $background['posX'] = '100%';
2282
-                    if ($background['posY']=='top')     $background['posY'] = '0%';
2283
-                    if ($background['posY']=='middle')  $background['posY'] = '50%';
2284
-                    if ($background['posY']=='bottom')  $background['posY'] = '100%';
2488
+                    if ($background['posX']=='left') {
2489
+                    	$background['posX'] = '0%';
2490
+                    }
2491
+                    if ($background['posX']=='center') {
2492
+                    	$background['posX'] = '50%';
2493
+                    }
2494
+                    if ($background['posX']=='right') {
2495
+                    	$background['posX'] = '100%';
2496
+                    }
2497
+                    if ($background['posY']=='top') {
2498
+                    	$background['posY'] = '0%';
2499
+                    }
2500
+                    if ($background['posY']=='middle') {
2501
+                    	$background['posY'] = '50%';
2502
+                    }
2503
+                    if ($background['posY']=='bottom') {
2504
+                    	$background['posY'] = '100%';
2505
+                    }
2285 2506
 
2286 2507
                     if ($background['img']) {
2287 2508
                         // get the size of the image
@@ -2309,10 +2530,18 @@  discard block
 block discarded – undo
2309 2530
                 $background['right']  = isset($param['backright'])  ? $param['backright']  : '0';
2310 2531
 
2311 2532
                 // if no unit => mm
2312
-                if (preg_match('/^([0-9]*)$/isU', $background['top']))    $background['top']    .= 'mm';
2313
-                if (preg_match('/^([0-9]*)$/isU', $background['bottom'])) $background['bottom'] .= 'mm';
2314
-                if (preg_match('/^([0-9]*)$/isU', $background['left']))   $background['left']   .= 'mm';
2315
-                if (preg_match('/^([0-9]*)$/isU', $background['right']))  $background['right']  .= 'mm';
2533
+                if (preg_match('/^([0-9]*)$/isU', $background['top'])) {
2534
+                	$background['top']    .= 'mm';
2535
+                }
2536
+                if (preg_match('/^([0-9]*)$/isU', $background['bottom'])) {
2537
+                	$background['bottom'] .= 'mm';
2538
+                }
2539
+                if (preg_match('/^([0-9]*)$/isU', $background['left'])) {
2540
+                	$background['left']   .= 'mm';
2541
+                }
2542
+                if (preg_match('/^([0-9]*)$/isU', $background['right'])) {
2543
+                	$background['right']  .= 'mm';
2544
+                }
2316 2545
 
2317 2546
                 // convert to mm
2318 2547
                 $background['top']    = $this->parsingCss->ConvertToMM($background['top'], $this->pdf->getH());
@@ -2323,7 +2552,9 @@  discard block
 block discarded – undo
2323 2552
                 // get the background color
2324 2553
                 $res = false;
2325 2554
                 $background['color']    = isset($param['backcolor'])    ? $this->parsingCss->convertToColor($param['backcolor'], $res) : null;
2326
-                if (!$res) $background['color'] = null;
2555
+                if (!$res) {
2556
+                	$background['color'] = null;
2557
+                }
2327 2558
 
2328 2559
                 $this->parsingCss->save();
2329 2560
                 $this->parsingCss->analyse('PAGE', $param);
@@ -2336,7 +2567,9 @@  discard block
 block discarded – undo
2336 2567
                 // automatic footer
2337 2568
                 if (isset($param['footer'])) {
2338 2569
                     $lst = explode(';', $param['footer']);
2339
-                    foreach ($lst as $key => $val) $lst[$key] = trim(strtolower($val));
2570
+                    foreach ($lst as $key => $val) {
2571
+                    	$lst[$key] = trim(strtolower($val));
2572
+                    }
2340 2573
                     $page    = in_array('page', $lst);
2341 2574
                     $date    = in_array('date', $lst);
2342 2575
                     $hour    = in_array('heure', $lst);
@@ -2370,14 +2603,18 @@  discard block
 block discarded – undo
2370 2603
          */
2371 2604
         protected function _tag_close_PAGE($param)
2372 2605
         {
2373
-            if ($this->_isForOneLine) return false;
2606
+            if ($this->_isForOneLine) {
2607
+            	return false;
2608
+            }
2374 2609
 
2375 2610
             $this->_maxH = 0;
2376 2611
 
2377 2612
             $this->parsingCss->load();
2378 2613
             $this->parsingCss->fontSet();
2379 2614
 
2380
-            if ($this->_debugActif) $this->_DEBUG_add('PAGE '.$this->_page, false);
2615
+            if ($this->_debugActif) {
2616
+            	$this->_DEBUG_add('PAGE '.$this->_page, false);
2617
+            }
2381 2618
 
2382 2619
             return true;
2383 2620
         }
@@ -2391,14 +2628,20 @@  discard block
 block discarded – undo
2391 2628
          */
2392 2629
         protected function _tag_open_PAGE_HEADER($param)
2393 2630
         {
2394
-            if ($this->_isForOneLine) return false;
2631
+            if ($this->_isForOneLine) {
2632
+            	return false;
2633
+            }
2395 2634
 
2396 2635
             $this->_subHEADER = array();
2397 2636
             for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2398 2637
                 $action = $this->parsingHtml->code[$this->_parsePos];
2399
-                if ($action['name']=='page_header') $action['name']='page_header_sub';
2638
+                if ($action['name']=='page_header') {
2639
+                	$action['name']='page_header_sub';
2640
+                }
2400 2641
                 $this->_subHEADER[] = $action;
2401
-                if (strtolower($action['name'])=='page_header_sub' && $action['close']) break;
2642
+                if (strtolower($action['name'])=='page_header_sub' && $action['close']) {
2643
+                	break;
2644
+                }
2402 2645
             }
2403 2646
 
2404 2647
             $this->_setPageHeader();
@@ -2415,14 +2658,20 @@  discard block
 block discarded – undo
2415 2658
          */
2416 2659
         protected function _tag_open_PAGE_FOOTER($param)
2417 2660
         {
2418
-            if ($this->_isForOneLine) return false;
2661
+            if ($this->_isForOneLine) {
2662
+            	return false;
2663
+            }
2419 2664
 
2420 2665
             $this->_subFOOTER = array();
2421 2666
             for ($this->_parsePos; $this->_parsePos<count($this->parsingHtml->code); $this->_parsePos++) {
2422 2667
                 $action = $this->parsingHtml->code[$this->_parsePos];
2423
-                if ($action['name']=='page_footer') $action['name']='page_footer_sub';
2668
+                if ($action['name']=='page_footer') {
2669
+                	$action['name']='page_footer_sub';
2670
+                }
2424 2671
                 $this->_subFOOTER[] = $action;
2425
-                if (strtolower($action['name'])=='page_footer_sub' && $action['close']) break;
2672
+                if (strtolower($action['name'])=='page_footer_sub' && $action['close']) {
2673
+                	break;
2674
+                }
2426 2675
             }
2427 2676
 
2428 2677
             $this->_setPageFooter();
@@ -2438,7 +2687,9 @@  discard block
 block discarded – undo
2438 2687
          */
2439 2688
         protected function _tag_open_PAGE_HEADER_SUB($param)
2440 2689
         {
2441
-            if ($this->_isForOneLine) return false;
2690
+            if ($this->_isForOneLine) {
2691
+            	return false;
2692
+            }
2442 2693
 
2443 2694
             // save the current stat
2444 2695
             $this->_subSTATES = array();
@@ -2483,7 +2734,9 @@  discard block
 block discarded – undo
2483 2734
          */
2484 2735
         protected function _tag_close_PAGE_HEADER_SUB($param)
2485 2736
         {
2486
-            if ($this->_isForOneLine) return false;
2737
+            if ($this->_isForOneLine) {
2738
+            	return false;
2739
+            }
2487 2740
 
2488 2741
             $this->parsingCss->load();
2489 2742
 
@@ -2514,7 +2767,9 @@  discard block
 block discarded – undo
2514 2767
          */
2515 2768
         protected function _tag_open_PAGE_FOOTER_SUB($param)
2516 2769
         {
2517
-            if ($this->_isForOneLine) return false;
2770
+            if ($this->_isForOneLine) {
2771
+            	return false;
2772
+            }
2518 2773
 
2519 2774
             // save the current stat
2520 2775
             $this->_subSTATES = array();
@@ -2568,7 +2823,9 @@  discard block
 block discarded – undo
2568 2823
          */
2569 2824
         protected function _tag_close_PAGE_FOOTER_SUB($param)
2570 2825
         {
2571
-            if ($this->_isForOneLine) return false;
2826
+            if ($this->_isForOneLine) {
2827
+            	return false;
2828
+            }
2572 2829
 
2573 2830
             $this->parsingCss->load();
2574 2831
 
@@ -2598,7 +2855,9 @@  discard block
 block discarded – undo
2598 2855
          */
2599 2856
         protected function _tag_open_NOBREAK($param)
2600 2857
         {
2601
-            if ($this->_isForOneLine) return false;
2858
+            if ($this->_isForOneLine) {
2859
+            	return false;
2860
+            }
2602 2861
 
2603 2862
             $this->_maxH = 0;
2604 2863
 
@@ -2633,7 +2892,9 @@  discard block
 block discarded – undo
2633 2892
          */
2634 2893
         protected function _tag_close_NOBREAK($param)
2635 2894
         {
2636
-            if ($this->_isForOneLine) return false;
2895
+            if ($this->_isForOneLine) {
2896
+            	return false;
2897
+            }
2637 2898
 
2638 2899
             $this->_maxH = 0;
2639 2900
 
@@ -2650,8 +2911,12 @@  discard block
 block discarded – undo
2650 2911
          */
2651 2912
         protected function _tag_open_DIV($param, $other = 'div')
2652 2913
         {
2653
-            if ($this->_isForOneLine) return false;
2654
-            if ($this->_debugActif) $this->_DEBUG_add(strtoupper($other), true);
2914
+            if ($this->_isForOneLine) {
2915
+            	return false;
2916
+            }
2917
+            if ($this->_debugActif) {
2918
+            	$this->_DEBUG_add(strtoupper($other), true);
2919
+            }
2655 2920
 
2656 2921
             $this->parsingCss->save();
2657 2922
             $this->parsingCss->analyse($other, $param);
@@ -2659,13 +2924,21 @@  discard block
 block discarded – undo
2659 2924
 
2660 2925
             // for fieldset and legend
2661 2926
             if (in_array($other, array('fieldset', 'legend'))) {
2662
-                if (isset($param['moveTop']))  $this->parsingCss->value['margin']['t']    += $param['moveTop'];
2663
-                if (isset($param['moveLeft'])) $this->parsingCss->value['margin']['l']    += $param['moveLeft'];
2664
-                if (isset($param['moveDown'])) $this->parsingCss->value['margin']['b']    += $param['moveDown'];
2927
+                if (isset($param['moveTop'])) {
2928
+                	$this->parsingCss->value['margin']['t']    += $param['moveTop'];
2929
+                }
2930
+                if (isset($param['moveLeft'])) {
2931
+                	$this->parsingCss->value['margin']['l']    += $param['moveLeft'];
2932
+                }
2933
+                if (isset($param['moveDown'])) {
2934
+                	$this->parsingCss->value['margin']['b']    += $param['moveDown'];
2935
+                }
2665 2936
             }
2666 2937
 
2667 2938
             $alignObject = null;
2668
-            if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
2939
+            if ($this->parsingCss->value['margin-auto']) {
2940
+            	$alignObject = 'center';
2941
+            }
2669 2942
 
2670 2943
             $marge = array();
2671 2944
             $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
@@ -2751,22 +3024,27 @@  discard block
 block discarded – undo
2751 3024
                 if (
2752 3025
                     $w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
2753 3026
                     $this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
2754
-                    )
2755
-                    $this->_tag_open_BR(array());
3027
+                    ) {
3028
+                                    $this->_tag_open_BR(array());
3029
+                }
2756 3030
 
2757 3031
                 if (
2758 3032
                         ($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
2759 3033
                         ($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
2760 3034
                         !$this->_isInOverflow
2761
-                    )
2762
-                    $this->_setNewPage();
3035
+                    ) {
3036
+                                    $this->_setNewPage();
3037
+                }
2763 3038
 
2764 3039
                 $old = $this->parsingCss->getOldValues();
2765 3040
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2766 3041
 
2767 3042
                 if ($parentWidth>$w) {
2768
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2769
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
3043
+                    if ($alignObject=='center') {
3044
+                    	$this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
3045
+                    } else if ($alignObject=='right') {
3046
+                    	$this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
3047
+                    }
2770 3048
                 }
2771 3049
 
2772 3050
                 $this->parsingCss->setPosition();
@@ -2775,8 +3053,11 @@  discard block
 block discarded – undo
2775 3053
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
2776 3054
 
2777 3055
                 if ($parentWidth>$w) {
2778
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
2779
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
3056
+                    if ($alignObject=='center') {
3057
+                    	$this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
3058
+                    } else if ($alignObject=='right') {
3059
+                    	$this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
3060
+                    }
2780 3061
                 }
2781 3062
 
2782 3063
                 $this->parsingCss->setPosition();
@@ -2825,7 +3106,9 @@  discard block
 block discarded – undo
2825 3106
                         $xCorr = ($this->parsingCss->value['width']-$wReel)*0.5;
2826 3107
                         break;
2827 3108
                 }
2828
-                if ($xCorr>0) $xCorr=0;
3109
+                if ($xCorr>0) {
3110
+                	$xCorr=0;
3111
+                }
2829 3112
                 switch($this->parsingCss->value['vertical-align'])
2830 3113
                 {
2831 3114
                     case 'bottom':
@@ -2909,7 +3192,9 @@  discard block
 block discarded – undo
2909 3192
             // get height of LEGEND element and make fieldset corrections
2910 3193
             for ($tempPos = $this->_parsePos + 1; $tempPos<count($this->parsingHtml->code); $tempPos++) {
2911 3194
                 $action = $this->parsingHtml->code[$tempPos];
2912
-                if ($action['name'] == 'fieldset') break;
3195
+                if ($action['name'] == 'fieldset') {
3196
+                	break;
3197
+                }
2913 3198
                 if ($action['name'] == 'legend' && !$action['close']) {
2914 3199
                     $legendOpenPos = $tempPos;
2915 3200
 
@@ -2922,8 +3207,9 @@  discard block
 block discarded – undo
2922 3207
                         $action = $sub->parsingHtml->code[$sub->_parsePos];
2923 3208
                         $sub->_executeAction($action);
2924 3209
 
2925
-                        if ($action['name'] == 'legend' && $action['close'])
2926
-                            break;
3210
+                        if ($action['name'] == 'legend' && $action['close']) {
3211
+                                                    break;
3212
+                        }
2927 3213
                     }
2928 3214
 
2929 3215
                     $legendH = $sub->_maxY;
@@ -2954,7 +3240,9 @@  discard block
 block discarded – undo
2954 3240
          */
2955 3241
         protected function _tag_close_DIV($param, $other='div')
2956 3242
         {
2957
-            if ($this->_isForOneLine) return false;
3243
+            if ($this->_isForOneLine) {
3244
+            	return false;
3245
+            }
2958 3246
 
2959 3247
             if ($this->parsingCss->value['overflow']=='hidden') {
2960 3248
                 $this->_maxX = $this->parsingCss->value['old_maxX'];
@@ -2964,8 +3252,9 @@  discard block
 block discarded – undo
2964 3252
                 $this->pdf->clippingPathStop();
2965 3253
             }
2966 3254
 
2967
-            if ($this->parsingCss->value['rotate'])
2968
-                $this->pdf->stopTransform();
3255
+            if ($this->parsingCss->value['rotate']) {
3256
+                            $this->pdf->stopTransform();
3257
+            }
2969 3258
 
2970 3259
             $marge = array();
2971 3260
             $marge['l'] = $this->parsingCss->value['border']['l']['width'] + $this->parsingCss->value['padding']['l']+0.03;
@@ -3011,8 +3300,12 @@  discard block
 block discarded – undo
3011 3300
             $this->parsingCss->fontSet();
3012 3301
             $this->_loadMargin();
3013 3302
 
3014
-            if ($block) $this->_tag_open_BR(array());
3015
-            if ($this->_debugActif) $this->_DEBUG_add(strtoupper($other), false);
3303
+            if ($block) {
3304
+            	$this->_tag_open_BR(array());
3305
+            }
3306
+            if ($this->_debugActif) {
3307
+            	$this->_DEBUG_add(strtoupper($other), false);
3308
+            }
3016 3309
 
3017 3310
             return true;
3018 3311
         }
@@ -3067,16 +3360,27 @@  discard block
 block discarded – undo
3067 3360
             $lstBarcode['UPC_A']  =    'UPCA';
3068 3361
             $lstBarcode['CODE39'] =    'C39';
3069 3362
 
3070
-            if (!isset($param['type']))     $param['type'] = 'C39';
3071
-            if (!isset($param['value']))    $param['value']    = 0;
3072
-            if (!isset($param['label']))    $param['label']    = 'label';
3073
-            if (!isset($param['style']['color'])) $param['style']['color'] = '#000000';
3363
+            if (!isset($param['type'])) {
3364
+            	$param['type'] = 'C39';
3365
+            }
3366
+            if (!isset($param['value'])) {
3367
+            	$param['value']    = 0;
3368
+            }
3369
+            if (!isset($param['label'])) {
3370
+            	$param['label']    = 'label';
3371
+            }
3372
+            if (!isset($param['style']['color'])) {
3373
+            	$param['style']['color'] = '#000000';
3374
+            }
3074 3375
 
3075
-            if ($this->_testIsDeprecated && (isset($param['bar_h']) || isset($param['bar_w'])))
3076
-                throw new HTML2PDF_exception(9, array('BARCODE', 'bar_h, bar_w'));
3376
+            if ($this->_testIsDeprecated && (isset($param['bar_h']) || isset($param['bar_w']))) {
3377
+                            throw new HTML2PDF_exception(9, array('BARCODE', 'bar_h, bar_w'));
3378
+            }
3077 3379
 
3078 3380
             $param['type'] = strtoupper($param['type']);
3079
-            if (isset($lstBarcode[$param['type']])) $param['type'] = $lstBarcode[$param['type']];
3381
+            if (isset($lstBarcode[$param['type']])) {
3382
+            	$param['type'] = $lstBarcode[$param['type']];
3383
+            }
3080 3384
 
3081 3385
             $this->parsingCss->save();
3082 3386
             $this->parsingCss->analyse('barcode', $param);
@@ -3085,8 +3389,12 @@  discard block
 block discarded – undo
3085 3389
 
3086 3390
             $x = $this->pdf->getX();
3087 3391
             $y = $this->pdf->getY();
3088
-            $w = $this->parsingCss->value['width'];    if (!$w) $w = $this->parsingCss->ConvertToMM('50mm');
3089
-            $h = $this->parsingCss->value['height'];    if (!$h) $h = $this->parsingCss->ConvertToMM('10mm');
3392
+            $w = $this->parsingCss->value['width'];    if (!$w) {
3393
+            	$w = $this->parsingCss->ConvertToMM('50mm');
3394
+            }
3395
+            $h = $this->parsingCss->value['height'];    if (!$h) {
3396
+            	$h = $this->parsingCss->ConvertToMM('10mm');
3397
+            }
3090 3398
             $txt = ($param['label']!=='none' ? $this->parsingCss->value['font-size'] : false);
3091 3399
             $c = $this->parsingCss->value['color'];
3092 3400
             $infos = $this->pdf->myBarcode($param['value'], $param['type'], $x, $y, $w, $h, $txt, $c);
@@ -3127,15 +3435,26 @@  discard block
 block discarded – undo
3127 3435
          */
3128 3436
         protected function _tag_open_QRCODE($param)
3129 3437
         {
3130
-            if ($this->_testIsDeprecated && (isset($param['size']) || isset($param['noborder'])))
3131
-                throw new HTML2PDF_exception(9, array('QRCODE', 'size, noborder'));
3438
+            if ($this->_testIsDeprecated && (isset($param['size']) || isset($param['noborder']))) {
3439
+                            throw new HTML2PDF_exception(9, array('QRCODE', 'size, noborder'));
3440
+            }
3132 3441
 
3133
-            if ($this->_debugActif) $this->_DEBUG_add('QRCODE');
3442
+            if ($this->_debugActif) {
3443
+            	$this->_DEBUG_add('QRCODE');
3444
+            }
3134 3445
 
3135
-            if (!isset($param['value']))                     $param['value'] = '';
3136
-            if (!isset($param['ec']))                        $param['ec'] = 'H';
3137
-            if (!isset($param['style']['color']))            $param['style']['color'] = '#000000';
3138
-            if (!isset($param['style']['background-color'])) $param['style']['background-color'] = '#FFFFFF';
3446
+            if (!isset($param['value'])) {
3447
+            	$param['value'] = '';
3448
+            }
3449
+            if (!isset($param['ec'])) {
3450
+            	$param['ec'] = 'H';
3451
+            }
3452
+            if (!isset($param['style']['color'])) {
3453
+            	$param['style']['color'] = '#000000';
3454
+            }
3455
+            if (!isset($param['style']['background-color'])) {
3456
+            	$param['style']['background-color'] = '#FFFFFF';
3457
+            }
3139 3458
             if (isset($param['style']['border'])) {
3140 3459
                 $borders = $param['style']['border']!='none';
3141 3460
                 unset($param['style']['border']);
@@ -3143,8 +3462,12 @@  discard block
 block discarded – undo
3143 3462
                 $borders = true;
3144 3463
             }
3145 3464
 
3146
-            if ($param['value']==='') return true;
3147
-            if (!in_array($param['ec'], array('L', 'M', 'Q', 'H'))) $param['ec'] = 'H';
3465
+            if ($param['value']==='') {
3466
+            	return true;
3467
+            }
3468
+            if (!in_array($param['ec'], array('L', 'M', 'Q', 'H'))) {
3469
+            	$param['ec'] = 'H';
3470
+            }
3148 3471
 
3149 3472
             $this->parsingCss->save();
3150 3473
             $this->parsingCss->analyse('qrcode', $param);
@@ -3155,7 +3478,9 @@  discard block
 block discarded – undo
3155 3478
             $y = $this->pdf->getY();
3156 3479
             $w = $this->parsingCss->value['width'];
3157 3480
             $h = $this->parsingCss->value['height'];
3158
-            $size = max($w, $h); if (!$size) $size = $this->parsingCss->ConvertToMM('50mm');
3481
+            $size = max($w, $h); if (!$size) {
3482
+            	$size = $this->parsingCss->ConvertToMM('50mm');
3483
+            }
3159 3484
 
3160 3485
             $style = array(
3161 3486
                     'fgcolor' => $this->parsingCss->value['color'],
@@ -3213,8 +3538,12 @@  discard block
 block discarded – undo
3213 3538
             $titre = isset($param['title']) ? trim($param['title']) : '';
3214 3539
             $level = isset($param['level']) ? floor($param['level']) : 0;
3215 3540
 
3216
-            if ($level<0) $level = 0;
3217
-            if ($titre) $this->pdf->Bookmark($titre, $level, -1);
3541
+            if ($level<0) {
3542
+            	$level = 0;
3543
+            }
3544
+            if ($titre) {
3545
+            	$this->pdf->Bookmark($titre, $level, -1);
3546
+            }
3218 3547
 
3219 3548
             return true;
3220 3549
         }
@@ -3258,12 +3587,13 @@  discard block
 block discarded – undo
3258 3587
             $txt = str_replace('[[page_cu]]', $this->pdf->getMyNumPage($this->_page), $txt);
3259 3588
 
3260 3589
             if ($this->parsingCss->value['text-transform']!='none') {
3261
-                if ($this->parsingCss->value['text-transform']=='capitalize')
3262
-                    $txt = ucwords($txt);
3263
-                else if ($this->parsingCss->value['text-transform']=='uppercase')
3264
-                    $txt = strtoupper($txt);
3265
-                else if ($this->parsingCss->value['text-transform']=='lowercase')
3266
-                    $txt = strtolower($txt);
3590
+                if ($this->parsingCss->value['text-transform']=='capitalize') {
3591
+                                    $txt = ucwords($txt);
3592
+                } else if ($this->parsingCss->value['text-transform']=='uppercase') {
3593
+                                    $txt = strtoupper($txt);
3594
+                } else if ($this->parsingCss->value['text-transform']=='lowercase') {
3595
+                                    $txt = strtolower($txt);
3596
+                }
3267 3597
             }
3268 3598
 
3269 3599
             // size of the text
@@ -3319,7 +3649,9 @@  discard block
 block discarded – undo
3319 3649
                     array_shift($words);
3320 3650
                     $old = $str;
3321 3651
 
3322
-                    if (!count($words)) break;
3652
+                    if (!count($words)) {
3653
+                    	break;
3654
+                    }
3323 3655
                     $str[0].= ' '.$words[0][0];
3324 3656
                     $str[1]+= $space+$words[0][1];
3325 3657
                 }
@@ -3336,7 +3668,9 @@  discard block
 block discarded – undo
3336 3668
 
3337 3669
                 // write the extract sentence that fit on the page
3338 3670
                 $wc = ($align=='L' ? $str[1] : $this->parsingCss->value['width']);
3339
-                if ($right - $left<$wc) $wc = $right - $left;
3671
+                if ($right - $left<$wc) {
3672
+                	$wc = $right - $left;
3673
+                }
3340 3674
 
3341 3675
                 if (strlen($str[0])) {
3342 3676
                     $this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
@@ -3357,7 +3691,9 @@  discard block
 block discarded – undo
3357 3691
                 // if we have again words to write
3358 3692
                 if (count($words)) {
3359 3693
                     // remove the space at the end
3360
-                    if ($add) $w-= $space;
3694
+                    if ($add) {
3695
+                    	$w-= $space;
3696
+                    }
3361 3697
 
3362 3698
                     // if we don't add any word, and if the first word is empty => useless space to skip
3363 3699
                     if (!$add && $words[0][0]==='') {
@@ -3392,7 +3728,9 @@  discard block
 block discarded – undo
3392 3728
                     // if more than 10000 line => error
3393 3729
                     $nb++;
3394 3730
                     if ($nb>10000) {
3395
-                        $txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3731
+                        $txt = ''; foreach ($words as $k => $word) {
3732
+                        	$txt.= ($k ? ' ' : '').$word[0];
3733
+                        }
3396 3734
                         throw new HTML2PDF_exception(2, array($txt, $right-$left, $w));
3397 3735
                     }
3398 3736
 
@@ -3403,7 +3741,9 @@  discard block
 block discarded – undo
3403 3741
 
3404 3742
             // if we have words after automatic cut, it is because they fit on the line => we write the text
3405 3743
             if (count($words)) {
3406
-                $txt = ''; foreach ($words as $k => $word) $txt.= ($k ? ' ' : '').$word[0];
3744
+                $txt = ''; foreach ($words as $k => $word) {
3745
+                	$txt.= ($k ? ' ' : '').$word[0];
3746
+                }
3407 3747
                 $w+= $this->pdf->getWordSpacing()*(count($words));
3408 3748
                 $this->pdf->setXY($this->pdf->getX(), $y+$dh+$dy);
3409 3749
                 $this->pdf->Cell(($align=='L' ? $w : $this->parsingCss->value['width']), $h, $txt, 0, 0, $align, $fill, $this->_isInLink);
@@ -3431,11 +3771,15 @@  discard block
 block discarded – undo
3431 3771
          */
3432 3772
         protected function _tag_open_BR($param, $curr = null)
3433 3773
         {
3434
-            if ($this->_isForOneLine) return false;
3774
+            if ($this->_isForOneLine) {
3775
+            	return false;
3776
+            }
3435 3777
 
3436 3778
             $h = max($this->_maxH, $this->parsingCss->getLineHeight());
3437 3779
 
3438
-            if ($this->_maxH==0) $this->_maxY = max($this->_maxY, $this->pdf->getY()+$h);
3780
+            if ($this->_maxH==0) {
3781
+            	$this->_maxY = max($this->_maxY, $this->pdf->getY()+$h);
3782
+            }
3439 3783
 
3440 3784
             $this->_makeBreakLine($h, $curr);
3441 3785
 
@@ -3454,11 +3798,15 @@  discard block
 block discarded – undo
3454 3798
          */
3455 3799
         protected function _tag_open_HR($param)
3456 3800
         {
3457
-            if ($this->_isForOneLine) return false;
3801
+            if ($this->_isForOneLine) {
3802
+            	return false;
3803
+            }
3458 3804
             $oldAlign = $this->parsingCss->value['text-align'];
3459 3805
             $this->parsingCss->value['text-align'] = 'left';
3460 3806
 
3461
-            if ($this->_maxH) $this->_tag_open_BR($param);
3807
+            if ($this->_maxH) {
3808
+            	$this->_tag_open_BR($param);
3809
+            }
3462 3810
 
3463 3811
             $fontSize = $this->parsingCss->value['font-size'];
3464 3812
             $this->parsingCss->value['font-size']=$fontSize*0.5; $this->_tag_open_BR($param);
@@ -3474,8 +3822,12 @@  discard block
 block discarded – undo
3474 3822
             $this->parsingCss->fontSet();
3475 3823
 
3476 3824
             $h = $this->parsingCss->value['height'];
3477
-            if ($h)    $h-= $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3478
-            if ($h<=0) $h = $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3825
+            if ($h) {
3826
+            	$h-= $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3827
+            }
3828
+            if ($h<=0) {
3829
+            	$h = $this->parsingCss->value['border']['t']['width']+$this->parsingCss->value['border']['b']['width'];
3830
+            }
3479 3831
 
3480 3832
             $this->_drawRectangle($this->pdf->getX(), $this->pdf->getY(), $this->parsingCss->value['width'], $h, $this->parsingCss->value['border'], 0, 0, $this->parsingCss->value['background']);
3481 3833
             $this->_maxH = $h;
@@ -3811,7 +4163,9 @@  discard block
 block discarded – undo
3811 4163
 
3812 4164
             if (isset($param['name'])) {
3813 4165
                 $name =     $param['name'];
3814
-                if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
4166
+                if (!isset($this->_lstAnchor[$name])) {
4167
+                	$this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
4168
+                }
3815 4169
 
3816 4170
                 if (!$this->_lstAnchor[$name][1]) {
3817 4171
                     $this->_lstAnchor[$name][1] = true;
@@ -3821,7 +4175,9 @@  discard block
 block discarded – undo
3821 4175
 
3822 4176
             if (preg_match('/^#([^#]+)$/isU', $this->_isInLink, $match)) {
3823 4177
                 $name = $match[1];
3824
-                if (!isset($this->_lstAnchor[$name])) $this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
4178
+                if (!isset($this->_lstAnchor[$name])) {
4179
+                	$this->_lstAnchor[$name] = array($this->pdf->AddLink(), false);
4180
+                }
3825 4181
 
3826 4182
                 $this->_isInLink = $this->_lstAnchor[$name][0];
3827 4183
             }
@@ -3862,9 +4218,13 @@  discard block
 block discarded – undo
3862 4218
          */
3863 4219
         protected function _tag_open_H1($param, $other = 'h1')
3864 4220
         {
3865
-            if ($this->_isForOneLine) return false;
4221
+            if ($this->_isForOneLine) {
4222
+            	return false;
4223
+            }
3866 4224
 
3867
-            if ($this->_maxH) $this->_tag_open_BR(array());
4225
+            if ($this->_maxH) {
4226
+            	$this->_tag_open_BR(array());
4227
+            }
3868 4228
             $this->parsingCss->save();
3869 4229
             $this->parsingCss->value['font-bold'] = true;
3870 4230
 
@@ -3952,7 +4312,9 @@  discard block
 block discarded – undo
3952 4312
          */
3953 4313
         protected function _tag_close_H1($param)
3954 4314
         {
3955
-            if ($this->_isForOneLine) return false;
4315
+            if ($this->_isForOneLine) {
4316
+            	return false;
4317
+            }
3956 4318
 
3957 4319
             $this->_maxH+= $this->parsingCss->value['margin']['b'];
3958 4320
             $h = max($this->_maxH, $this->parsingCss->getLineHeight());
@@ -4119,10 +4481,14 @@  discard block
 block discarded – undo
4119 4481
          */
4120 4482
         protected function _tag_open_P($param)
4121 4483
         {
4122
-            if ($this->_isForOneLine) return false;
4484
+            if ($this->_isForOneLine) {
4485
+            	return false;
4486
+            }
4123 4487
 
4124 4488
             if (!in_array($this->_previousCall, array('_tag_close_P', '_tag_close_UL'))) {
4125
-                if ($this->_maxH) $this->_tag_open_BR(array());
4489
+                if ($this->_maxH) {
4490
+                	$this->_tag_open_BR(array());
4491
+                }
4126 4492
             }
4127 4493
 
4128 4494
             $this->parsingCss->save();
@@ -4159,9 +4525,13 @@  discard block
 block discarded – undo
4159 4525
          */
4160 4526
         protected function _tag_close_P($param)
4161 4527
         {
4162
-            if ($this->_isForOneLine) return false;
4528
+            if ($this->_isForOneLine) {
4529
+            	return false;
4530
+            }
4163 4531
 
4164
-            if ($this->_maxH) $this->_tag_open_BR(array());
4532
+            if ($this->_maxH) {
4533
+            	$this->_tag_open_BR(array());
4534
+            }
4165 4535
             $this->_isInParagraph = false;
4166 4536
             $this->_loadMargin();
4167 4537
             $h = $this->parsingCss->value['margin']['b']+$this->parsingCss->value['padding']['b'];
@@ -4183,7 +4553,9 @@  discard block
 block discarded – undo
4183 4553
          */
4184 4554
         protected function _tag_open_PRE($param, $other = 'pre')
4185 4555
         {
4186
-            if ($other=='pre' && $this->_maxH) $this->_tag_open_BR(array());
4556
+            if ($other=='pre' && $this->_maxH) {
4557
+            	$this->_tag_open_BR(array());
4558
+            }
4187 4559
 
4188 4560
             $this->parsingCss->save();
4189 4561
             $this->parsingCss->value['font-family'] = 'courier';
@@ -4191,7 +4563,9 @@  discard block
 block discarded – undo
4191 4563
             $this->parsingCss->setPosition();
4192 4564
             $this->parsingCss->fontSet();
4193 4565
 
4194
-            if ($other=='pre') return $this->_tag_open_DIV($param, $other);
4566
+            if ($other=='pre') {
4567
+            	return $this->_tag_open_DIV($param, $other);
4568
+            }
4195 4569
 
4196 4570
             return true;
4197 4571
         }
@@ -4220,7 +4594,9 @@  discard block
 block discarded – undo
4220 4594
         protected function _tag_close_PRE($param, $other = 'pre')
4221 4595
         {
4222 4596
             if ($other=='pre') {
4223
-                if ($this->_isForOneLine) return false;
4597
+                if ($this->_isForOneLine) {
4598
+                	return false;
4599
+                }
4224 4600
 
4225 4601
                 $this->_tag_close_DIV($param, $other);
4226 4602
                 $this->_tag_open_BR(array());
@@ -4386,14 +4762,22 @@  discard block
 block discarded – undo
4386 4762
          */
4387 4763
         protected function _tag_open_UL($param, $other = 'ul')
4388 4764
         {
4389
-            if ($this->_isForOneLine) return false;
4765
+            if ($this->_isForOneLine) {
4766
+            	return false;
4767
+            }
4390 4768
 
4391 4769
             if (!in_array($this->_previousCall, array('_tag_close_P', '_tag_close_UL'))) {
4392
-                if ($this->_maxH) $this->_tag_open_BR(array());
4393
-                if (!count($this->_defList)) $this->_tag_open_BR(array());
4770
+                if ($this->_maxH) {
4771
+                	$this->_tag_open_BR(array());
4772
+                }
4773
+                if (!count($this->_defList)) {
4774
+                	$this->_tag_open_BR(array());
4775
+                }
4394 4776
             }
4395 4777
 
4396
-            if (!isset($param['style']['width'])) $param['allwidth'] = true;
4778
+            if (!isset($param['style']['width'])) {
4779
+            	$param['allwidth'] = true;
4780
+            }
4397 4781
             $param['cellspacing'] = 0;
4398 4782
 
4399 4783
             // a list is like a table
@@ -4426,14 +4810,18 @@  discard block
 block discarded – undo
4426 4810
          */
4427 4811
         protected function _tag_close_UL($param)
4428 4812
         {
4429
-            if ($this->_isForOneLine) return false;
4813
+            if ($this->_isForOneLine) {
4814
+            	return false;
4815
+            }
4430 4816
 
4431 4817
             $this->_tag_close_TABLE($param);
4432 4818
 
4433 4819
             $this->_listeDelLevel();
4434 4820
 
4435 4821
             if (!$this->_subPart) {
4436
-                if (!count($this->_defList)) $this->_tag_open_BR(array());
4822
+                if (!count($this->_defList)) {
4823
+                	$this->_tag_open_BR(array());
4824
+                }
4437 4825
             }
4438 4826
 
4439 4827
             return true;
@@ -4460,11 +4848,15 @@  discard block
 block discarded – undo
4460 4848
          */
4461 4849
         protected function _tag_open_LI($param)
4462 4850
         {
4463
-            if ($this->_isForOneLine) return false;
4851
+            if ($this->_isForOneLine) {
4852
+            	return false;
4853
+            }
4464 4854
 
4465 4855
             $this->_listeAddLi();
4466 4856
 
4467
-            if (!isset($param['style']['width'])) $param['style']['width'] = '100%';
4857
+            if (!isset($param['style']['width'])) {
4858
+            	$param['style']['width'] = '100%';
4859
+            }
4468 4860
 
4469 4861
             $paramPUCE = $param;
4470 4862
 
@@ -4518,8 +4910,11 @@  discard block
 block discarded – undo
4518 4910
                 // TD for the puce
4519 4911
                 $this->_tag_open_TD($paramPUCE, 'li_sub');
4520 4912
                 unset($paramPUCE['style']['width']);
4521
-                if (isset($paramPUCE['src']))    $this->_tag_open_IMG($paramPUCE);
4522
-                else                            $this->_tag_open_WRITE($paramPUCE);
4913
+                if (isset($paramPUCE['src'])) {
4914
+                	$this->_tag_open_IMG($paramPUCE);
4915
+                } else {
4916
+                	$this->_tag_open_WRITE($paramPUCE);
4917
+                }
4523 4918
                 $this->_tag_close_TD($paramPUCE);
4524 4919
             }
4525 4920
             $this->parsingCss->load();
@@ -4540,7 +4935,9 @@  discard block
 block discarded – undo
4540 4935
          */
4541 4936
         protected function _tag_close_LI($param)
4542 4937
         {
4543
-            if ($this->_isForOneLine) return false;
4938
+            if ($this->_isForOneLine) {
4939
+            	return false;
4940
+            }
4544 4941
 
4545 4942
             $this->_tag_close_TD($param);
4546 4943
 
@@ -4558,7 +4955,9 @@  discard block
 block discarded – undo
4558 4955
          */
4559 4956
         protected function _tag_open_TBODY($param)
4560 4957
         {
4561
-            if ($this->_isForOneLine) return false;
4958
+            if ($this->_isForOneLine) {
4959
+            	return false;
4960
+            }
4562 4961
 
4563 4962
             $this->parsingCss->save();
4564 4963
             $this->parsingCss->analyse('tbody', $param);
@@ -4577,7 +4976,9 @@  discard block
 block discarded – undo
4577 4976
          */
4578 4977
         protected function _tag_close_TBODY($param)
4579 4978
         {
4580
-            if ($this->_isForOneLine) return false;
4979
+            if ($this->_isForOneLine) {
4980
+            	return false;
4981
+            }
4581 4982
 
4582 4983
             $this->parsingCss->load();
4583 4984
             $this->parsingCss->fontSet();
@@ -4594,7 +4995,9 @@  discard block
 block discarded – undo
4594 4995
          */
4595 4996
         protected function _tag_open_THEAD($param)
4596 4997
         {
4597
-            if ($this->_isForOneLine) return false;
4998
+            if ($this->_isForOneLine) {
4999
+            	return false;
5000
+            }
4598 5001
 
4599 5002
             $this->parsingCss->save();
4600 5003
             $this->parsingCss->analyse('thead', $param);
@@ -4607,9 +5010,13 @@  discard block
 block discarded – undo
4607 5010
                 HTML2PDF::$_tables[$param['num']]['thead']['code'] = array();
4608 5011
                 for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4609 5012
                     $action = $this->parsingHtml->code[$pos];
4610
-                    if (strtolower($action['name'])=='thead') $action['name'] = 'thead_sub';
5013
+                    if (strtolower($action['name'])=='thead') {
5014
+                    	$action['name'] = 'thead_sub';
5015
+                    }
4611 5016
                     HTML2PDF::$_tables[$param['num']]['thead']['code'][] = $action;
4612
-                    if (strtolower($action['name'])=='thead_sub' && $action['close']) break;
5017
+                    if (strtolower($action['name'])=='thead_sub' && $action['close']) {
5018
+                    	break;
5019
+                    }
4613 5020
                 }
4614 5021
             } else {
4615 5022
                 $level = $this->parsingHtml->getLevel($this->_parsePos);
@@ -4629,7 +5036,9 @@  discard block
 block discarded – undo
4629 5036
          */
4630 5037
         protected function _tag_close_THEAD($param)
4631 5038
         {
4632
-            if ($this->_isForOneLine) return false;
5039
+            if ($this->_isForOneLine) {
5040
+            	return false;
5041
+            }
4633 5042
 
4634 5043
             $this->parsingCss->load();
4635 5044
             $this->parsingCss->fontSet();
@@ -4653,7 +5062,9 @@  discard block
 block discarded – undo
4653 5062
          */
4654 5063
         protected function _tag_open_TFOOT($param)
4655 5064
         {
4656
-            if ($this->_isForOneLine) return false;
5065
+            if ($this->_isForOneLine) {
5066
+            	return false;
5067
+            }
4657 5068
 
4658 5069
             $this->parsingCss->save();
4659 5070
             $this->parsingCss->analyse('tfoot', $param);
@@ -4666,9 +5077,13 @@  discard block
 block discarded – undo
4666 5077
                 HTML2PDF::$_tables[$param['num']]['tfoot']['code'] = array();
4667 5078
                 for ($pos=$this->_tempPos; $pos<count($this->parsingHtml->code); $pos++) {
4668 5079
                     $action = $this->parsingHtml->code[$pos];
4669
-                    if (strtolower($action['name'])=='tfoot') $action['name'] = 'tfoot_sub';
5080
+                    if (strtolower($action['name'])=='tfoot') {
5081
+                    	$action['name'] = 'tfoot_sub';
5082
+                    }
4670 5083
                     HTML2PDF::$_tables[$param['num']]['tfoot']['code'][] = $action;
4671
-                    if (strtolower($action['name'])=='tfoot_sub' && $action['close']) break;
5084
+                    if (strtolower($action['name'])=='tfoot_sub' && $action['close']) {
5085
+                    	break;
5086
+                    }
4672 5087
                 }
4673 5088
             } else {
4674 5089
                 $level = $this->parsingHtml->getLevel($this->_parsePos);
@@ -4688,7 +5103,9 @@  discard block
 block discarded – undo
4688 5103
          */
4689 5104
         protected function _tag_close_TFOOT($param)
4690 5105
         {
4691
-            if ($this->_isForOneLine) return false;
5106
+            if ($this->_isForOneLine) {
5107
+            	return false;
5108
+            }
4692 5109
 
4693 5110
             $this->parsingCss->load();
4694 5111
             $this->parsingCss->fontSet();
@@ -4711,7 +5128,9 @@  discard block
 block discarded – undo
4711 5128
          */
4712 5129
         protected function _tag_open_THEAD_SUB($param)
4713 5130
         {
4714
-            if ($this->_isForOneLine) return false;
5131
+            if ($this->_isForOneLine) {
5132
+            	return false;
5133
+            }
4715 5134
 
4716 5135
             $this->parsingCss->save();
4717 5136
             $this->parsingCss->analyse('thead', $param);
@@ -4729,7 +5148,9 @@  discard block
 block discarded – undo
4729 5148
          */
4730 5149
         protected function _tag_close_THEAD_SUB($param)
4731 5150
         {
4732
-            if ($this->_isForOneLine) return false;
5151
+            if ($this->_isForOneLine) {
5152
+            	return false;
5153
+            }
4733 5154
 
4734 5155
             $this->parsingCss->load();
4735 5156
             $this->parsingCss->fontSet();
@@ -4745,7 +5166,9 @@  discard block
 block discarded – undo
4745 5166
          */
4746 5167
         protected function _tag_open_TFOOT_SUB($param)
4747 5168
         {
4748
-            if ($this->_isForOneLine) return false;
5169
+            if ($this->_isForOneLine) {
5170
+            	return false;
5171
+            }
4749 5172
 
4750 5173
             $this->parsingCss->save();
4751 5174
             $this->parsingCss->analyse('tfoot', $param);
@@ -4763,7 +5186,9 @@  discard block
 block discarded – undo
4763 5186
          */
4764 5187
         protected function _tag_close_TFOOT_SUB($param)
4765 5188
         {
4766
-            if ($this->_isForOneLine) return false;
5189
+            if ($this->_isForOneLine) {
5190
+            	return false;
5191
+            }
4767 5192
 
4768 5193
             $this->parsingCss->load();
4769 5194
             $this->parsingCss->fontSet();
@@ -4825,7 +5250,9 @@  discard block
 block discarded – undo
4825 5250
         protected function _tag_open_TABLE($param, $other = 'table')
4826 5251
         {
4827 5252
             if ($this->_maxH) {
4828
-                if ($this->_isForOneLine) return false;
5253
+                if ($this->_isForOneLine) {
5254
+                	return false;
5255
+                }
4829 5256
                 $this->_tag_open_BR(array());
4830 5257
             }
4831 5258
 
@@ -4837,15 +5264,21 @@  discard block
 block discarded – undo
4837 5264
             $this->_maxH = 0;
4838 5265
 
4839 5266
             $alignObject = isset($param['align']) ? strtolower($param['align']) : 'left';
4840
-            if (isset($param['align'])) unset($param['align']);
4841
-            if (!in_array($alignObject, array('left', 'center', 'right'))) $alignObject = 'left';
5267
+            if (isset($param['align'])) {
5268
+            	unset($param['align']);
5269
+            }
5270
+            if (!in_array($alignObject, array('left', 'center', 'right'))) {
5271
+            	$alignObject = 'left';
5272
+            }
4842 5273
 
4843 5274
             $this->parsingCss->save();
4844 5275
             $this->parsingCss->analyse($other, $param);
4845 5276
             $this->parsingCss->setPosition();
4846 5277
             $this->parsingCss->fontSet();
4847 5278
 
4848
-            if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
5279
+            if ($this->parsingCss->value['margin-auto']) {
5280
+            	$alignObject = 'center';
5281
+            }
4849 5282
 
4850 5283
             // collapse table ?
4851 5284
             $collapse = false;
@@ -4866,7 +5299,9 @@  discard block
 block discarded – undo
4866 5299
 
4867 5300
             // if we are in a SUB html => prepare the properties of the table
4868 5301
             if ($this->_subPart) {
4869
-                if ($this->_debugActif) $this->_DEBUG_add('Table n'.$param['num'], true);
5302
+                if ($this->_debugActif) {
5303
+                	$this->_DEBUG_add('Table n'.$param['num'], true);
5304
+                }
4870 5305
                 HTML2PDF::$_tables[$param['num']] = array();
4871 5306
                 HTML2PDF::$_tables[$param['num']]['border']          = isset($param['border']) ? $this->parsingCss->readBorder($param['border']) : null;
4872 5307
                 HTML2PDF::$_tables[$param['num']]['cellpadding']     = $this->parsingCss->ConvertToMM(isset($param['cellpadding']) ? $param['cellpadding'] : '1px');
@@ -4938,7 +5373,9 @@  discard block
 block discarded – undo
4938 5373
          */
4939 5374
         protected function _tag_close_TABLE($param)
4940 5375
         {
4941
-            if ($this->_isForOneLine) return false;
5376
+            if ($this->_isForOneLine) {
5377
+            	return false;
5378
+            }
4942 5379
 
4943 5380
             $this->_maxH = 0;
4944 5381
 
@@ -4954,9 +5391,10 @@  discard block
 block discarded – undo
4954 5391
                     foreach (HTML2PDF::$_tables[$param['num']][$mode]['tr'] as $tr) {
4955 5392
                         // hauteur de la ligne tr
4956 5393
                         $h = 0;
4957
-                        for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$tr]); $i++)
4958
-                            if (HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['rowspan']==1)
5394
+                        for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$tr]); $i++) {
5395
+                                                    if (HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['rowspan']==1)
4959 5396
                                 $h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$tr][$i]['h']);
5397
+                        }
4960 5398
                         HTML2PDF::$_tables[$param['num']][$mode]['height']+= $h;
4961 5399
                     }
4962 5400
                 }
@@ -4975,10 +5413,11 @@  discard block
 block discarded – undo
4975 5413
                 $x = HTML2PDF::$_tables[$param['num']]['curr_x'];
4976 5414
                 $w = HTML2PDF::$_tables[$param['num']]['width'];
4977 5415
                 if ($parentWidth>$w) {
4978
-                    if (HTML2PDF::$_tables[$param['num']]['align']=='center')
4979
-                        $x = $x + ($parentWidth-$w)*0.5;
4980
-                    else if (HTML2PDF::$_tables[$param['num']]['align']=='right')
4981
-                        $x = $x + $parentWidth-$w;
5416
+                    if (HTML2PDF::$_tables[$param['num']]['align']=='center') {
5417
+                                            $x = $x + ($parentWidth-$w)*0.5;
5418
+                    } else if (HTML2PDF::$_tables[$param['num']]['align']=='right') {
5419
+                                            $x = $x + $parentWidth-$w;
5420
+                    }
4982 5421
 
4983 5422
                     HTML2PDF::$_tables[$param['num']]['curr_x'] = $x;
4984 5423
                 }
@@ -5001,8 +5440,12 @@  discard block
 block discarded – undo
5001 5440
                 for ($k=0; $k<count(HTML2PDF::$_tables[$param['num']]['cases']); $k++) {
5002 5441
 
5003 5442
                     // if it is a TR of the thead or of the tfoot => skip
5004
-                    if (in_array($k, HTML2PDF::$_tables[$param['num']]['thead']['tr'])) continue;
5005
-                    if (in_array($k, HTML2PDF::$_tables[$param['num']]['tfoot']['tr'])) continue;
5443
+                    if (in_array($k, HTML2PDF::$_tables[$param['num']]['thead']['tr'])) {
5444
+                    	continue;
5445
+                    }
5446
+                    if (in_array($k, HTML2PDF::$_tables[$param['num']]['tfoot']['tr'])) {
5447
+                    	continue;
5448
+                    }
5006 5449
 
5007 5450
                     // height of the line
5008 5451
                     $th = 0;
@@ -5010,13 +5453,16 @@  discard block
 block discarded – undo
5010 5453
                     for ($i=0; $i<count(HTML2PDF::$_tables[$param['num']]['cases'][$k]); $i++) {
5011 5454
                         $h = max($h, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5012 5455
 
5013
-                        if (HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['rowspan']==1)
5014
-                            $th = max($th, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5456
+                        if (HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['rowspan']==1) {
5457
+                                                    $th = max($th, HTML2PDF::$_tables[$param['num']]['cases'][$k][$i]['h']);
5458
+                        }
5015 5459
                     }
5016 5460
 
5017 5461
                     // if the row does not fit on the page => new page
5018 5462
                     if ($y+$h+$height>$max) {
5019
-                        if ($height==$h0) $height = null;
5463
+                        if ($height==$h0) {
5464
+                        	$height = null;
5465
+                        }
5020 5466
                         HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5021 5467
                         $height = $h0;
5022 5468
                         $y = $this->_margeTop;
@@ -5025,7 +5471,9 @@  discard block
 block discarded – undo
5025 5471
                 }
5026 5472
 
5027 5473
                 // if ther is a height at the end, add it
5028
-                if ($height!=$h0 || $k==0) HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5474
+                if ($height!=$h0 || $k==0) {
5475
+                	HTML2PDF::$_tables[$param['num']]['height'][] = $height;
5476
+                }
5029 5477
             } else {
5030 5478
                 // if we have tfoor, draw it
5031 5479
                 if (count(HTML2PDF::$_tables[$param['num']]['tfoot']['code'])) {
@@ -5050,12 +5498,13 @@  discard block
 block discarded – undo
5050 5498
 
5051 5499
                 // get the positions of the end of the table
5052 5500
                 $x = HTML2PDF::$_tables[$param['num']]['curr_x'] + HTML2PDF::$_tables[$param['num']]['width'];
5053
-                if (count(HTML2PDF::$_tables[$param['num']]['height'])>1)
5054
-                    $y = $this->_margeTop+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5055
-                else if (count(HTML2PDF::$_tables[$param['num']]['height'])==1)
5056
-                    $y = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5057
-                else
5058
-                    $y = HTML2PDF::$_tables[$param['num']]['curr_y'];
5501
+                if (count(HTML2PDF::$_tables[$param['num']]['height'])>1) {
5502
+                                    $y = $this->_margeTop+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5503
+                } else if (count(HTML2PDF::$_tables[$param['num']]['height'])==1) {
5504
+                                    $y = HTML2PDF::$_tables[$param['num']]['curr_y']+HTML2PDF::$_tables[$param['num']]['height'][count(HTML2PDF::$_tables[$param['num']]['height'])-1];
5505
+                } else {
5506
+                                    $y = HTML2PDF::$_tables[$param['num']]['curr_y'];
5507
+                }
5059 5508
 
5060 5509
                 $this->_maxX = max($this->_maxX, $x);
5061 5510
                 $this->_maxY = max($this->_maxY, $y);
@@ -5064,7 +5513,9 @@  discard block
 block discarded – undo
5064 5513
 
5065 5514
                 $this->_loadMargin();
5066 5515
 
5067
-                if ($this->_debugActif) $this->_DEBUG_add('Table '.$param['num'], false);
5516
+                if ($this->_debugActif) {
5517
+                	$this->_DEBUG_add('Table '.$param['num'], false);
5518
+                }
5068 5519
             }
5069 5520
 
5070 5521
             $this->parsingCss->load();
@@ -5084,8 +5535,9 @@  discard block
 block discarded – undo
5084 5535
         protected function _tag_open_COL($param)
5085 5536
         {
5086 5537
             $span = isset($param['span']) ? $param['span'] : 1;
5087
-            for ($k=0; $k<$span; $k++)
5088
-                HTML2PDF::$_tables[$param['num']]['cols'][] = $param;
5538
+            for ($k=0; $k<$span; $k++) {
5539
+                            HTML2PDF::$_tables[$param['num']]['cols'][] = $param;
5540
+            }
5089 5541
         }
5090 5542
 
5091 5543
         /**
@@ -5111,7 +5563,9 @@  discard block
 block discarded – undo
5111 5563
          */
5112 5564
         protected function _tag_open_TR($param, $other = 'tr')
5113 5565
         {
5114
-            if ($this->_isForOneLine) return false;
5566
+            if ($this->_isForOneLine) {
5567
+            	return false;
5568
+            }
5115 5569
 
5116 5570
             $this->_maxH = 0;
5117 5571
 
@@ -5215,12 +5669,14 @@  discard block
 block discarded – undo
5215 5669
             } else {
5216 5670
                 // prepare it
5217 5671
                 HTML2PDF::$_tables[$param['num']]['cases'][HTML2PDF::$_tables[$param['num']]['tr_curr']-1] = array();
5218
-                if (!isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']]))
5219
-                    HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']] = array();
5672
+                if (!isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']])) {
5673
+                                    HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']] = array();
5674
+                }
5220 5675
 
5221 5676
                 HTML2PDF::$_tables[$param['num']]['corr_x']=0;
5222
-                while(isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']]))
5223
-                    HTML2PDF::$_tables[$param['num']]['corr_x']++;
5677
+                while(isset(HTML2PDF::$_tables[$param['num']]['corr'][HTML2PDF::$_tables[$param['num']]['corr_y']][HTML2PDF::$_tables[$param['num']]['corr_x']])) {
5678
+                                    HTML2PDF::$_tables[$param['num']]['corr_x']++;
5679
+                }
5224 5680
             }
5225 5681
 
5226 5682
             return true;
@@ -5235,7 +5691,9 @@  discard block
 block discarded – undo
5235 5691
          */
5236 5692
         protected function _tag_close_TR($param)
5237 5693
         {
5238
-            if ($this->_isForOneLine) return false;
5694
+            if ($this->_isForOneLine) {
5695
+            	return false;
5696
+            }
5239 5697
 
5240 5698
             $this->_maxH = 0;
5241 5699
 
@@ -5273,7 +5731,9 @@  discard block
 block discarded – undo
5273 5731
          */
5274 5732
         protected function _tag_open_TD($param, $other = 'td')
5275 5733
         {
5276
-            if ($this->_isForOneLine) return false;
5734
+            if ($this->_isForOneLine) {
5735
+            	return false;
5736
+            }
5277 5737
 
5278 5738
             $this->_maxH = 0;
5279 5739
 
@@ -5328,10 +5788,11 @@  discard block
 block discarded – undo
5328 5788
                     if (count($colParam['style']['width'])) {
5329 5789
                         $total = $colParam['style']['width'][0]; unset($colParam['style']['width'][0]);
5330 5790
                         foreach ($colParam['style']['width'] as $width) {
5331
-                            if (substr($total, -1)=='%' && substr($width, -1)=='%')
5332
-                                $total = (str_replace('%', '', $total)+str_replace('%', '', $width)).'%';
5333
-                            else
5334
-                                $total = ($this->parsingCss->ConvertToMM($total, $last) + $this->parsingCss->ConvertToMM($width, $last)).'mm';
5791
+                            if (substr($total, -1)=='%' && substr($width, -1)=='%') {
5792
+                                                            $total = (str_replace('%', '', $total)+str_replace('%', '', $width)).'%';
5793
+                            } else {
5794
+                                                            $total = ($this->parsingCss->ConvertToMM($total, $last) + $this->parsingCss->ConvertToMM($width, $last)).'mm';
5795
+                            }
5335 5796
                         }
5336 5797
                     }
5337 5798
 
@@ -5363,8 +5824,9 @@  discard block
 block discarded – undo
5363 5824
                 $legacy = array();
5364 5825
 
5365 5826
                 $old = $this->parsingCss->getLastValue('background');
5366
-                if ($old && ($old['color'] || $old['image']))
5367
-                    $legacy['background'] = $old;
5827
+                if ($old && ($old['color'] || $old['image'])) {
5828
+                                    $legacy['background'] = $old;
5829
+                }
5368 5830
 
5369 5831
                 if (HTML2PDF::$_tables[$param['num']]['border']) {
5370 5832
                     $legacy['border'] = array();
@@ -5395,7 +5857,9 @@  discard block
 block discarded – undo
5395 5857
                 }
5396 5858
 
5397 5859
                 if (HTML2PDF::$_tables[$param['num']]['td_curr']>0) {
5398
-                    if (!$return) $this->parsingCss->value['width']+= $this->parsingCss->value['border']['l']['width'];
5860
+                    if (!$return) {
5861
+                    	$this->parsingCss->value['width']+= $this->parsingCss->value['border']['l']['width'];
5862
+                    }
5399 5863
                     $this->parsingCss->value['border']['l'] = $this->parsingCss->readBorder('none');
5400 5864
                 }
5401 5865
             }
@@ -5501,7 +5965,9 @@  discard block
 block discarded – undo
5501 5965
          */
5502 5966
         protected function _tag_close_TD($param)
5503 5967
         {
5504
-            if ($this->_isForOneLine) return false;
5968
+            if ($this->_isForOneLine) {
5969
+            	return false;
5970
+            }
5505 5971
 
5506 5972
             $this->_maxH = 0;
5507 5973
 
@@ -5564,7 +6030,9 @@  discard block
 block discarded – undo
5564 6030
          */
5565 6031
         protected function _tag_open_TH($param)
5566 6032
         {
5567
-            if ($this->_isForOneLine) return false;
6033
+            if ($this->_isForOneLine) {
6034
+            	return false;
6035
+            }
5568 6036
 
5569 6037
             $this->parsingCss->save();
5570 6038
             $this->parsingCss->value['font-bold'] = true;
@@ -5583,7 +6051,9 @@  discard block
 block discarded – undo
5583 6051
          */
5584 6052
         protected function _tag_close_TH($param)
5585 6053
         {
5586
-            if ($this->_isForOneLine) return false;
6054
+            if ($this->_isForOneLine) {
6055
+            	return false;
6056
+            }
5587 6057
 
5588 6058
             $this->_tag_close_TD($param);
5589 6059
 
@@ -5613,7 +6083,9 @@  discard block
 block discarded – undo
5613 6083
             $this->parsingCss->fontSet();
5614 6084
 
5615 6085
             $res = $this->_drawImage($src, isset($param['sub_li']));
5616
-            if (!$res) return $res;
6086
+            if (!$res) {
6087
+            	return $res;
6088
+            }
5617 6089
 
5618 6090
             $this->parsingCss->load();
5619 6091
             $this->parsingCss->fontSet();
@@ -5654,7 +6126,9 @@  discard block
 block discarded – undo
5654 6126
             $this->_lstSelect['size']    = isset($param['size']) ? $param['size'] : 1;
5655 6127
             $this->_lstSelect['options']    = array();
5656 6128
 
5657
-            if ($this->_lstSelect['multi'] && $this->_lstSelect['size']<3) $this->_lstSelect['size'] = 3;
6129
+            if ($this->_lstSelect['multi'] && $this->_lstSelect['size']<3) {
6130
+            	$this->_lstSelect['size'] = 3;
6131
+            }
5658 6132
 
5659 6133
             return true;
5660 6134
         }
@@ -5707,7 +6181,9 @@  discard block
 block discarded – undo
5707 6181
             $f = 1.08*$this->parsingCss->value['font-size'];
5708 6182
 
5709 6183
             // width
5710
-            $w = $this->parsingCss->value['width']; if (!$w) $w = 50;
6184
+            $w = $this->parsingCss->value['width']; if (!$w) {
6185
+            	$w = 50;
6186
+            }
5711 6187
 
5712 6188
             // height (automatic)
5713 6189
             $h = ($f*1.07*$this->_lstSelect['size'] + 1);
@@ -5820,9 +6296,15 @@  discard block
 block discarded – undo
5820 6296
          */
5821 6297
         protected function _tag_open_INPUT($param)
5822 6298
         {
5823
-            if (!isset($param['name']))  $param['name']  = 'champs_pdf_'.(count($this->_lstField)+1);
5824
-            if (!isset($param['value'])) $param['value'] = '';
5825
-            if (!isset($param['type']))  $param['type']  = 'text';
6299
+            if (!isset($param['name'])) {
6300
+            	$param['name']  = 'champs_pdf_'.(count($this->_lstField)+1);
6301
+            }
6302
+            if (!isset($param['value'])) {
6303
+            	$param['value'] = '';
6304
+            }
6305
+            if (!isset($param['type'])) {
6306
+            	$param['type']  = 'text';
6307
+            }
5826 6308
 
5827 6309
             $param['name'] = strtolower($param['name']);
5828 6310
             $param['type'] = strtolower($param['type']);
@@ -5856,7 +6338,9 @@  discard block
 block discarded – undo
5856 6338
                 case 'checkbox':
5857 6339
                     $w = 3;
5858 6340
                     $h = $w;
5859
-                    if ($h<$f) $y+= ($f-$h)*0.5;
6341
+                    if ($h<$f) {
6342
+                    	$y+= ($f-$h)*0.5;
6343
+                    }
5860 6344
                     $checked = (isset($param['checked']) && $param['checked']=='checked');
5861 6345
                     $this->pdf->CheckBox($name, $w, $checked, $prop, array(), ($param['value'] ? $param['value'] : 'Yes'), $x, $y);
5862 6346
                     break;
@@ -5864,7 +6348,9 @@  discard block
 block discarded – undo
5864 6348
                 case 'radio':
5865 6349
                     $w = 3;
5866 6350
                     $h = $w;
5867
-                    if ($h<$f) $y+= ($f-$h)*0.5;
6351
+                    if ($h<$f) {
6352
+                    	$y+= ($f-$h)*0.5;
6353
+                    }
5868 6354
                     $checked = (isset($param['checked']) && $param['checked']=='checked');
5869 6355
                     $this->pdf->RadioButton($name, $w, $prop, array(), ($param['value'] ? $param['value'] : 'On'), $checked, $x, $y);
5870 6356
                     break;
@@ -5877,29 +6363,43 @@  discard block
 block discarded – undo
5877 6363
                     break;
5878 6364
 
5879 6365
                 case 'text':
5880
-                    $w = $this->parsingCss->value['width']; if (!$w) $w = 40;
6366
+                    $w = $this->parsingCss->value['width']; if (!$w) {
6367
+                    	$w = 40;
6368
+                    }
5881 6369
                     $h = $f*1.3;
5882 6370
                     $prop['value'] = $param['value'];
5883 6371
                     $this->pdf->TextField($name, $w, $h, $prop, array(), $x, $y);
5884 6372
                     break;
5885 6373
 
5886 6374
                 case 'submit':
5887
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5888
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
6375
+                    $w = $this->parsingCss->value['width'];    if (!$w) {
6376
+                    	$w = 40;
6377
+                    }
6378
+                    $h = $this->parsingCss->value['height'];    if (!$h) {
6379
+                    	$h = $f*1.3;
6380
+                    }
5889 6381
                     $action = array('S'=>'SubmitForm', 'F'=>$this->_isInForm, 'Flags'=>array('ExportFormat'));
5890 6382
                     $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5891 6383
                     break;
5892 6384
 
5893 6385
                 case 'reset':
5894
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5895
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
6386
+                    $w = $this->parsingCss->value['width'];    if (!$w) {
6387
+                    	$w = 40;
6388
+                    }
6389
+                    $h = $this->parsingCss->value['height'];    if (!$h) {
6390
+                    	$h = $f*1.3;
6391
+                    }
5896 6392
                     $action = array('S'=>'ResetForm');
5897 6393
                     $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5898 6394
                     break;
5899 6395
 
5900 6396
                 case 'button':
5901
-                    $w = $this->parsingCss->value['width'];    if (!$w) $w = 40;
5902
-                    $h = $this->parsingCss->value['height'];    if (!$h) $h = $f*1.3;
6397
+                    $w = $this->parsingCss->value['width'];    if (!$w) {
6398
+                    	$w = 40;
6399
+                    }
6400
+                    $h = $this->parsingCss->value['height'];    if (!$h) {
6401
+                    	$h = $f*1.3;
6402
+                    }
5903 6403
                     $action = isset($param['onclick']) ? $param['onclick'] : '';
5904 6404
                     $this->pdf->Button($name, $w, $h, $param['value'], $action, $prop, array(), $x, $y);
5905 6405
                     break;
@@ -5931,15 +6431,21 @@  discard block
 block discarded – undo
5931 6431
          */
5932 6432
         protected function _tag_open_DRAW($param)
5933 6433
         {
5934
-            if ($this->_isForOneLine) return false;
5935
-            if ($this->_debugActif) $this->_DEBUG_add('DRAW', true);
6434
+            if ($this->_isForOneLine) {
6435
+            	return false;
6436
+            }
6437
+            if ($this->_debugActif) {
6438
+            	$this->_DEBUG_add('DRAW', true);
6439
+            }
5936 6440
 
5937 6441
             $this->parsingCss->save();
5938 6442
             $this->parsingCss->analyse('draw', $param);
5939 6443
             $this->parsingCss->fontSet();
5940 6444
 
5941 6445
             $alignObject = null;
5942
-            if ($this->parsingCss->value['margin-auto']) $alignObject = 'center';
6446
+            if ($this->parsingCss->value['margin-auto']) {
6447
+            	$alignObject = 'center';
6448
+            }
5943 6449
 
5944 6450
             $overW = $this->parsingCss->value['width'];
5945 6451
             $overH = $this->parsingCss->value['height'];
@@ -5954,22 +6460,27 @@  discard block
 block discarded – undo
5954 6460
                 if (
5955 6461
                     $w < ($this->pdf->getW() - $this->pdf->getlMargin()-$this->pdf->getrMargin()) &&
5956 6462
                     $this->pdf->getX() + $w>=($this->pdf->getW() - $this->pdf->getrMargin())
5957
-                    )
5958
-                    $this->_tag_open_BR(array());
6463
+                    ) {
6464
+                                    $this->_tag_open_BR(array());
6465
+                }
5959 6466
 
5960 6467
                 if (
5961 6468
                         ($h < ($this->pdf->getH() - $this->pdf->gettMargin()-$this->pdf->getbMargin())) &&
5962 6469
                         ($this->pdf->getY() + $h>=($this->pdf->getH() - $this->pdf->getbMargin())) &&
5963 6470
                         !$this->_isInOverflow
5964
-                    )
5965
-                    $this->_setNewPage();
6471
+                    ) {
6472
+                                    $this->_setNewPage();
6473
+                }
5966 6474
 
5967 6475
                 $old = $this->parsingCss->getOldValues();
5968 6476
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5969 6477
 
5970 6478
                 if ($parentWidth>$w) {
5971
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5972
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
6479
+                    if ($alignObject=='center') {
6480
+                    	$this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
6481
+                    } else if ($alignObject=='right') {
6482
+                    	$this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
6483
+                    }
5973 6484
                 }
5974 6485
 
5975 6486
                 $this->parsingCss->setPosition();
@@ -5978,8 +6489,11 @@  discard block
 block discarded – undo
5978 6489
                 $parentWidth = $old['width'] ? $old['width'] : $this->pdf->getW() - $this->pdf->getlMargin() - $this->pdf->getrMargin();
5979 6490
 
5980 6491
                 if ($parentWidth>$w) {
5981
-                    if ($alignObject=='center')        $this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
5982
-                    else if ($alignObject=='right')    $this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
6492
+                    if ($alignObject=='center') {
6493
+                    	$this->pdf->setX($this->pdf->getX() + ($parentWidth-$w)*0.5);
6494
+                    } else if ($alignObject=='right') {
6495
+                    	$this->pdf->setX($this->pdf->getX() + $parentWidth-$w);
6496
+                    }
5983 6497
                 }
5984 6498
 
5985 6499
                 $this->parsingCss->setPosition();
@@ -6056,7 +6570,9 @@  discard block
 block discarded – undo
6056 6570
          */
6057 6571
         protected function _tag_close_DRAW($param)
6058 6572
         {
6059
-            if ($this->_isForOneLine) return false;
6573
+            if ($this->_isForOneLine) {
6574
+            	return false;
6575
+            }
6060 6576
 
6061 6577
             $this->pdf->SetAlpha(1.);
6062 6578
             $this->pdf->undoTransform();
@@ -6097,8 +6613,12 @@  discard block
 block discarded – undo
6097 6613
             $this->parsingCss->fontSet();
6098 6614
             $this->_loadMargin();
6099 6615
 
6100
-            if ($block) $this->_tag_open_BR(array());
6101
-            if ($this->_debugActif) $this->_DEBUG_add('DRAW', false);
6616
+            if ($block) {
6617
+            	$this->_tag_open_BR(array());
6618
+            }
6619
+            if ($this->_debugActif) {
6620
+            	$this->_DEBUG_add('DRAW', false);
6621
+            }
6102 6622
 
6103 6623
             $this->_isInDraw = null;
6104 6624
 
@@ -6114,7 +6634,9 @@  discard block
 block discarded – undo
6114 6634
          */
6115 6635
         protected function _tag_open_LINE($param)
6116 6636
         {
6117
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'LINE');
6637
+            if (!$this->_isInDraw) {
6638
+            	throw new HTML2PDF_exception(8, 'LINE');
6639
+            }
6118 6640
 
6119 6641
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6120 6642
             $this->parsingCss->save();
@@ -6141,7 +6663,9 @@  discard block
 block discarded – undo
6141 6663
          */
6142 6664
         protected function _tag_open_RECT($param)
6143 6665
         {
6144
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'RECT');
6666
+            if (!$this->_isInDraw) {
6667
+            	throw new HTML2PDF_exception(8, 'RECT');
6668
+            }
6145 6669
 
6146 6670
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6147 6671
             $this->parsingCss->save();
@@ -6168,7 +6692,9 @@  discard block
 block discarded – undo
6168 6692
          */
6169 6693
         protected function _tag_open_CIRCLE($param)
6170 6694
         {
6171
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'CIRCLE');
6695
+            if (!$this->_isInDraw) {
6696
+            	throw new HTML2PDF_exception(8, 'CIRCLE');
6697
+            }
6172 6698
 
6173 6699
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6174 6700
             $this->parsingCss->save();
@@ -6193,7 +6719,9 @@  discard block
 block discarded – undo
6193 6719
          */
6194 6720
         protected function _tag_open_ELLIPSE($param)
6195 6721
         {
6196
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'ELLIPSE');
6722
+            if (!$this->_isInDraw) {
6723
+            	throw new HTML2PDF_exception(8, 'ELLIPSE');
6724
+            }
6197 6725
 
6198 6726
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6199 6727
             $this->parsingCss->save();
@@ -6220,7 +6748,9 @@  discard block
 block discarded – undo
6220 6748
          */
6221 6749
         protected function _tag_open_POLYLINE($param)
6222 6750
         {
6223
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'POLYGON');
6751
+            if (!$this->_isInDraw) {
6752
+            	throw new HTML2PDF_exception(8, 'POLYGON');
6753
+            }
6224 6754
 
6225 6755
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6226 6756
             $this->parsingCss->save();
@@ -6236,7 +6766,9 @@  discard block
 block discarded – undo
6236 6766
                 $path = explode(' ', $path);
6237 6767
                 foreach ($path as $k => $v) {
6238 6768
                     $path[$k] = trim($v);
6239
-                    if ($path[$k]==='') unset($path[$k]);
6769
+                    if ($path[$k]==='') {
6770
+                    	unset($path[$k]);
6771
+                    }
6240 6772
                 }
6241 6773
                 $path = array_values($path);
6242 6774
 
@@ -6266,7 +6798,9 @@  discard block
 block discarded – undo
6266 6798
          */
6267 6799
         protected function _tag_open_POLYGON($param)
6268 6800
         {
6269
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'POLYGON');
6801
+            if (!$this->_isInDraw) {
6802
+            	throw new HTML2PDF_exception(8, 'POLYGON');
6803
+            }
6270 6804
 
6271 6805
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6272 6806
             $this->parsingCss->save();
@@ -6282,7 +6816,9 @@  discard block
 block discarded – undo
6282 6816
                 $path = explode(' ', $path);
6283 6817
                 foreach ($path as $k => $v) {
6284 6818
                     $path[$k] = trim($v);
6285
-                    if ($path[$k]==='') unset($path[$k]);
6819
+                    if ($path[$k]==='') {
6820
+                    	unset($path[$k]);
6821
+                    }
6286 6822
                 }
6287 6823
                 $path = array_values($path);
6288 6824
 
@@ -6313,7 +6849,9 @@  discard block
 block discarded – undo
6313 6849
          */
6314 6850
         protected function _tag_open_PATH($param)
6315 6851
         {
6316
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'PATH');
6852
+            if (!$this->_isInDraw) {
6853
+            	throw new HTML2PDF_exception(8, 'PATH');
6854
+            }
6317 6855
 
6318 6856
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6319 6857
             $this->parsingCss->save();
@@ -6333,7 +6871,9 @@  discard block
 block discarded – undo
6333 6871
                 $path = explode(' ', $path);
6334 6872
                 foreach ($path as $k => $v) {
6335 6873
                     $path[$k] = trim($v);
6336
-                    if ($path[$k]==='') unset($path[$k]);
6874
+                    if ($path[$k]==='') {
6875
+                    	unset($path[$k]);
6876
+                    }
6337 6877
                 }
6338 6878
                 $path = array_values($path);
6339 6879
 
@@ -6442,7 +6982,9 @@  discard block
 block discarded – undo
6442 6982
          */
6443 6983
         protected function _tag_open_G($param)
6444 6984
         {
6445
-            if (!$this->_isInDraw) throw new HTML2PDF_exception(8, 'G');
6985
+            if (!$this->_isInDraw) {
6986
+            	throw new HTML2PDF_exception(8, 'G');
6987
+            }
6446 6988
 
6447 6989
             $this->pdf->doTransform(isset($param['transform']) ? $this->_prepareTransform($param['transform']) : null);
6448 6990
             $this->parsingCss->save();
Please login to merge, or discard this patch.
includes/librairies/permissions.class.php 3 patches
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -23,10 +23,10 @@  discard block
 block discarded – undo
23 23
 class wpshop_permissions {
24 24
 
25 25
 	/**
26
-	*	Define the different permission for the plugin. Define an array containing the permission defined with a sub-array
27
-	*
28
-	*	@return array $permission An array with the permission list for the plugin
29
-	*/
26
+	 *	Define the different permission for the plugin. Define an array containing the permission defined with a sub-array
27
+	 *
28
+	 *	@return array $permission An array with the permission list for the plugin
29
+	 */
30 30
 	function permission_list() {
31 31
 		$permission = array();
32 32
 
@@ -98,9 +98,9 @@  discard block
 block discarded – undo
98 98
 	}
99 99
 
100 100
 	/**
101
-	*	Set the different permission for the administrator role. Add all existing permission for this role.
102
-	*	@see wpshop_permissions::permission_list()
103
-	*/
101
+	 *	Set the different permission for the administrator role. Add all existing permission for this role.
102
+	 *	@see wpshop_permissions::permission_list()
103
+	 */
104 104
 	function set_administrator_role_permission() {
105 105
 		$adminRole 	= get_role('administrator');
106 106
 		$permissionList = wpshop_permissions::permission_list();
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -102,10 +102,10 @@  discard block
 block discarded – undo
102 102
 	*	@see wpshop_permissions::permission_list()
103 103
 	*/
104 104
 	function set_administrator_role_permission() {
105
-		$adminRole 	= get_role('administrator');
105
+		$adminRole = get_role('administrator');
106 106
 		$permissionList = wpshop_permissions::permission_list();
107 107
 		foreach ($permissionList as $permissionName => $permissionDef) {
108
-			if ( ($adminRole != null) && !$adminRole->has_cap($permissionName) ) {
108
+			if (($adminRole != null) && !$adminRole->has_cap($permissionName)) {
109 109
 				$adminRole->add_cap($permissionName);
110 110
 			}
111 111
 		}
@@ -115,7 +115,7 @@  discard block
 block discarded – undo
115 115
 	function wpshop_init_roles() {
116 116
 		global $wp_roles;
117 117
 
118
-		if (class_exists('WP_Roles')) if ( ! isset( $wp_roles ) ) $wp_roles = new WP_Roles();
118
+		if (class_exists('WP_Roles')) if (!isset($wp_roles)) $wp_roles = new WP_Roles();
119 119
 
120 120
 		if (is_object($wp_roles)) :
121 121
 
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
@@ -115,7 +117,9 @@  discard block
 block discarded – undo
115 117
 	function wpshop_init_roles() {
116 118
 		global $wp_roles;
117 119
 
118
-		if (class_exists('WP_Roles')) if ( ! isset( $wp_roles ) ) $wp_roles = new WP_Roles();
120
+		if (class_exists('WP_Roles')) {
121
+			if ( ! isset( $wp_roles ) ) $wp_roles = new WP_Roles();
122
+		}
119 123
 
120 124
 		if (is_object($wp_roles)) :
121 125
 
Please login to merge, or discard this patch.
includes/librairies/options/options_shipping.class.php 3 patches
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -22,8 +22,8 @@
 block discarded – undo
22 22
 */
23 23
 class wpshop_shipping_options {
24 24
 	/**
25
-	*
26
-	*/
25
+	 *
26
+	 */
27 27
 	function declare_options(){
28 28
 
29 29
 		add_settings_section('wpshop_shipping_rules', '<span class="dashicons dashicons-admin-generic"></span>'.__('Shipping general configuration', 'wpshop'), array('wpshop_shipping_options', 'plugin_section_text'), 'wpshop_shipping_rules');
Please login to merge, or discard this patch.
Spacing   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -24,9 +24,9 @@  discard block
 block discarded – undo
24 24
 	/**
25 25
 	*
26 26
 	*/
27
-	function declare_options(){
27
+	function declare_options() {
28 28
 
29
-		add_settings_section('wpshop_shipping_rules', '<span class="dashicons dashicons-admin-generic"></span>'.__('Shipping general configuration', 'wpshop'), array('wpshop_shipping_options', 'plugin_section_text'), 'wpshop_shipping_rules');
29
+		add_settings_section('wpshop_shipping_rules', '<span class="dashicons dashicons-admin-generic"></span>' . __('Shipping general configuration', 'wpshop'), array('wpshop_shipping_options', 'plugin_section_text'), 'wpshop_shipping_rules');
30 30
 		register_setting('wpshop_options', 'wpshop_shipping_address_choice', array('wpshop_shipping_options', 'wpshop_shipping_address_validator'));
31 31
 		add_settings_field('wpshop_shipping_address_choice', __('Shipping address choice', 'wpshop'), array('wpshop_shipping_options', 'wpshop_shipping_address_field'), 'wpshop_shipping_rules', 'wpshop_shipping_rules');
32 32
 
@@ -46,9 +46,9 @@  discard block
 block discarded – undo
46 46
 		echo '';
47 47
 	}
48 48
 
49
-	public static function wpshop_shipping_address_validator($input){
50
-		$shipping_option = get_option( 'wpshop_shipping_address_choice' );
51
-		if( !empty($shipping_option) && !empty($shipping_option['display_model']) ) {
49
+	public static function wpshop_shipping_address_validator($input) {
50
+		$shipping_option = get_option('wpshop_shipping_address_choice');
51
+		if (!empty($shipping_option) && !empty($shipping_option['display_model'])) {
52 52
 			$input['display_model'] = $shipping_option['display_model'];
53 53
 		}
54 54
 
@@ -58,10 +58,10 @@  discard block
 block discarded – undo
58 58
 	public static function wpshop_shipping_address_field() {
59 59
 		global $wpdb;
60 60
 		$choice = get_option('wpshop_shipping_address_choice', unserialize(WPSHOP_SHOP_CUSTOM_SHIPPING));
61
-		$query = $wpdb->prepare('SELECT ID FROM ' .$wpdb->posts. ' WHERE post_name = "%s" AND post_type = "%s"', WPSHOP_NEWTYPE_IDENTIFIER_ADDRESS, WPSHOP_NEWTYPE_IDENTIFIER_ENTITIES);
61
+		$query = $wpdb->prepare('SELECT ID FROM ' . $wpdb->posts . ' WHERE post_name = "%s" AND post_type = "%s"', WPSHOP_NEWTYPE_IDENTIFIER_ADDRESS, WPSHOP_NEWTYPE_IDENTIFIER_ENTITIES);
62 62
 		$entity_id = $wpdb->get_var($query);
63 63
 
64
-		$query = $wpdb->prepare('SELECT * FROM ' .WPSHOP_DBT_ATTRIBUTE_SET. ' WHERE entity_id = %d', $entity_id);
64
+		$query = $wpdb->prepare('SELECT * FROM ' . WPSHOP_DBT_ATTRIBUTE_SET . ' WHERE entity_id = %d', $entity_id);
65 65
 		$content = $wpdb->get_results($query);
66 66
 
67 67
 		$input_def['name'] = 'wpshop_shipping_address_choice[choice]';
@@ -71,39 +71,39 @@  discard block
 block discarded – undo
71 71
 		$input_def['value'] = $choice['choice'];
72 72
 
73 73
 		$active = !empty($choice['activate']) ? $choice['activate'] : false;
74
-		$display_model = ( !empty($choice['display_model']) ) ? addslashes( serialize( $choice['display_model'] ) ) : '';
74
+		$display_model = (!empty($choice['display_model'])) ? addslashes(serialize($choice['display_model'])) : '';
75 75
 
76
-		echo '<input type="checkbox" name="wpshop_shipping_address_choice[activate]" id="wpshop_shipping_address_choice[activate]" '.($active ? 'checked="checked"' :null).'/> <label for="wpshop_shipping_address_choice[activate]">'.__('Activate shipping address','wpshop').'</label><br/>
77
-		<div>' .wpshop_form::check_input_type($input_def). '</div>';
76
+		echo '<input type="checkbox" name="wpshop_shipping_address_choice[activate]" id="wpshop_shipping_address_choice[activate]" ' . ($active ? 'checked="checked"' : null) . '/> <label for="wpshop_shipping_address_choice[activate]">' . __('Activate shipping address', 'wpshop') . '</label><br/>
77
+		<div>' .wpshop_form::check_input_type($input_def) . '</div>';
78 78
 
79 79
 	}
80 80
 
81 81
 	public static function wpshop_shipping_cost_from_fields() {
82 82
 		$shipping_cost_from_option = get_option('wpshop_shipping_cost_from');
83
-		$output = '<input type="checkbox" id="wpshop_shipping_cost_from" name="wpshop_shipping_cost_from" ' . ( (!empty($shipping_cost_from_option)) ? 'checked="checked"' : '') . ' /> ';
84
-		$output .= '<label for="wpshop_shipping_cost_from">' . __('Display "From" behind Shipping cost in cart while shipping address is undefined', 'wpshop'). '</label>';
83
+		$output = '<input type="checkbox" id="wpshop_shipping_cost_from" name="wpshop_shipping_cost_from" ' . ((!empty($shipping_cost_from_option)) ? 'checked="checked"' : '') . ' /> ';
84
+		$output .= '<label for="wpshop_shipping_cost_from">' . __('Display "From" behind Shipping cost in cart while shipping address is undefined', 'wpshop') . '</label>';
85 85
 		echo $output;
86 86
 	}
87 87
 
88
-	public static function wpshop_shipping_cost_from_validator( $input ) {
88
+	public static function wpshop_shipping_cost_from_validator($input) {
89 89
 
90 90
 
91 91
 		return $input;
92 92
 	}
93 93
 
94
-	public static function wpshop_limit_country_list_validator( $input ) {
94
+	public static function wpshop_limit_country_list_validator($input) {
95 95
 		return $input;
96 96
 	}
97 97
 
98 98
 	public static function wpshop_limit_country_list_fields() {
99 99
 		$output = '';
100
-		$limit_countries_list = get_option( 'wpshop_limit_country_list' );
100
+		$limit_countries_list = get_option('wpshop_limit_country_list');
101 101
 		$countries = unserialize(WPSHOP_COUNTRY_LIST);
102
-		if ( !empty ($countries) ) {
102
+		if (!empty ($countries)) {
103 103
 			$output .= '<select name="wpshop_limit_country_list[]" class="chosen_select" multiple data-placeholder="Choose a Country">';
104
-			foreach( $countries as $key => $country ) {
105
-				$is_selected = ( !empty($limit_countries_list) && is_array($limit_countries_list) && in_array($key, $limit_countries_list) ) ? true : false;
106
-				$output .= '<option value="' .$key. '" ' . ( ($is_selected) ? 'selected="selected"' : '' ) . '>' .$country. '</option>';
104
+			foreach ($countries as $key => $country) {
105
+				$is_selected = (!empty($limit_countries_list) && is_array($limit_countries_list) && in_array($key, $limit_countries_list)) ? true : false;
106
+				$output .= '<option value="' . $key . '" ' . (($is_selected) ? 'selected="selected"' : '') . '>' . $country . '</option>';
107 107
 			}
108 108
 			$output .= '</select>';
109 109
 		}
@@ -111,18 +111,18 @@  discard block
 block discarded – undo
111 111
 	}
112 112
 
113 113
 	public static function wpshop_country_default_choice_fields() {
114
-		$default_country_choice = get_option( 'wpshop_country_default_choice' );
115
-		$output  = '<select name="wpshop_country_default_choice">';
114
+		$default_country_choice = get_option('wpshop_country_default_choice');
115
+		$output = '<select name="wpshop_country_default_choice">';
116 116
 		$countries = unserialize(WPSHOP_COUNTRY_LIST);
117
-		foreach( $countries as $key => $country ) {
118
-			$is_selected = ( !empty($default_country_choice) &&  $key == $default_country_choice ) ? true : false;
119
-			$output .= '<option value="' .$key. '" ' . ( ($is_selected) ? 'selected="selected"' : '' ) . '>' .$country. '</option>';
117
+		foreach ($countries as $key => $country) {
118
+			$is_selected = (!empty($default_country_choice) && $key == $default_country_choice) ? true : false;
119
+			$output .= '<option value="' . $key . '" ' . (($is_selected) ? 'selected="selected"' : '') . '>' . $country . '</option>';
120 120
 		}
121 121
 		$output .= '</select>';
122 122
 		echo $output;
123 123
 	}
124 124
 	
125
-	public static function wpshop_country_default_choice_validator( $input ) {
125
+	public static function wpshop_country_default_choice_validator($input) {
126 126
 		return $input;
127 127
 	}
128 128
 }
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
Please login to merge, or discard this patch.
includes/librairies/options/options_company.class.php 3 patches
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -23,8 +23,8 @@
 block discarded – undo
23 23
 class wpshop_company_options
24 24
 {
25 25
 	/**
26
-	*
27
-	*/
26
+	 *
27
+	 */
28 28
 	public static function declare_options(){
29 29
 		add_settings_section('wpshop_company_info', '<span class="dashicons dashicons-admin-home"></span>'.__('Company info', 'wpshop'), array('wpshop_company_options', 'plugin_section_text'), 'wpshop_company_info');
30 30
 			register_setting('wpshop_options', 'wpshop_company_info', array('wpshop_company_options', 'wpshop_options_validate_company_info'));
Please login to merge, or discard this patch.
Spacing   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -25,8 +25,8 @@  discard block
 block discarded – undo
25 25
 	/**
26 26
 	*
27 27
 	*/
28
-	public static function declare_options(){
29
-		add_settings_section('wpshop_company_info', '<span class="dashicons dashicons-admin-home"></span>'.__('Company info', 'wpshop'), array('wpshop_company_options', 'plugin_section_text'), 'wpshop_company_info');
28
+	public static function declare_options() {
29
+		add_settings_section('wpshop_company_info', '<span class="dashicons dashicons-admin-home"></span>' . __('Company info', 'wpshop'), array('wpshop_company_options', 'plugin_section_text'), 'wpshop_company_info');
30 30
 			register_setting('wpshop_options', 'wpshop_company_info', array('wpshop_company_options', 'wpshop_options_validate_company_info'));
31 31
 			add_settings_field('wpshop_company_legal_statut', __('Legal status', 'wpshop'), array('wpshop_company_options', 'wpshop_company_legal_statut_field'), 'wpshop_company_info', 'wpshop_company_info');
32 32
 			add_settings_field('wpshop_company_capital', __('Capital', 'wpshop'), array('wpshop_company_options', 'wpshop_company_capital_field'), 'wpshop_company_info', 'wpshop_company_info');
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 	}
45 45
 
46 46
 	/**/
47
-	public static function plugin_section_text(){
47
+	public static function plugin_section_text() {
48 48
 
49 49
 	}
50 50
 
@@ -55,76 +55,76 @@  discard block
 block discarded – undo
55 55
 		$options = get_option('wpshop_company_info');
56 56
 
57 57
 		$legal_status = self::get_legal_status();
58
-		$legal_status = apply_filters( 'wps_legal_status_extender', $legal_status );
58
+		$legal_status = apply_filters('wps_legal_status_extender', $legal_status);
59 59
 
60 60
 		$select_legal_statut = '<select name="wpshop_company_info[company_legal_statut]">';
61
-		foreach($legal_status as $key=>$value) {
62
-			$selected = $options['company_legal_statut']==$key ? ' selected="selected"' : null;
63
-			$select_legal_statut .= '<option value="'.$key.'"'.$selected.'>'.__($value,'wpshop').'</option>';
61
+		foreach ($legal_status as $key=>$value) {
62
+			$selected = $options['company_legal_statut'] == $key ? ' selected="selected"' : null;
63
+			$select_legal_statut .= '<option value="' . $key . '"' . $selected . '>' . __($value, 'wpshop') . '</option>';
64 64
 		}
65 65
 		$select_legal_statut .= '</select>';
66
-		$select_legal_statut .= ' <a href="#" title="'.__('Legal status will appear in invoices','wpshop').'" class="wpshop_infobulle_marker">?</a>';
66
+		$select_legal_statut .= ' <a href="#" title="' . __('Legal status will appear in invoices', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
67 67
 		echo $select_legal_statut;
68 68
 	}
69 69
 	public static function wpshop_company_capital_field() {
70 70
 		$options = get_option('wpshop_company_info');
71
-		echo '<input name="wpshop_company_info[company_capital]" type="text" value="'.$options['company_capital'].'" />
72
-		<a href="#" title="'.__('Capital of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
71
+		echo '<input name="wpshop_company_info[company_capital]" type="text" value="' . $options['company_capital'] . '" />
72
+		<a href="#" title="'.__('Capital of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
73 73
 	}
74 74
 	public static function wpshop_company_name_field() {
75 75
 		$options = get_option('wpshop_company_info');
76
-		echo '<input name="wpshop_company_info[company_name]" type="text" value="'.$options['company_name'].'" />
77
-		<a href="#" title="'.__('Name of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
76
+		echo '<input name="wpshop_company_info[company_name]" type="text" value="' . $options['company_name'] . '" />
77
+		<a href="#" title="'.__('Name of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
78 78
 	}
79 79
 	public static function wpshop_company_street_field() {
80 80
 		$options = get_option('wpshop_company_info');
81
-		echo '<input name="wpshop_company_info[company_street]" type="text" value="'.$options['company_street'].'" />
82
-		<a href="#" title="'.__('Street of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
81
+		echo '<input name="wpshop_company_info[company_street]" type="text" value="' . $options['company_street'] . '" />
82
+		<a href="#" title="'.__('Street of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
83 83
 	}
84 84
 	public static function wpshop_company_postcode_field() {
85 85
 		$options = get_option('wpshop_company_info');
86
-		echo '<input name="wpshop_company_info[company_postcode]" type="text" value="'.$options['company_postcode'].'" />
87
-		<a href="#" title="'.__('Postcode of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
86
+		echo '<input name="wpshop_company_info[company_postcode]" type="text" value="' . $options['company_postcode'] . '" />
87
+		<a href="#" title="'.__('Postcode of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
88 88
 	}
89 89
 	public static function wpshop_company_city_field() {
90 90
 		$options = get_option('wpshop_company_info');
91
-		echo '<input name="wpshop_company_info[company_city]" type="text" value="'.$options['company_city'].'" />
92
-		<a href="#" title="'.__('The city in which your company is based','wpshop').'" class="wpshop_infobulle_marker">?</a>';
91
+		echo '<input name="wpshop_company_info[company_city]" type="text" value="' . $options['company_city'] . '" />
92
+		<a href="#" title="'.__('The city in which your company is based', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
93 93
 	}
94 94
 	public static function wpshop_company_country_field() {
95 95
 		$options = get_option('wpshop_company_info');
96
-		echo '<input name="wpshop_company_info[company_country]" type="text" value="'.$options['company_country'].'" />
97
-		<a href="#" title="'.__('Country of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
96
+		echo '<input name="wpshop_company_info[company_country]" type="text" value="' . $options['company_country'] . '" />
97
+		<a href="#" title="'.__('Country of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
98 98
 	}
99 99
 	public static function wpshop_company_tva_intra_field() {
100 100
 		$options = get_option('wpshop_company_info');
101
-		echo '<input name="wpshop_company_info[company_tva_intra]" type="text" value="'.$options['company_tva_intra'].'" />
102
-		<a href="#" title="'.__('Intracommunity VAT of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
101
+		echo '<input name="wpshop_company_info[company_tva_intra]" type="text" value="' . $options['company_tva_intra'] . '" />
102
+		<a href="#" title="'.__('Intracommunity VAT of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
103 103
 	}
104 104
 	public static function wpshop_company_phone_field() {
105 105
 		$options = get_option('wpshop_company_info');
106
-		echo '<input name="wpshop_company_info[company_phone]" type="text" value="'.$options['company_phone'].'" />
107
-		<a href="#" title="'.__('Phone number of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
106
+		echo '<input name="wpshop_company_info[company_phone]" type="text" value="' . $options['company_phone'] . '" />
107
+		<a href="#" title="'.__('Phone number of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
108 108
 	}
109 109
 	public static function wpshop_company_rcs_field() {
110 110
 		$options = get_option('wpshop_company_info');
111
-		echo '<input name="wpshop_company_info[company_rcs]" type="text" value="'.$options['company_rcs'].'" />
112
-		<a href="#" title="'.__('RCS of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
111
+		echo '<input name="wpshop_company_info[company_rcs]" type="text" value="' . $options['company_rcs'] . '" />
112
+		<a href="#" title="'.__('RCS of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
113 113
 	}
114 114
 	public static function wpshop_company_siret_field() {
115 115
 		$options = get_option('wpshop_company_info');
116
-		echo '<input name="wpshop_company_info[company_siret]" type="text" value="'.$options['company_siret'].'" />
117
-		<a href="#" title="'.__('SIRET of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
116
+		echo '<input name="wpshop_company_info[company_siret]" type="text" value="' . $options['company_siret'] . '" />
117
+		<a href="#" title="'.__('SIRET of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
118 118
 	}
119 119
 	public static function wpshop_company_siren_field() {
120 120
 		$options = get_option('wpshop_company_info');
121
-		echo '<input name="wpshop_company_info[company_siren]" type="text" value="'.$options['company_siren'].'" />
122
-		<a href="#" title="'.__('SIREN of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
121
+		echo '<input name="wpshop_company_info[company_siren]" type="text" value="' . $options['company_siren'] . '" />
122
+		<a href="#" title="'.__('SIREN of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
123 123
 	}
124 124
 	public static function wpshop_company_fax_field() {
125 125
 		$options = get_option('wpshop_company_info');
126
-		echo '<input name="wpshop_company_info[company_fax]" type="text" value="'.$options['company_fax'].'" />
127
-		<a href="#" title="'.__('Fax number of your company','wpshop').'" class="wpshop_infobulle_marker">?</a>';
126
+		echo '<input name="wpshop_company_info[company_fax]" type="text" value="' . $options['company_fax'] . '" />
127
+		<a href="#" title="'.__('Fax number of your company', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
128 128
 	}
129 129
 
130 130
 	/* Processing */
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
 				'sa' => 'SA',
148 148
 				'sas' => 'SAS',
149 149
 				'sasu' => 'SASU',
150
-				'association' => __( 'Assocation', 'wpshop'),
150
+				'association' => __('Assocation', 'wpshop'),
151 151
 				'sci' => 'SCI',
152 152
 				'scp' => 'SCP',
153 153
 				'scm' => 'SCM',
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
Please login to merge, or discard this patch.
includes/librairies/options/options.class.php 3 patches
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -162,8 +162,8 @@
 block discarded – undo
162 162
 
163 163
 
164 164
 	/**
165
-	*	Declare the different options for the plugin
166
-	*/
165
+	 *	Declare the different options for the plugin
166
+	 */
167 167
 	public static function add_options(){
168 168
 		global $wpshop_display_option;
169 169
 
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
Please login to merge, or discard this patch.
Spacing   +66 added lines, -66 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -43,14 +43,14 @@  discard block
 block discarded – undo
43 43
 		$groups = array();
44 44
 
45 45
 		$groups['wpshop_general_option'] =
46
-			array(	'label' => __('General', 'wpshop'),
46
+			array('label' => __('General', 'wpshop'),
47 47
 					'subgroups' => array(
48 48
 						'wpshop_general_config' => array('class' => 'wpshop_admin_box_options_general'),
49 49
 						'wpshop_company_info' => array('class' => 'wpshop_admin_box_options_company'),
50 50
 					),
51 51
 			);
52 52
 		$groups['wpshop_catalog_option'] =
53
-			array(	'label' => __('Catalog', 'wpshop'),
53
+			array('label' => __('Catalog', 'wpshop'),
54 54
 					'subgroups' => array(
55 55
 						'wpshop_catalog_product_option' => array('class' => ' wpshop_admin_box_options_product'),
56 56
 						'wpshop_catalog_main_option' => array('class' => ' wpshop_admin_box_options_catalog'),
@@ -58,13 +58,13 @@  discard block
 block discarded – undo
58 58
 					),
59 59
 			);
60 60
 		$groups['wpshop_pages_option'] =
61
-			array(	'label' => __('Pages', 'wpshop'),
61
+			array('label' => __('Pages', 'wpshop'),
62 62
 					'subgroups' => array(
63 63
 						'wpshop_pages_option' => array('class' => ' wpshop_admin_box_options_pages'),
64 64
 					),
65 65
 			);
66 66
 		$groups['wpshop_display_option'] =
67
-			array(	'label' => __('Display', 'wpshop'),
67
+			array('label' => __('Display', 'wpshop'),
68 68
 					'subgroups' => array(
69 69
 						'wpshop_display_option' => array('class' => ' wpshop_admin_box_options_display'),
70 70
 						'wpshop_customize_display_option' => array('class' => ' wpshop_admin_box_options_display'),
@@ -72,32 +72,32 @@  discard block
 block discarded – undo
72 72
 					),
73 73
 			);
74 74
 		$groups['wpshop_emails_option'] =
75
-			array(	'label' => __('Emails', 'wpshop'),
75
+			array('label' => __('Emails', 'wpshop'),
76 76
 					'subgroups' => array(
77 77
 						'wpshop_emails' => array('class' => ' wpshop_admin_box_options_email'),
78 78
 						'wpshop_messages' => array('class' => ' wpshop_admin_box_options_message'),
79 79
 					),
80 80
 			);
81 81
 
82
-		$wpshop_shop_type = !empty( $_POST['wpshop_shop_type'] ) ? sanitize_text_field( $_POST['wpshop_shop_type'] ) : '';
82
+		$wpshop_shop_type = !empty($_POST['wpshop_shop_type']) ? sanitize_text_field($_POST['wpshop_shop_type']) : '';
83 83
 
84 84
 		/**	Some options are available only when sale mode is active	*/
85
-		if((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation'))) :
85
+		if ((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation'))) :
86 86
 			$groups['wpshop_cart_option'] =
87
-				array(	'label' => __('Cart', 'wpshop'),
87
+				array('label' => __('Cart', 'wpshop'),
88 88
 						'subgroups' => array(
89 89
 							'wpshop_cart_info' => array('class' => ' wpshop_admin_box_options_cart'),
90 90
 						),
91 91
 				);
92 92
 			$groups['wpshop_payments_option'] =
93
-				array(	'label' => __('Payments', 'wpshop'),
93
+				array('label' => __('Payments', 'wpshop'),
94 94
 						'subgroups' => array(
95 95
 							'wpshop_paymentMethod' => array('class' => ' wpshop_admin_box_options_payment_method'),
96 96
 							'wpshop_payment_partial_on_command' => array('class' => ' wpshop_admin_box_options_payment_partial'),
97 97
 						),
98 98
 				);
99 99
 			$groups['wpshop_shipping_option'] =
100
-				array(	'label' => __('Shipping', 'wpshop'),
100
+				array('label' => __('Shipping', 'wpshop'),
101 101
 						'subgroups' => array(
102 102
 							'wpshop_shipping_rules' => array('class' => ' wpshop_admin_box_options_shipping_rules')
103 103
 						),
@@ -105,14 +105,14 @@  discard block
 block discarded – undo
105 105
 		endif;
106 106
 
107 107
 		$groups['wpshop_addons_option'] =
108
-			array(	'label' => __('Addons', 'wpshop'),
108
+			array('label' => __('Addons', 'wpshop'),
109 109
 					'subgroups' => array(
110 110
 						'wpshop_addons_options' => array('class' => ' wpshop_admin_box_options_addons'),
111 111
 					),
112 112
 			);
113 113
 
114 114
 		$groups['wpshop_advanced_options'] =
115
-			array(	'label' => __('Advanced options', 'wpshop'),
115
+			array('label' => __('Advanced options', 'wpshop'),
116 116
 					'subgroups' => array(
117 117
 						'wpshop_extra_options' => array('class' => ' wpshop_admin_box_options_advanced'),
118 118
 					),
@@ -138,17 +138,17 @@  discard block
 block discarded – undo
138 138
 		ob_end_clean();
139 139
 		$tpl_component['ADMIN_OPTIONS_TAB_LIST'] = '';
140 140
 		$tpl_component['ADMIN_OPTIONS_TAB_CONTENT_LIST'] = '';
141
-		if ( !empty($options_list) ) {
142
-			foreach ( $options_list as $group_key => $group_content) {
141
+		if (!empty($options_list)) {
142
+			foreach ($options_list as $group_key => $group_content) {
143 143
 				$sub_tpl_component = array();
144
-				if ( !empty($group_content['subgroups']) && is_array($group_content['subgroups']) ) {
144
+				if (!empty($group_content['subgroups']) && is_array($group_content['subgroups'])) {
145 145
 					$sub_tpl_component['ADMIN_OPTIONS_GROUP_CONTENT'] = '';
146 146
 					$sub_tpl_component['ADMIN_OPTIONS_TAB_KEY'] = $group_key;
147
-					$sub_tpl_component['ADMIN_OPTIONS_TAB_LABEL'] = ( !empty($group_content['label']) ) ? $group_content['label'] : '';
147
+					$sub_tpl_component['ADMIN_OPTIONS_TAB_LABEL'] = (!empty($group_content['label'])) ? $group_content['label'] : '';
148 148
 					$tpl_component['ADMIN_OPTIONS_TAB_LIST'] .= wpshop_display::display_template_element('wpshop_admin_options_group_tab', $sub_tpl_component, array(), 'admin');
149
-					foreach ( $group_content['subgroups'] as $subgroup_key => $subgroup_def) {
149
+					foreach ($group_content['subgroups'] as $subgroup_key => $subgroup_def) {
150 150
 						ob_start();
151
-						do_settings_sections( $subgroup_key );
151
+						do_settings_sections($subgroup_key);
152 152
 						$sub_tpl_component['ADMIN_OPTIONS_SUBGROUP_CONTENT'] = ob_get_contents();
153 153
 						ob_end_clean();
154 154
 						$sub_tpl_component['ADMIN_OPTIONS_SUBGROUP_CLASS'] = $subgroup_def['class'];
@@ -166,21 +166,21 @@  discard block
 block discarded – undo
166 166
 	/**
167 167
 	*	Declare the different options for the plugin
168 168
 	*/
169
-	public static function add_options(){
169
+	public static function add_options() {
170 170
 		global $wpshop_display_option;
171 171
 
172 172
 
173 173
 		/*Catalog - Main	*/
174 174
 		register_setting('wpshop_options', 'wpshop_catalog_main_option', array('wpshop_options', 'wpshop_options_validate_catalog_main_option'));
175
-			add_settings_section('wpshop_catalog_main_section', '<span class="dashicons dashicons-category"></span>'.__('Catalog', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_catalog_main_option');
175
+			add_settings_section('wpshop_catalog_main_section', '<span class="dashicons dashicons-category"></span>' . __('Catalog', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_catalog_main_option');
176 176
 				add_settings_field('wpshop_catalog_empty_price_behaviour', __('Empty price', 'wpshop'), array('wpshop_options', 'wpshop_catalog_empty_price_behaviour'), 'wpshop_catalog_main_option', 'wpshop_catalog_main_section');
177 177
 		/* Catalog - Product */
178 178
 		register_setting('wpshop_options', 'wpshop_catalog_product_option', array('wpshop_options', 'wpshop_options_validate_catalog_product_option'));
179
-			add_settings_section('wpshop_catalog_product_section', '<span class="dashicons dashicons-archive"></span>'.__('Products', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_catalog_product_option');
179
+			add_settings_section('wpshop_catalog_product_section', '<span class="dashicons dashicons-archive"></span>' . __('Products', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_catalog_product_option');
180 180
 				add_settings_field('wpshop_catalog_product_slug', __('Products common rewrite param', 'wpshop'), array('wpshop_options', 'wpshop_catalog_product_slug_field'), 'wpshop_catalog_product_option', 'wpshop_catalog_product_section');
181 181
 		/* Catalog - Categories */
182 182
 		register_setting('wpshop_options', 'wpshop_catalog_categories_option', array('wpshop_options', 'wpshop_options_validate_catalog_categories_option'));
183
-		add_settings_section('wpshop_catalog_categories_section', '<span class="dashicons dashicons-portfolio"></span>'.__('Categories', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_catalog_categories_option');
183
+		add_settings_section('wpshop_catalog_categories_section', '<span class="dashicons dashicons-portfolio"></span>' . __('Categories', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_catalog_categories_option');
184 184
 		add_settings_field('wpshop_catalog_categories_slug', __('Categories common rewrite param', 'wpshop'), array('wpshop_options', 'wpshop_catalog_categories_slug_field'), 'wpshop_catalog_categories_option', 'wpshop_catalog_categories_section');
185 185
 		add_settings_field('wpshop_catalog_no_category_slug', __('Default category slug for unassociated product', 'wpshop'), array('wpshop_options', 'wpshop_catalog_no_category_slug_field'), 'wpshop_catalog_categories_option', 'wpshop_catalog_categories_section');
186 186
 
@@ -191,16 +191,16 @@  discard block
 block discarded – undo
191 191
 		wpshop_company_options::declare_options();
192 192
 
193 193
 		/* Payments */
194
-		$wpshop_shop_type = !empty( $_POST['wpshop_shop_type'] ) ? sanitize_text_field( $_POST['wpshop_shop_type'] ) : '';
195
-		$old_wpshop_shop_type = !empty( $_POST['old_wpshop_shop_type'] ) ? sanitize_text_field( $_POST['old_wpshop_shop_type'] ) : '';
196
-		if((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation')) && !isset($old_wpshop_shop_type) || (isset($old_wpshop_shop_type) && ($old_wpshop_shop_type != 'presentation'))){
194
+		$wpshop_shop_type = !empty($_POST['wpshop_shop_type']) ? sanitize_text_field($_POST['wpshop_shop_type']) : '';
195
+		$old_wpshop_shop_type = !empty($_POST['old_wpshop_shop_type']) ? sanitize_text_field($_POST['old_wpshop_shop_type']) : '';
196
+		if ((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation')) && !isset($old_wpshop_shop_type) || (isset($old_wpshop_shop_type) && ($old_wpshop_shop_type != 'presentation'))) {
197 197
 			wpshop_payment_options::declare_options();
198 198
 		}
199 199
 
200 200
 		/* Cart */
201
-		if((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation')) && !isset($old_wpshop_shop_type) || (isset($old_wpshop_shop_type) && ($old_wpshop_shop_type != 'presentation'))){
201
+		if ((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation')) && !isset($old_wpshop_shop_type) || (isset($old_wpshop_shop_type) && ($old_wpshop_shop_type != 'presentation'))) {
202 202
 			register_setting('wpshop_options', 'wpshop_cart_option', array('wpshop_options', 'wpshop_options_validate_cart'));
203
-			add_settings_section('wpshop_cart_info', '<span class="dashicons dashicons-cart"></span>'.__('Cart', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_cart_info');
203
+			add_settings_section('wpshop_cart_info', '<span class="dashicons dashicons-cart"></span>' . __('Cart', 'wpshop'), array('wpshop_options', 'plugin_section_text'), 'wpshop_cart_info');
204 204
 			add_settings_field('wpshop_cart_product_added_behaviour', __('Action when produt is added succesfully into cart', 'wpshop'), array('wpshop_options', 'wpshop_cart_product_added_behaviour_field'), 'wpshop_cart_info', 'wpshop_cart_info');
205 205
 			add_settings_field('wpshop_cart_product_added_to_quotation_behaviour', __('Action when produt is added succesfully into a quotation', 'wpshop'), array('wpshop_options', 'wpshop_cart_product_added_to_quotation_behaviour_field'), 'wpshop_cart_info', 'wpshop_cart_info');
206 206
 			add_settings_field('wpshop_cart_total_item_nb', __('Only a limited number of products in cart', 'wpshop'), array('wpshop_options', 'wpshop_cart_total_item_nb_field'), 'wpshop_cart_info', 'wpshop_cart_info');
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
 		$wpshop_advanced_settings->declare_options();
228 228
 
229 229
 		/* Shipping section */
230
-		if((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation')) && !isset($old_wpshop_shop_type) || (isset($old_wpshop_shop_type) && ($old_wpshop_shop_type != 'presentation'))){
230
+		if ((WPSHOP_DEFINED_SHOP_TYPE == 'sale') && !isset($wpshop_shop_type) || (isset($wpshop_shop_type) && ($wpshop_shop_type != 'presentation')) && !isset($old_wpshop_shop_type) || (isset($old_wpshop_shop_type) && ($old_wpshop_shop_type != 'presentation'))) {
231 231
 		$wpshop_shipping_options = new wpshop_shipping_options();
232 232
 			$wpshop_shipping_options->declare_options();
233 233
 		}
@@ -245,7 +245,7 @@  discard block
 block discarded – undo
245 245
 		$options = get_option('wpshop_catalog_main_option');
246 246
 		echo '<input type="checkbox"' . (!empty($options['wpshop_catalog_empty_price_behaviour']) ? ' checked="checked" ' : '') . ' value="yes" name="wpshop_catalog_main_option[wpshop_catalog_empty_price_behaviour]" id="wpshop_catalog_empty_price_behaviour" /> <label for="wpshop_catalog_empty_price_behaviour" >' . __('Hide price and add to cart button when price is empty or equal to 0', 'wpshop') . '</label>';
247 247
 	}
248
-	public static function wpshop_catalog_product_slug_field(){
248
+	public static function wpshop_catalog_product_slug_field() {
249 249
 		$options = get_option('wpshop_catalog_product_option');
250 250
 		$catalog_cat_options = get_option('wpshop_catalog_categories_option');
251 251
 		echo '<input type="checkbox"' . (!empty($options['wpshop_catalog_product_slug_with_category']) ? ' checked="checked" ' : '') . ' value="yes" name="wpshop_catalog_product_option[wpshop_catalog_product_slug_with_category]" id="wpshop_catalog_product_slug_with_category" /> <label for="wpshop_catalog_product_slug_with_category">' . __('Use product category in url', 'wpshop') . '</label><br/>
@@ -253,24 +253,24 @@  discard block
 block discarded – undo
253 253
 		<div class="alignleft wpshop_options_catalog_product_rewrite" ><input type="text" name="wpshop_catalog_product_option[wpshop_catalog_product_slug]" value="' . (!empty($options['wpshop_catalog_product_slug']) ? $options['wpshop_catalog_product_slug'] : WPSHOP_CATALOG_PRODUCT_SLUG) . '" /></div>
254 254
 		<div class="alignleft wpshop_options_catalog_product_rewrite" ><span class="wpshop_catalog_product_slug_category' . (empty($options['wpshop_catalog_product_slug_with_category']) ? ' disable' : '') . '" >/' . (!empty($catalog_cat_options['wpshop_catalog_categories_slug']) ? $catalog_cat_options['wpshop_catalog_categories_slug'] : WPSHOP_CATALOG_CATEGORIES_SLUG) . '</span></div>
255 255
 		<div class="alignleft wpshop_options_catalog_product_rewrite" >/' . __('Your_product_slug', 'wpshop') . '</div>
256
-		<div class="alignleft" ><a href="#" title="'.__('This slug will be used in url to describe products page','wpshop').'" class="wpshop_infobulle_marker">?</a></div><br /><br />
257
-		<div><span style="color: red;" class="dashicons dashicons-megaphone"></span> '.__('"/" permit to disable slug of products (<b>but don\'t work with rewrites plugins</b>)','wpshop').'</div>';
256
+		<div class="alignleft" ><a href="#" title="'.__('This slug will be used in url to describe products page', 'wpshop') . '" class="wpshop_infobulle_marker">?</a></div><br /><br />
257
+		<div><span style="color: red;" class="dashicons dashicons-megaphone"></span> '.__('"/" permit to disable slug of products (<b>but don\'t work with rewrites plugins</b>)', 'wpshop') . '</div>';
258 258
 	}
259
-	public static function wpshop_catalog_categories_slug_field(){
259
+	public static function wpshop_catalog_categories_slug_field() {
260 260
 		$options = get_option('wpshop_catalog_categories_option');
261 261
 		echo '<input type="text" name="wpshop_catalog_categories_option[wpshop_catalog_categories_slug]" value="' . (!empty($options['wpshop_catalog_categories_slug']) ? $options['wpshop_catalog_categories_slug'] : WPSHOP_CATALOG_CATEGORIES_SLUG) . '" />
262
-		<a href="#" title="'.__('This slug will be used in url to describe catagories page','wpshop').'" class="wpshop_infobulle_marker">?</a>';
262
+		<a href="#" title="'.__('This slug will be used in url to describe catagories page', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
263 263
 	}
264
-	public static function wpshop_catalog_no_category_slug_field(){
264
+	public static function wpshop_catalog_no_category_slug_field() {
265 265
 		$options = get_option('wpshop_catalog_categories_option');
266 266
 		echo '<input type="text" name="wpshop_catalog_categories_option[wpshop_catalog_no_category_slug]" value="' . (!empty($options['wpshop_catalog_no_category_slug']) ? $options['wpshop_catalog_no_category_slug'] : WPSHOP_CATALOG_PRODUCT_NO_CATEGORY) . '" />
267
-		<a href="#" title="'.__('This slug will be used for products not being related to any category ','wpshop').'" class="wpshop_infobulle_marker">?</a>';
267
+		<a href="#" title="'.__('This slug will be used for products not being related to any category ', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
268 268
 	}
269 269
 
270 270
 	/* Processing */
271
-	public static function wpshop_options_validate_catalog_product_option($input){
272
-		foreach($input as $option_key => $option_value){
273
-			switch($option_key){
271
+	public static function wpshop_options_validate_catalog_product_option($input) {
272
+		foreach ($input as $option_key => $option_value) {
273
+			switch ($option_key) {
274 274
 				default:
275 275
 					$new_input[$option_key] = $option_value;
276 276
 				break;
@@ -279,9 +279,9 @@  discard block
 block discarded – undo
279 279
 
280 280
 		return $new_input;
281 281
 	}
282
-	public static function wpshop_options_validate_catalog_categories_option($input){
283
-		foreach($input as $option_key => $option_value){
284
-			switch($option_key){
282
+	public static function wpshop_options_validate_catalog_categories_option($input) {
283
+		foreach ($input as $option_key => $option_value) {
284
+			switch ($option_key) {
285 285
 				default:
286 286
 					$new_input[$option_key] = $option_value;
287 287
 				break;
@@ -290,11 +290,11 @@  discard block
 block discarded – undo
290 290
 
291 291
 		return $new_input;
292 292
 	}
293
-	public static function wpshop_options_validate_catalog_main_option($input){
293
+	public static function wpshop_options_validate_catalog_main_option($input) {
294 294
 		$new_input = $input;
295
-		if ( !empty($input) && is_array( $input ) ) {
296
-			foreach($input as $option_key => $option_value){
297
-				switch($option_key){
295
+		if (!empty($input) && is_array($input)) {
296
+			foreach ($input as $option_key => $option_value) {
297
+				switch ($option_key) {
298 298
 					default:
299 299
 						$new_input[$option_key] = $option_value;
300 300
 						break;
@@ -305,16 +305,16 @@  discard block
 block discarded – undo
305 305
 		return $new_input;
306 306
 	}
307 307
 
308
-	public static function wpshop_catalog_varition_product_field () {
308
+	public static function wpshop_catalog_varition_product_field() {
309 309
 		$catalog_product_option = get_option('wpshop_catalog_product_option');
310
-		$output  = '<input type="checkbox" name="wpshop_catalog_product_option[price_display][text_from]" id="wpshop_catalog_product_option_price_display_text_from" ' .( ( !empty($catalog_product_option) && !empty($catalog_product_option['price_display']) && !empty($catalog_product_option['price_display']['text_from']) ) ? 'checked="checked"' : '' ). ' /> ';
311
-		$output .= '<label for="wpshop_catalog_product_option_price_display_text_from">'. __('Display "price from" before basic price of product', 'wpshop').'</label><br/>';
312
-		$output .= '<input type="checkbox" name="wpshop_catalog_product_option[price_display][lower_price]" id="wpshop_catalog_product_option_price_display_lower_price" ' .( ( !empty($catalog_product_option) && !empty($catalog_product_option['price_display']) && !empty($catalog_product_option['price_display']['lower_price']) ) ? 'checked="checked"' : '' ). ' /> ';
313
-		$output .= '<label for="wpshop_catalog_product_option_price_display_lower_price">'. __('Display the lowest price of variation', 'wpshop').'</label>';
310
+		$output  = '<input type="checkbox" name="wpshop_catalog_product_option[price_display][text_from]" id="wpshop_catalog_product_option_price_display_text_from" ' . ((!empty($catalog_product_option) && !empty($catalog_product_option['price_display']) && !empty($catalog_product_option['price_display']['text_from'])) ? 'checked="checked"' : '') . ' /> ';
311
+		$output .= '<label for="wpshop_catalog_product_option_price_display_text_from">' . __('Display "price from" before basic price of product', 'wpshop') . '</label><br/>';
312
+		$output .= '<input type="checkbox" name="wpshop_catalog_product_option[price_display][lower_price]" id="wpshop_catalog_product_option_price_display_lower_price" ' . ((!empty($catalog_product_option) && !empty($catalog_product_option['price_display']) && !empty($catalog_product_option['price_display']['lower_price'])) ? 'checked="checked"' : '') . ' /> ';
313
+		$output .= '<label for="wpshop_catalog_product_option_price_display_lower_price">' . __('Display the lowest price of variation', 'wpshop') . '</label>';
314 314
 		echo $output;
315 315
 	}
316 316
 
317
-	public static function wpshop_catalog_product_variation_option_validate ($input) {
317
+	public static function wpshop_catalog_product_variation_option_validate($input) {
318 318
 		return $input;
319 319
 	}
320 320
 
@@ -330,7 +330,7 @@  discard block
 block discarded – undo
330 330
 		$input_def['id'] = 'wpshop_cart_option_total_nb_of_item_allowed';
331 331
 		$input_def['type'] = 'text';
332 332
 		$input_def['value'] = !empty($cart_option['total_nb_of_item_allowed']) ? $cart_option['total_nb_of_item_allowed'][0] : '';
333
-		$output .= wpshop_form::check_input_type($input_def, 'wpshop_cart_option[total_nb_of_item_allowed]') . '<a href="#" title="'.__('This value count all quantities in cart. Example : 2 products A + 3 products B = 5 products','wpshop').'" class="wpshop_infobulle_marker">?</a>';
333
+		$output .= wpshop_form::check_input_type($input_def, 'wpshop_cart_option[total_nb_of_item_allowed]') . '<a href="#" title="' . __('This value count all quantities in cart. Example : 2 products A + 3 products B = 5 products', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
334 334
 
335 335
 		echo $output;
336 336
 	}
@@ -343,7 +343,7 @@  discard block
 block discarded – undo
343 343
 		$input_def['id'] = 'wpshop_cart_option_nb_of_same_item_allowed';
344 344
 		$input_def['type'] = 'text';
345 345
 		$input_def['value'] = $cart_option['total_nb_of_same_item_allowed'][0];
346
-		$output .= wpshop_form::check_input_type($input_def, 'wpshop_cart_option[total_nb_of_same_item_allowed]') . '<a href="#" title="'.__('Empty for no restriction','wpshop').'" class="wpshop_infobulle_marker">?</a>';
346
+		$output .= wpshop_form::check_input_type($input_def, 'wpshop_cart_option[total_nb_of_same_item_allowed]') . '<a href="#" title="' . __('Empty for no restriction', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
347 347
 
348 348
 		echo $output;
349 349
 	}
@@ -362,11 +362,11 @@  discard block
 block discarded – undo
362 362
 		$input_def['options_label']['container'] = true;
363 363
 		$output .= wpshop_form::check_input_type($input_def, 'wpshop_cart_option[product_added_to_cart]');
364 364
 
365
-		$hide = ( (!empty($cart_option) && !empty($cart_option['product_added_to_cart'][0]) && $cart_option['product_added_to_cart'][0] == 'cart_page') ? 'wpshopHide' : null);
366
-		$output .= '<div id="wpshop_cart_option_animation_cart_type" class="' .$hide. '"><label for="wpshop_cart_option[animation_cart_type]">' .__('Cart animation type', 'wpshop'). '</label>';
365
+		$hide = ((!empty($cart_option) && !empty($cart_option['product_added_to_cart'][0]) && $cart_option['product_added_to_cart'][0] == 'cart_page') ? 'wpshopHide' : null);
366
+		$output .= '<div id="wpshop_cart_option_animation_cart_type" class="' . $hide . '"><label for="wpshop_cart_option[animation_cart_type]">' . __('Cart animation type', 'wpshop') . '</label>';
367 367
 		$output .= '<select name="wpshop_cart_option[animation_cart_type]" id="wpshop_cart_option[animation_cart_type]">';
368
-		$output .= '<option value="pop-in" ' .( ( !empty($cart_option['animation_cart_type']) && $cart_option['animation_cart_type'] == 'pop-in') ? 'selected="selected"' : null). '>' .__('Dialog box', 'wpshop'). '</option>';
369
-		$output .= '<option value="animation" ' .( ( !empty($cart_option['animation_cart_type']) && $cart_option['animation_cart_type'] == 'animation') ? 'selected="selected"' : null). '>' .__('Image animation', 'wpshop'). '</option>';
368
+		$output .= '<option value="pop-in" ' . ((!empty($cart_option['animation_cart_type']) && $cart_option['animation_cart_type'] == 'pop-in') ? 'selected="selected"' : null) . '>' . __('Dialog box', 'wpshop') . '</option>';
369
+		$output .= '<option value="animation" ' . ((!empty($cart_option['animation_cart_type']) && $cart_option['animation_cart_type'] == 'animation') ? 'selected="selected"' : null) . '>' . __('Image animation', 'wpshop') . '</option>';
370 370
 		$output .= '</select></div>';
371 371
 
372 372
 		echo $output;
@@ -384,7 +384,7 @@  discard block
 block discarded – undo
384 384
 		$input_def['id'] = 'wpshop_cart_option_action_after_product_added_to_quotation';
385 385
 		$input_def['type'] = 'radio';
386 386
 		$input_def['valueToPut'] = 'index';
387
-		$input_def['value'] = ( !empty($cart_option['product_added_to_quotation']) ? $cart_option['product_added_to_quotation'] : null );
387
+		$input_def['value'] = (!empty($cart_option['product_added_to_quotation']) ? $cart_option['product_added_to_quotation'] : null);
388 388
 		$input_def['possible_value'] = array('dialog_msg' => __('Display the dialog allowing to choose between continue shopping or go to cart', 'wpshop'), 'cart_page' => __('Automaticaly send user to cart page', 'wpshop'));
389 389
 		$input_def['options_label']['original'] = true;
390 390
 		$input_def['options_label']['container'] = true;
@@ -392,14 +392,14 @@  discard block
 block discarded – undo
392 392
 
393 393
 		echo $output;
394 394
 	}
395
-	public static function wpshop_options_validate_cart( $input ) {
395
+	public static function wpshop_options_validate_cart($input) {
396 396
 
397
-		if ( empty( $input ) || empty( $input[ 'display_newsletter' ] ) || empty( $input[ 'display_newsletter' ][ 'partner_subscription' ] ) ) {
398
-			$input[ 'display_newsletter' ][ 'partner_subscription' ] = 'no';
397
+		if (empty($input) || empty($input['display_newsletter']) || empty($input['display_newsletter']['partner_subscription'])) {
398
+			$input['display_newsletter']['partner_subscription'] = 'no';
399 399
 		}
400 400
 
401
-		if ( empty( $input ) || empty( $input[ 'display_newsletter' ] ) || empty( $input[ 'display_newsletter' ][ 'site_subscription' ] ) ) {
402
-			$input[ 'display_newsletter' ][ 'site_subscription' ] = 'no';
401
+		if (empty($input) || empty($input['display_newsletter']) || empty($input['display_newsletter']['site_subscription'])) {
402
+			$input['display_newsletter']['site_subscription'] = 'no';
403 403
 		}
404 404
 
405 405
 		return $input;
Please login to merge, or discard this patch.
includes/librairies/options/options_addons.class.php 2 patches
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -20,12 +20,12 @@  discard block
 block discarded – undo
20 20
 * @package wpshop
21 21
 * @subpackage librairies
22 22
 */
23
-class wpshop_addons_settings{
23
+class wpshop_addons_settings {
24 24
 
25 25
 	/**
26 26
 	 * Déclaration des différentes options
27 27
 	 */
28
-	function declare_options(){
28
+	function declare_options() {
29 29
 // 		add_settings_section('wpshop_addons_options', __('Wpshop "addons"', 'wpshop'), array('wpshop_advanced_settings', 'plugin_section_text'), 'wpshop_addons_options');
30 30
 // 		register_setting('wpshop_options', 'wpshop_addons_options', array('wpshop_addons_settings', 'validate_options'));
31 31
 // 		add_settings_field('wpshop_addons_settings_field', '', array('wpshop_addons_settings', 'addons_definition_fields'), 'wpshop_addons_options', 'wpshop_addons_options');
@@ -42,33 +42,33 @@  discard block
 block discarded – undo
42 42
 	 *
43 43
 	 * @param unknown_type $input
44 44
 	 */
45
-	public static function validate_options($input){
45
+	public static function validate_options($input) {
46 46
 
47 47
 	}
48 48
 
49 49
 	/**
50 50
 	 * Définition des champs pour l'activation des addons
51 51
 	 */
52
-	function addons_definition_fields () {
52
+	function addons_definition_fields() {
53 53
 		$content = '';
54 54
 
55
-		$content .= '<input type="hidden" name="wpshop_ajax_addons_nonce" id="wpshop_ajax_addons_nonce" value="'.wp_create_nonce('wpshop_ajax_activate_addons').'" />';
55
+		$content .= '<input type="hidden" name="wpshop_ajax_addons_nonce" id="wpshop_ajax_addons_nonce" value="' . wp_create_nonce('wpshop_ajax_activate_addons') . '" />';
56 56
 
57 57
 		$addons_options = get_option('wpshop_addons', array());
58 58
 		$addons_list = unserialize(WPSHOP_ADDONS_LIST);
59 59
 		foreach ($addons_list as $addon => $addon_def) {
60 60
 			$activated_status = false;
61
-			if ( array_key_exists($addon, $addons_options) && ( $addons_options[$addon]['activate'] )) {
61
+			if (array_key_exists($addon, $addons_options) && ($addons_options[$addon]['activate'])) {
62 62
 				$activated_status = true;
63 63
 			}
64
-			$activated_string = $activated_status ? __('Activated','wpshop') : __('Desactivated','wpshop');
64
+			$activated_string = $activated_status ? __('Activated', 'wpshop') : __('Desactivated', 'wpshop');
65 65
 			$activated_class = unserialize(WPSHOP_ADDONS_STATES_CLASS);
66
-			$content .=  '<strong>' . __($addon_def[0], 'wpshop') . '</strong>: <span class="'.$activated_class[$activated_status].'" id="addon_'.$addon.'_state" >'.$activated_string.'</span>';
66
+			$content .= '<strong>' . __($addon_def[0], 'wpshop') . '</strong>: <span class="' . $activated_class[$activated_status] . '" id="addon_' . $addon . '_state" >' . $activated_string . '</span>';
67 67
 			if (!$activated_status) {
68
-				$content .=  ' <input type="text" name="'.$addon.'" id="'.$addon.'" value="" /> <input type="button" name="'.$addon.'_button" id="'.$addon.'_button" class="addons_activating_button button-primary" value="'.__('Activate this addon','wpshop').'" />';
68
+				$content .= ' <input type="text" name="' . $addon . '" id="' . $addon . '" value="" /> <input type="button" name="' . $addon . '_button" id="' . $addon . '_button" class="addons_activating_button button-primary" value="' . __('Activate this addon', 'wpshop') . '" />';
69 69
 			}
70 70
 			else {
71
-				$content .= ' <input type="button" name="'.$addon.'_button" id="'.$addon.'_button" class="addons_desactivating_button button-secondary" value="'.__('Desactivate this addon','wpshop').'" />';
71
+				$content .= ' <input type="button" name="' . $addon . '_button" id="' . $addon . '_button" class="addons_desactivating_button button-secondary" value="' . __('Desactivate this addon', 'wpshop') . '" />';
72 72
 			}
73 73
 			$content .= '<br/>';
74 74
 		}
Please login to merge, or discard this patch.
Braces   +4 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
@@ -66,8 +68,7 @@  discard block
 block discarded – undo
66 68
 			$content .=  '<strong>' . __($addon_def[0], 'wpshop') . '</strong>: <span class="'.$activated_class[$activated_status].'" id="addon_'.$addon.'_state" >'.$activated_string.'</span>';
67 69
 			if (!$activated_status) {
68 70
 				$content .=  ' <input type="text" name="'.$addon.'" id="'.$addon.'" value="" /> <input type="button" name="'.$addon.'_button" id="'.$addon.'_button" class="addons_activating_button button-primary" value="'.__('Activate this addon','wpshop').'" />';
69
-			}
70
-			else {
71
+			} else {
71 72
 				$content .= ' <input type="button" name="'.$addon.'_button" id="'.$addon.'_button" class="addons_desactivating_button button-secondary" value="'.__('Desactivate this addon','wpshop').'" />';
72 73
 			}
73 74
 			$content .= '<br/>';
Please login to merge, or discard this patch.
includes/librairies/options/options_payment.class.php 2 patches
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -1,4 +1,4 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 /**
3 3
  * Payment options management
4 4
  *
@@ -10,8 +10,8 @@  discard block
 block discarded – undo
10 10
  */
11 11
 
12 12
 /**	Check if file is include. No direct access possible with file url	*/
13
-if ( !defined( 'WPSHOP_VERSION' ) ) {
14
-	die( __('Access is not allowed by this way', 'wpshop') );
13
+if (!defined('WPSHOP_VERSION')) {
14
+	die(__('Access is not allowed by this way', 'wpshop'));
15 15
 }
16 16
 
17 17
 /**
@@ -27,21 +27,21 @@  discard block
 block discarded – undo
27 27
 	public static function declare_options() {
28 28
 
29 29
 		$options = get_option('wpshop_paymentMethod');
30
-		add_settings_section('wpshop_paymentMethod', '<span class="dashicons dashicons-admin-settings"></span>'.__('Payment method', 'wpshop'), array('wpshop_payment_options', 'plugin_section_text'), 'wpshop_paymentMethod');
30
+		add_settings_section('wpshop_paymentMethod', '<span class="dashicons dashicons-admin-settings"></span>' . __('Payment method', 'wpshop'), array('wpshop_payment_options', 'plugin_section_text'), 'wpshop_paymentMethod');
31 31
 
32 32
 		register_setting('wpshop_options', 'wpshop_paymentMethod', array('wpshop_payment_options', 'wpshop_options_validate_default_payment_method'));
33 33
 		register_setting('wpshop_options', 'wpshop_paymentMethod_options', array('wpshop_payment_options', 'wpshop_options_validate_payment_method_options'));
34 34
 		register_setting('wpshop_options', 'wpshop_paymentAddress', array('wpshop_payment_options', 'wpshop_options_validate_paymentAddress'));
35 35
 		register_setting('wpshop_options', 'wpshop_paypalEmail', array('wpshop_payment_options', 'wpshop_options_validate_paypalEmail'));
36 36
 		register_setting('wpshop_options', 'wpshop_paypalMode', array('wpshop_payment_options', 'wpshop_options_validate_paypalMode'));
37
-		if(WPSHOP_PAYMENT_METHOD_CIC || !empty($options['cic'])) register_setting('wpshop_options', 'wpshop_cmcic_params', array('wpshop_payment_options', 'wpshop_options_validate_cmcic_params'));
37
+		if (WPSHOP_PAYMENT_METHOD_CIC || !empty($options['cic'])) register_setting('wpshop_options', 'wpshop_cmcic_params', array('wpshop_payment_options', 'wpshop_options_validate_cmcic_params'));
38 38
 
39 39
 		register_setting('wpshop_options', 'wpshop_payment_partial', array('wpshop_payment_options', 'partial_payment_saver'));
40
-		add_settings_section('wpshop_payment_partial_on_command', '<span class="dashicons dashicons-clipboard"></span>'.__('Partial payment', 'wpshop'), array('wpshop_payment_options', 'partial_payment_explanation'), 'wpshop_payment_partial_on_command');
40
+		add_settings_section('wpshop_payment_partial_on_command', '<span class="dashicons dashicons-clipboard"></span>' . __('Partial payment', 'wpshop'), array('wpshop_payment_options', 'partial_payment_explanation'), 'wpshop_payment_partial_on_command');
41 41
 		add_settings_field('wpshop_payment_partial', '', array('wpshop_payment_options', 'partial_payment'), 'wpshop_payment_partial_on_command', 'wpshop_payment_partial_on_command');
42 42
 		
43 43
 		register_setting('wpshop_options', 'wpshop_send_invoice', array('wpshop_payment_options', 'allow_send_invoice_saver'));
44
-		add_settings_section('wpshop_send_invoice_section','<span class="dashicons dashicons-email-alt"></span>'. __('Allow WPShop to send invoices', 'wpshop'), array(), 'wpshop_payment_partial_on_command');
44
+		add_settings_section('wpshop_send_invoice_section', '<span class="dashicons dashicons-email-alt"></span>' . __('Allow WPShop to send invoices', 'wpshop'), array(), 'wpshop_payment_partial_on_command');
45 45
 		add_settings_field('wpshop_send_invoice', '', array('wpshop_payment_options', 'wpshop_send_invoice'), 'wpshop_payment_partial_on_command', 'wpshop_send_invoice_section');
46 46
 	}
47 47
 
@@ -56,8 +56,8 @@  discard block
 block discarded – undo
56 56
 	/* Processing */
57 57
 	public static function wpshop_options_validate_paymentMethod($input) {
58 58
 		foreach ($input as $k => $i) {
59
-			if ( $k != 'default_method' && !is_array($i) ) {
60
-				$input[$k] = !empty($input[$k]) && ($input[$k]=='on');
59
+			if ($k != 'default_method' && !is_array($i)) {
60
+				$input[$k] = !empty($input[$k]) && ($input[$k] == 'on');
61 61
 			}
62 62
 		}
63 63
 		return $input;
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
 		return $input;
84 84
 	}
85 85
 
86
-	public static function allow_send_invoice_saver( $input ) {
86
+	public static function allow_send_invoice_saver($input) {
87 87
 		return $input;
88 88
 	}
89 89
 
@@ -113,12 +113,12 @@  discard block
 block discarded – undo
113 113
 		$partial_payment_current_config = get_option('wpshop_payment_partial', array('for_all' => array()));
114 114
 
115 115
 		$partial_for_all_is_activate = false;
116
-		if ( !empty($partial_payment_current_config) && !empty($partial_payment_current_config['for_all']) && !empty($partial_payment_current_config['for_all']['activate']) ) {
116
+		if (!empty($partial_payment_current_config) && !empty($partial_payment_current_config['for_all']) && !empty($partial_payment_current_config['for_all']['activate'])) {
117 117
 			$partial_for_all_is_activate = true;
118 118
 		}
119 119
 
120 120
 		$output .= '
121
-<input type="checkbox" name="wpshop_payment_partial[for_all][activate]"' . ($partial_for_all_is_activate ? ' checked="checked"' : '') . ' id="wpshop_payment_partial_on_command_activation_state" /> <label for="wpshop_payment_partial_on_command_activation_state" >' . __('Activate partial command for all order', 'wpshop') . '</label><a href="#" title="'.__('If you want that customer pay a part o f total amount of there order, check this box then fill fields below','wpshop').'" class="wpshop_infobulle_marker">?</a>
121
+<input type="checkbox" name="wpshop_payment_partial[for_all][activate]"' . ($partial_for_all_is_activate ? ' checked="checked"' : '') . ' id="wpshop_payment_partial_on_command_activation_state" /> <label for="wpshop_payment_partial_on_command_activation_state" >' . __('Activate partial command for all order', 'wpshop') . '</label><a href="#" title="' . __('If you want that customer pay a part o f total amount of there order, check this box then fill fields below', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>
122 122
 <div class="wpshop_partial_payment_config_container' . ($partial_for_all_is_activate ? '' : ' wpshopHide') . '" id="wpshop_partial_payment_config_container" >
123 123
 	<div class="alignleft" >
124 124
 		' . __('Value of partial payment', 'wpshop') . '<br/>
@@ -138,13 +138,13 @@  discard block
 block discarded – undo
138 138
 
139 139
 	
140 140
 	public static function wpshop_send_invoice() {
141
-		$send_invoice_option = get_option( 'wpshop_send_invoice' );
142
-		$output = '<input type="checkbox" id="wpshop_send_invoice" name="wpshop_send_invoice" ' . ( ( !empty($send_invoice_option) ) ? 'checked="checked"' : '' ) . '/>';
143
-		$output .= ' <label for="wpshop_send_invoice">' .__('Allow WPshop to send invoice in PDF format when order is completed', 'wpshop' ). '</label>';
141
+		$send_invoice_option = get_option('wpshop_send_invoice');
142
+		$output = '<input type="checkbox" id="wpshop_send_invoice" name="wpshop_send_invoice" ' . ((!empty($send_invoice_option)) ? 'checked="checked"' : '') . '/>';
143
+		$output .= ' <label for="wpshop_send_invoice">' . __('Allow WPshop to send invoice in PDF format when order is completed', 'wpshop') . '</label>';
144 144
 		echo $output;
145 145
 	}
146 146
 	
147
-	public static function wpshop_options_validate_default_payment_method ($input) {
147
+	public static function wpshop_options_validate_default_payment_method($input) {
148 148
 		return $input;
149 149
 	}
150 150
 
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 /**
3 5
  * Payment options management
4 6
  *
@@ -34,7 +36,9 @@  discard block
 block discarded – undo
34 36
 		register_setting('wpshop_options', 'wpshop_paymentAddress', array('wpshop_payment_options', 'wpshop_options_validate_paymentAddress'));
35 37
 		register_setting('wpshop_options', 'wpshop_paypalEmail', array('wpshop_payment_options', 'wpshop_options_validate_paypalEmail'));
36 38
 		register_setting('wpshop_options', 'wpshop_paypalMode', array('wpshop_payment_options', 'wpshop_options_validate_paypalMode'));
37
-		if(WPSHOP_PAYMENT_METHOD_CIC || !empty($options['cic'])) register_setting('wpshop_options', 'wpshop_cmcic_params', array('wpshop_payment_options', 'wpshop_options_validate_cmcic_params'));
39
+		if(WPSHOP_PAYMENT_METHOD_CIC || !empty($options['cic'])) {
40
+			register_setting('wpshop_options', 'wpshop_cmcic_params', array('wpshop_payment_options', 'wpshop_options_validate_cmcic_params'));
41
+		}
38 42
 
39 43
 		register_setting('wpshop_options', 'wpshop_payment_partial', array('wpshop_payment_options', 'partial_payment_saver'));
40 44
 		add_settings_section('wpshop_payment_partial_on_command', '<span class="dashicons dashicons-clipboard"></span>'.__('Partial payment', 'wpshop'), array('wpshop_payment_options', 'partial_payment_explanation'), 'wpshop_payment_partial_on_command');
Please login to merge, or discard this patch.
includes/librairies/options/options_general.class.php 3 patches
Braces   +4 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
@@ -140,8 +142,7 @@  discard block
 block discarded – undo
140 142
 				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "yes", is_used_in_variation = "yes" WHERE code = "product_price"');
141 143
 				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "yes" WHERE code = "tx_tva"');
142 144
 				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "no", is_used_in_variation = "no" WHERE code = "price_ht"');
143
-			}
144
-			elseif ( ($price_pilot_attribute_code == WPSHOP_PRODUCT_PRICE_HT) && (!empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']) && !empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'])) && ($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'] > $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']) ) {
145
+			} elseif ( ($price_pilot_attribute_code == WPSHOP_PRODUCT_PRICE_HT) && (!empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']) && !empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'])) && ($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'] > $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']) ) {
145 146
 				$wpdb->update(WPSHOP_DBT_ATTRIBUTE_DETAILS, array('last_update_date' => current_time('mysql', 0), 'position' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']), array('id' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['id']));
146 147
 				$wpdb->update(WPSHOP_DBT_ATTRIBUTE_DETAILS, array('last_update_date' => current_time('mysql', 0), 'position' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']), array('id' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['id']));
147 148
 
Please login to merge, or discard this patch.
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -23,8 +23,8 @@
 block discarded – undo
23 23
 class wpshop_general_options {
24 24
 
25 25
 	/**
26
-	*
27
-	*/
26
+	 *
27
+	 */
28 28
 	public static function declare_options(){
29 29
 		$page = !empty( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
30 30
 
Please login to merge, or discard this patch.
Spacing   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -25,13 +25,13 @@  discard block
 block discarded – undo
25 25
 	/**
26 26
 	*
27 27
 	*/
28
-	public static function declare_options(){
29
-		$page = !empty( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : '';
28
+	public static function declare_options() {
29
+		$page = !empty($_GET['page']) ? sanitize_text_field($_GET['page']) : '';
30 30
 
31
-		if ( isset($page) && ( substr($page, 0, 13 ) == 'wpshop_option' || $page == 'wps-installer' ) ) {
31
+		if (isset($page) && (substr($page, 0, 13) == 'wpshop_option' || $page == 'wps-installer')) {
32 32
 			wp_enqueue_media();
33 33
 		}
34
-		add_settings_section('wpshop_general_config','<span class="dashicons dashicons-info"></span>'. __('Shop main configuration', 'wpshop'), array('wpshop_general_options', 'plugin_section_text'), 'wpshop_general_config');
34
+		add_settings_section('wpshop_general_config', '<span class="dashicons dashicons-info"></span>' . __('Shop main configuration', 'wpshop'), array('wpshop_general_options', 'plugin_section_text'), 'wpshop_general_config');
35 35
 
36 36
 		register_setting('wpshop_options', 'wpshop_shop_type', array('wpshop_general_options', 'wpshop_options_validate_wpshop_shop_type'));
37 37
 			add_settings_field('wpshop_shop_type', __('Shop type', 'wpshop'), array('wpshop_general_options', 'wpshop_shop_type'), 'wpshop_general_config', 'wpshop_general_config');
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
 
61 61
 	/*	Default currecy for the entire shop	*/
62 62
 	public static function wpshop_shop_default_currency_field() {
63
-		echo wpshop_attributes_unit::wpshop_shop_currency_list_field() . '<a href="#" title="'.__('This is the currency the shop will use','wpshop').'" class="wpshop_infobulle_marker">?</a>';
63
+		echo wpshop_attributes_unit::wpshop_shop_currency_list_field() . '<a href="#" title="' . __('This is the currency the shop will use', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
64 64
 	}
65 65
 
66 66
 	public static function wpshop_default_weight_unity_field() {
@@ -70,16 +70,16 @@  discard block
 block discarded – undo
70 70
 		$current_weight = get_option('wpshop_shop_default_weight_unity');
71 71
 
72 72
 		$weight_options = '';
73
-		if ( !empty ($weight_group) ) {
74
-			$query = $wpdb->prepare('SELECT * FROM ' .WPSHOP_DBT_ATTRIBUTE_UNIT. ' WHERE group_id = %d', $weight_group);
73
+		if (!empty ($weight_group)) {
74
+			$query = $wpdb->prepare('SELECT * FROM ' . WPSHOP_DBT_ATTRIBUTE_UNIT . ' WHERE group_id = %d', $weight_group);
75 75
 			$weight_units = $wpdb->get_results($query);
76
-			foreach ( $weight_units as $weight_unit) {
77
-				$weight_options .= '<option value="'.$weight_unit->id.'"'.( ($weight_unit->id == $current_weight) ? ' selected="selected"' : null).'>'.$weight_unit->name.' ('.$weight_unit->unit.')</option>';
76
+			foreach ($weight_units as $weight_unit) {
77
+				$weight_options .= '<option value="' . $weight_unit->id . '"' . (($weight_unit->id == $current_weight) ? ' selected="selected"' : null) . '>' . $weight_unit->name . ' (' . $weight_unit->unit . ')</option>';
78 78
 			}
79 79
 		}
80 80
 
81
-		echo '<select name="wpshop_shop_default_weight_unity">'.$weight_options.'</select>
82
-		<a href="#" title="'.__('This is the weight unity the shop will use','wpshop').'" class="wpshop_infobulle_marker">?</a>';
81
+		echo '<select name="wpshop_shop_default_weight_unity">' . $weight_options . '</select>
82
+		<a href="#" title="'.__('This is the weight unity the shop will use', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
83 83
 	}
84 84
 
85 85
 	public static function wpshop_options_validate_default_currency($input) {
@@ -94,30 +94,30 @@  discard block
 block discarded – undo
94 94
 		$current_piloting = get_option('wpshop_shop_price_piloting', WPSHOP_PRODUCT_PRICE_PILOT);
95 95
 
96 96
 		$piloting_options = '';
97
-		foreach(self::$wpshop_price_piloting_types as $price_type) {
98
-			$piloting_options .= '<option value="'.$price_type.'"'.(($price_type==$current_piloting) ? ' selected="selected"' : null).'>'.$price_type.'</option>';
97
+		foreach (self::$wpshop_price_piloting_types as $price_type) {
98
+			$piloting_options .= '<option value="' . $price_type . '"' . (($price_type == $current_piloting) ? ' selected="selected"' : null) . '>' . $price_type . '</option>';
99 99
 		}
100
-		echo '<select name="wpshop_shop_price_piloting">'.$piloting_options.'</select>
101
-		<a href="#" title=\''. __('You can choose if the price you will enter in each product is the "all tax include" price or the "tax free price"','wpshop') .'\' class="wpshop_infobulle_marker">?</a>';
100
+		echo '<select name="wpshop_shop_price_piloting">' . $piloting_options . '</select>
101
+		<a href="#" title=\''. __('You can choose if the price you will enter in each product is the "all tax include" price or the "tax free price"', 'wpshop') . '\' class="wpshop_infobulle_marker">?</a>';
102 102
 	}
103 103
 
104 104
 
105 105
 	public static function wpshop_ga_account_id_field() {
106 106
 		$ga_account_id = get_option('wpshop_ga_account_id');
107
-		echo '<input type="text" name="wpshop_ga_account_id" value="'.$ga_account_id.'" />';
107
+		echo '<input type="text" name="wpshop_ga_account_id" value="' . $ga_account_id . '" />';
108 108
 	}
109 109
 
110
-	public static function wpshop_options_validate_ga_account_id ($input) {
110
+	public static function wpshop_options_validate_ga_account_id($input) {
111 111
 		return $input;
112 112
 	}
113 113
 
114
-	public static function wpshop_options_validate_default_weight_unity ($input) {
114
+	public static function wpshop_options_validate_default_weight_unity($input) {
115 115
 		return $input;
116 116
 	}
117 117
 	public static function wpshop_options_validate_price_piloting($input) {
118 118
 		global $wpdb;
119 119
 
120
-		$price_pilot_attribute_code = constant('WPSHOP_PRODUCT_PRICE_'.$input);
120
+		$price_pilot_attribute_code = constant('WPSHOP_PRODUCT_PRICE_' . $input);
121 121
 
122 122
 		$query = $wpdb->prepare(
123 123
 "SELECT ATTRIBUTE.code, ATTR_SET_SECTION_DETAILS.id, ATTR_SET_SECTION_DETAILS.attribute_group_id, ATTR_SET_SECTION_DETAILS.position
@@ -134,23 +134,23 @@  discard block
 block discarded – undo
134 134
 
135 135
 		$new_def = array();
136 136
 		foreach ($attributes_order as $attribute_group_id => $attribute_price_def) :
137
-			if ( ($price_pilot_attribute_code == WPSHOP_PRODUCT_PRICE_TTC) && (!empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']) && !empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'])) && ($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'] > $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']) ) {
137
+			if (($price_pilot_attribute_code == WPSHOP_PRODUCT_PRICE_TTC) && (!empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']) && !empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'])) && ($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'] > $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'])) {
138 138
 				$wpdb->update(WPSHOP_DBT_ATTRIBUTE_DETAILS, array('last_update_date' => current_time('mysql', 0), 'position' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']), array('id' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['id']));
139 139
 				$wpdb->update(WPSHOP_DBT_ATTRIBUTE_DETAILS, array('last_update_date' => current_time('mysql', 0), 'position' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']), array('id' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['id']));
140 140
 
141 141
 				/** Update entries for quick add and variations */
142
-				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "yes", is_used_in_variation = "yes" WHERE code = "product_price"');
143
-				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "yes" WHERE code = "tx_tva"');
144
-				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "no", is_used_in_variation = "no" WHERE code = "price_ht"');
142
+				$wpdb->query('UPDATE ' . WPSHOP_DBT_ATTRIBUTE . ' SET is_used_in_quick_add_form = "yes", is_used_in_variation = "yes" WHERE code = "product_price"');
143
+				$wpdb->query('UPDATE ' . WPSHOP_DBT_ATTRIBUTE . ' SET is_used_in_quick_add_form = "yes" WHERE code = "tx_tva"');
144
+				$wpdb->query('UPDATE ' . WPSHOP_DBT_ATTRIBUTE . ' SET is_used_in_quick_add_form = "no", is_used_in_variation = "no" WHERE code = "price_ht"');
145 145
 			}
146
-			elseif ( ($price_pilot_attribute_code == WPSHOP_PRODUCT_PRICE_HT) && (!empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']) && !empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'])) && ($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'] > $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']) ) {
146
+			elseif (($price_pilot_attribute_code == WPSHOP_PRODUCT_PRICE_HT) && (!empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']) && !empty($attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'])) && ($attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position'] > $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position'])) {
147 147
 				$wpdb->update(WPSHOP_DBT_ATTRIBUTE_DETAILS, array('last_update_date' => current_time('mysql', 0), 'position' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['position']), array('id' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['id']));
148 148
 				$wpdb->update(WPSHOP_DBT_ATTRIBUTE_DETAILS, array('last_update_date' => current_time('mysql', 0), 'position' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_HT]['position']), array('id' => $attribute_price_def[WPSHOP_PRODUCT_PRICE_TTC]['id']));
149 149
 
150 150
 				/** Update entries for quick add and variations */
151
-				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "yes", is_used_in_variation = "yes" WHERE code = "price_ht"');
152
-				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "no" WHERE code = "tx_tva"');
153
-				$wpdb->query('UPDATE ' .WPSHOP_DBT_ATTRIBUTE.' SET is_used_in_quick_add_form = "no", is_used_in_variation = "no" WHERE code = "product_price"');
151
+				$wpdb->query('UPDATE ' . WPSHOP_DBT_ATTRIBUTE . ' SET is_used_in_quick_add_form = "yes", is_used_in_variation = "yes" WHERE code = "price_ht"');
152
+				$wpdb->query('UPDATE ' . WPSHOP_DBT_ATTRIBUTE . ' SET is_used_in_quick_add_form = "no" WHERE code = "tx_tva"');
153
+				$wpdb->query('UPDATE ' . WPSHOP_DBT_ATTRIBUTE . ' SET is_used_in_quick_add_form = "no", is_used_in_variation = "no" WHERE code = "product_price"');
154 154
 			}
155 155
 		endforeach;
156 156
 
@@ -161,37 +161,37 @@  discard block
 block discarded – undo
161 161
 	public static function wpshop_shop_type() {
162 162
 		$shop_types = unserialize(WPSHOP_SHOP_TYPES);
163 163
 		$shop_types_options = '';
164
-		foreach($shop_types as $type) {
165
-			$shop_types_options .= '<option value="'.$type.'"'.(($type==WPSHOP_DEFINED_SHOP_TYPE) ? ' selected="selected"' : null).'>'.__($type, 'wpshop').'</option>';
164
+		foreach ($shop_types as $type) {
165
+			$shop_types_options .= '<option value="' . $type . '"' . (($type == WPSHOP_DEFINED_SHOP_TYPE) ? ' selected="selected"' : null) . '>' . __($type, 'wpshop') . '</option>';
166 166
 		}
167
-		echo '<select name="wpshop_shop_type">'.$shop_types_options.'</select><input type="hidden" name="old_wpshop_shop_type" value="'.WPSHOP_DEFINED_SHOP_TYPE.'" />
168
-		<a href="#" title="'.__('Define if you have a shop to sale item or just for item showing','wpshop').'" class="wpshop_infobulle_marker">?</a>';
167
+		echo '<select name="wpshop_shop_type">' . $shop_types_options . '</select><input type="hidden" name="old_wpshop_shop_type" value="' . WPSHOP_DEFINED_SHOP_TYPE . '" />
168
+		<a href="#" title="'.__('Define if you have a shop to sale item or just for item showing', 'wpshop') . '" class="wpshop_infobulle_marker">?</a>';
169 169
 	}
170 170
 
171
-	public static function wpshop_logo_field () {
171
+	public static function wpshop_logo_field() {
172 172
 		$logo_option = get_option('wpshop_logo');
173 173
 
174
-		$output  = '<a href="#" id="wps-add-logo-picture" class="wps-bton-first-mini-rounded">' .__( 'Upload your logo', 'wpshop' ). '</a><br/>';
175
-		$output .= '<img id="wpshop_logo_thumbnail" src="' .( ( !empty($logo_option) ) ? $logo_option : WPSHOP_DEFAULT_CATEGORY_PICTURE ). '" alt="Logo" style="height : 40px; width : auto; border : 5px solid #E8E8E8; margin-top : 8px;" />';
176
-		$output .= '<input type="hidden" name="wpshop_logo" id="wpshop_logo_field" value="' .$logo_option. '" />';
177
-		$output .= '<br/><a href="#" id="wps-delete-shop-logo" '.( empty($logo_option) ? 'class="wpshopHide"' : '' ) .'>' . __( 'Delete this logo', 'wpshop' ) . '</a>';
174
+		$output  = '<a href="#" id="wps-add-logo-picture" class="wps-bton-first-mini-rounded">' . __('Upload your logo', 'wpshop') . '</a><br/>';
175
+		$output .= '<img id="wpshop_logo_thumbnail" src="' . ((!empty($logo_option)) ? $logo_option : WPSHOP_DEFAULT_CATEGORY_PICTURE) . '" alt="Logo" style="height : 40px; width : auto; border : 5px solid #E8E8E8; margin-top : 8px;" />';
176
+		$output .= '<input type="hidden" name="wpshop_logo" id="wpshop_logo_field" value="' . $logo_option . '" />';
177
+		$output .= '<br/><a href="#" id="wps-delete-shop-logo" ' . (empty($logo_option) ? 'class="wpshopHide"' : '') . '>' . __('Delete this logo', 'wpshop') . '</a>';
178 178
 
179 179
 		echo $output;
180 180
 	}
181 181
 
182
-	public static function wpshop_options_validate_logo ($input) {
182
+	public static function wpshop_options_validate_logo($input) {
183 183
 		return $input;
184 184
 	}
185 185
 
186 186
 	public static function wpshop_options_validate_wpshop_shop_type($input) {
187 187
 		global $current_db_version;
188 188
 
189
-		$current_installation_step = get_option( 'wps-installation-current-step', 1 );
190
-		if ( WPSINSTALLER_STEPS_COUNT <= $current_installation_step || ( !empty( $current_db_version ) && !empty( $current_db_version[ 'db_version' ] ) && ( 51 < $current_db_version[ 'db_version' ] ) ) ) {
189
+		$current_installation_step = get_option('wps-installation-current-step', 1);
190
+		if (WPSINSTALLER_STEPS_COUNT <= $current_installation_step || (!empty($current_db_version) && !empty($current_db_version['db_version']) && (51 < $current_db_version['db_version']))) {
191 191
 			$current_db_version['installation_state'] = 'completed';
192 192
 			update_option('wpshop_db_options', $current_db_version);
193
-			if ( $input == 'sale' ) {
194
-				wpshop_install::wpshop_insert_default_pages( $input );
193
+			if ($input == 'sale') {
194
+				wpshop_install::wpshop_insert_default_pages($input);
195 195
 			}
196 196
 		}
197 197
 		return $input;
Please login to merge, or discard this patch.
includes/librairies/options/options_advanced.class.php 3 patches
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -23,8 +23,8 @@
 block discarded – undo
23 23
 class wpshop_advanced_settings{
24 24
 
25 25
 	/**
26
-	*
27
-	*/
26
+	 *
27
+	 */
28 28
 	function declare_options(){
29 29
 		add_settings_section('wpshop_extra_options', '<span class="dashicons dashicons-carrot"></span>'.__('Advanced configurations', 'wpshop'), array('wpshop_advanced_settings', 'plugin_section_text'), 'wpshop_extra_options');
30 30
 			register_setting('wpshop_options', 'wpshop_extra_options', array('wpshop_advanced_settings', 'validate_options'));
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if (!defined('ABSPATH')) exit;
2 2
 
3 3
 /*	Check if file is include. No direct access possible with file url	*/
4
-if ( !defined( 'WPSHOP_VERSION' ) ) {
5
-	die( __('Access is not allowed by this way', 'wpshop') );
4
+if (!defined('WPSHOP_VERSION')) {
5
+	die(__('Access is not allowed by this way', 'wpshop'));
6 6
 }
7 7
 
8 8
 /**
@@ -20,13 +20,13 @@  discard block
 block discarded – undo
20 20
 * @package wpshop
21 21
 * @subpackage librairies
22 22
 */
23
-class wpshop_advanced_settings{
23
+class wpshop_advanced_settings {
24 24
 
25 25
 	/**
26 26
 	*
27 27
 	*/
28
-	function declare_options(){
29
-		add_settings_section('wpshop_extra_options', '<span class="dashicons dashicons-carrot"></span>'.__('Advanced configurations', 'wpshop'), array('wpshop_advanced_settings', 'plugin_section_text'), 'wpshop_extra_options');
28
+	function declare_options() {
29
+		add_settings_section('wpshop_extra_options', '<span class="dashicons dashicons-carrot"></span>' . __('Advanced configurations', 'wpshop'), array('wpshop_advanced_settings', 'plugin_section_text'), 'wpshop_extra_options');
30 30
 			register_setting('wpshop_options', 'wpshop_extra_options', array('wpshop_advanced_settings', 'validate_options'));
31 31
 			add_settings_field('wpshop_advanced_settings_field', '', array('wpshop_advanced_settings', 'advanced_settings_field'), 'wpshop_extra_options', 'wpshop_extra_options');
32 32
 	}
@@ -36,14 +36,14 @@  discard block
 block discarded – undo
36 36
 		echo __('This options screen allows you to add functionnalities to the plugin by adding some parameters we defined', 'wpshop');
37 37
 	}
38 38
 
39
-	public static function validate_options($input){
39
+	public static function validate_options($input) {
40 40
 		$new_input = array();
41
-		if ( !empty($input['new']) && !empty($input['new']['key']) && !empty($input['new']['value']) ) {
41
+		if (!empty($input['new']) && !empty($input['new']['key']) && !empty($input['new']['value'])) {
42 42
 			$new_input[$input['new']['key']] = $input['new']['value'];
43 43
 		}
44
-		if ( !empty($input['existing']) ) {
45
-			foreach ( $input['existing'] as $extra_params_to_update ) {
46
-				if ( !empty($extra_params_to_update['key']) && !empty($extra_params_to_update['value']) )
44
+		if (!empty($input['existing'])) {
45
+			foreach ($input['existing'] as $extra_params_to_update) {
46
+				if (!empty($extra_params_to_update['key']) && !empty($extra_params_to_update['value']))
47 47
 					$new_input[$extra_params_to_update['key']] = $extra_params_to_update['value'];
48 48
 			}
49 49
 		}
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
 		return $new_input;
52 52
 	}
53 53
 
54
-	public static function advanced_settings_field($input){
54
+	public static function advanced_settings_field($input) {
55 55
 		/*
56 56
 		WPSHOP_DEBUG_MODE_ALLOWED_IP
57 57
 		WPSHOP_DEBUG_MODE
@@ -69,16 +69,16 @@  discard block
 block discarded – undo
69 69
 	<ul>';
70 70
 		$wpshop_advanced_settings = get_option('wpshop_extra_options', array());
71 71
 
72
-		if ( !empty($wpshop_advanced_settings) ) {
73
-			$i=0;
72
+		if (!empty($wpshop_advanced_settings)) {
73
+			$i = 0;
74 74
 
75
-			foreach($wpshop_advanced_settings as $setting_name => $setting_value){
76
-				$advanced_settings_output .= '<li><div class="alignleft wpshop_advanced_options_container" ><p>'.__('Extra parameter key', 'wpshop').'</p>' . wpshop_form::form_input('wpshop_extra_options[existing]['.$i.'][key]', 'wpshop_extra_options_new_key', $setting_name, 'text') . '</div><div class="alignleft wpshop_advanced_options_container" ><p>'.__('Extra parameter value', 'wpshop').'</p>' . wpshop_form::form_input('wpshop_extra_options[existing]['.$i.'][value]', 'wpshop_extra_options_new_value', $setting_value, 'text') . '</div><div class="wpshop_cls" ></div></li>';
75
+			foreach ($wpshop_advanced_settings as $setting_name => $setting_value) {
76
+				$advanced_settings_output .= '<li><div class="alignleft wpshop_advanced_options_container" ><p>' . __('Extra parameter key', 'wpshop') . '</p>' . wpshop_form::form_input('wpshop_extra_options[existing][' . $i . '][key]', 'wpshop_extra_options_new_key', $setting_name, 'text') . '</div><div class="alignleft wpshop_advanced_options_container" ><p>' . __('Extra parameter value', 'wpshop') . '</p>' . wpshop_form::form_input('wpshop_extra_options[existing][' . $i . '][value]', 'wpshop_extra_options_new_value', $setting_value, 'text') . '</div><div class="wpshop_cls" ></div></li>';
77 77
 				$i++;
78 78
 			}
79 79
 		}
80 80
 
81
-		$advanced_settings_output .= '<li><div class="alignleft wpshop_advanced_options_container" ><p>'.__('New extra parameter key', 'wpshop').'</p>' . wpshop_form::form_input('wpshop_extra_options[new][key]', 'wpshop_extra_options_new_key', '', 'text') . '</div><div class="alignleft wpshop_advanced_options_container" ><p>'.__('New extra parameter value', 'wpshop').'</p>' . wpshop_form::form_input('wpshop_extra_options[new][value]', 'wpshop_extra_options_new_value', '', 'text') . '</div><div class="wpshop_cls" ></div></li>
81
+		$advanced_settings_output .= '<li><div class="alignleft wpshop_advanced_options_container" ><p>' . __('New extra parameter key', 'wpshop') . '</p>' . wpshop_form::form_input('wpshop_extra_options[new][key]', 'wpshop_extra_options_new_key', '', 'text') . '</div><div class="alignleft wpshop_advanced_options_container" ><p>' . __('New extra parameter value', 'wpshop') . '</p>' . wpshop_form::form_input('wpshop_extra_options[new][value]', 'wpshop_extra_options_new_value', '', 'text') . '</div><div class="wpshop_cls" ></div></li>
82 82
 	</ul>';
83 83
 
84 84
 		echo $advanced_settings_output;
Please login to merge, or discard this patch.
Braces   +6 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,4 +1,6 @@  discard block
 block discarded – undo
1
-<?php if ( !defined( 'ABSPATH' ) ) exit;
1
+<?php if ( !defined( 'ABSPATH' ) ) {
2
+	exit;
3
+}
2 4
 
3 5
 /*	Check if file is include. No direct access possible with file url	*/
4 6
 if ( !defined( 'WPSHOP_VERSION' ) ) {
@@ -43,8 +45,9 @@  discard block
 block discarded – undo
43 45
 		}
44 46
 		if ( !empty($input['existing']) ) {
45 47
 			foreach ( $input['existing'] as $extra_params_to_update ) {
46
-				if ( !empty($extra_params_to_update['key']) && !empty($extra_params_to_update['value']) )
47
-					$new_input[$extra_params_to_update['key']] = $extra_params_to_update['value'];
48
+				if ( !empty($extra_params_to_update['key']) && !empty($extra_params_to_update['value']) ) {
49
+									$new_input[$extra_params_to_update['key']] = $extra_params_to_update['value'];
50
+				}
48 51
 			}
49 52
 		}
50 53
 
Please login to merge, or discard this patch.