Yannick Warnier 14 years ago
parent
commit
87f1a689e4
100 changed files with 4703 additions and 17986 deletions
  1. 9 0
      documentation/changelog.html
  2. 33 3
      main/document/document.inc.php
  3. 26 8
      main/document/document.php
  4. 4 0
      main/inc/lib/fckeditor/toolbars/default/wiki.php
  5. 4 0
      main/inc/lib/fckeditor/toolbars/default/wiki_student.php
  6. 4 0
      main/inc/lib/fckeditor/toolbars/extended/wiki.php
  7. 4 0
      main/inc/lib/fckeditor/toolbars/extended/wiki_student.php
  8. 0 165
      main/inc/lib/html2pdf/_LGPL.txt
  9. 0 7
      main/inc/lib/html2pdf/_fpdf/font/courier.php
  10. 0 15
      main/inc/lib/html2pdf/_fpdf/font/helvetica.php
  11. 0 15
      main/inc/lib/html2pdf/_fpdf/font/helveticab.php
  12. 0 15
      main/inc/lib/html2pdf/_fpdf/font/helveticabi.php
  13. 0 15
      main/inc/lib/html2pdf/_fpdf/font/helveticai.php
  14. 0 0
      main/inc/lib/html2pdf/_fpdf/font/index.html
  15. 0 251
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1250.map
  16. 0 255
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1251.map
  17. 0 251
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1252.map
  18. 0 239
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1253.map
  19. 0 249
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1254.map
  20. 0 233
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1255.map
  21. 0 244
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1257.map
  22. 0 247
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp1258.map
  23. 0 225
      main/inc/lib/html2pdf/_fpdf/font/makefont/cp874.map
  24. 0 0
      main/inc/lib/html2pdf/_fpdf/font/makefont/index.html
  25. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-1.map
  26. 0 248
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-11.map
  27. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-15.map
  28. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-16.map
  29. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-2.map
  30. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-4.map
  31. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-5.map
  32. 0 250
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-7.map
  33. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-9.map
  34. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/koi8-r.map
  35. 0 256
      main/inc/lib/html2pdf/_fpdf/font/makefont/koi8-u.map
  36. 0 419
      main/inc/lib/html2pdf/_fpdf/font/makefont/makefont.php
  37. 0 15
      main/inc/lib/html2pdf/_fpdf/font/symbol.php
  38. 0 15
      main/inc/lib/html2pdf/_fpdf/font/times.php
  39. 0 15
      main/inc/lib/html2pdf/_fpdf/font/timesb.php
  40. 0 15
      main/inc/lib/html2pdf/_fpdf/font/timesbi.php
  41. 0 15
      main/inc/lib/html2pdf/_fpdf/font/timesi.php
  42. 0 15
      main/inc/lib/html2pdf/_fpdf/font/zapfdingbats.php
  43. 0 21
      main/inc/lib/html2pdf/_fpdf/fpdf.css
  44. 0 1736
      main/inc/lib/html2pdf/_fpdf/fpdf.php
  45. 0 0
      main/inc/lib/html2pdf/_fpdf/index.html
  46. 0 6
      main/inc/lib/html2pdf/_fpdf/license.txt
  47. 0 237
      main/inc/lib/html2pdf/_mypdf/00_fpdf_codebar.class.php
  48. 0 179
      main/inc/lib/html2pdf/_mypdf/01_fpdf_bookmark.class.php
  49. 0 227
      main/inc/lib/html2pdf/_mypdf/02_fpdf_formulaire.class.php
  50. 0 326
      main/inc/lib/html2pdf/_mypdf/03_fpdf_alpha.class.php
  51. 0 228
      main/inc/lib/html2pdf/_mypdf/99_fpdf_protection.class.php
  52. 0 0
      main/inc/lib/html2pdf/_mypdf/index.html
  53. 0 502
      main/inc/lib/html2pdf/_mypdf/mypdf.class.php
  54. 0 4999
      main/inc/lib/html2pdf/html2pdf.class.php
  55. 0 0
      main/inc/lib/html2pdf/index.html
  56. 0 19
      main/inc/lib/html2pdf/langues/ca.txt
  57. 0 19
      main/inc/lib/html2pdf/langues/da.txt
  58. 0 19
      main/inc/lib/html2pdf/langues/de.txt
  59. 0 19
      main/inc/lib/html2pdf/langues/en.txt
  60. 0 19
      main/inc/lib/html2pdf/langues/es.txt
  61. 0 19
      main/inc/lib/html2pdf/langues/fr.txt
  62. 0 0
      main/inc/lib/html2pdf/langues/index.html
  63. 0 19
      main/inc/lib/html2pdf/langues/it.txt
  64. 0 19
      main/inc/lib/html2pdf/langues/nl.txt
  65. 0 19
      main/inc/lib/html2pdf/langues/pt.txt
  66. 0 19
      main/inc/lib/html2pdf/langues/tr.txt
  67. 0 440
      main/inc/lib/html2pdf/parsingHTML.class.php
  68. 0 47
      main/inc/lib/html2pdf/qrcode/qrcode.class.php
  69. 0 1536
      main/inc/lib/html2pdf/styleHTML.class.php
  70. 428 19
      main/inc/lib/mpdf/CHANGELOG.txt
  71. 0 389
      main/inc/lib/mpdf/README_4_2.txt
  72. 2019 0
      main/inc/lib/mpdf/classes/svg.php
  73. 31 10
      main/inc/lib/mpdf/classes/t1asm.php
  74. 7 7
      main/inc/lib/mpdf/compress.php
  75. 53 25
      main/inc/lib/mpdf/config.php
  76. 6 0
      main/inc/lib/mpdf/iccprofiles/index.html
  77. BIN
      main/inc/lib/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc
  78. 45 4
      main/inc/lib/mpdf/includes/functions.php
  79. 177 81
      main/inc/lib/mpdf/makefonts/makefonts.php
  80. 419 193
      main/inc/lib/mpdf/mpdf.php
  81. 98 0
      main/inc/lib/mpdf/mpdfi/filters/FilterASCII85.php
  82. 154 0
      main/inc/lib/mpdf/mpdfi/filters/FilterLZW.php
  83. 6 0
      main/inc/lib/mpdf/mpdfi/filters/index.html
  84. 47 46
      main/inc/lib/mpdf/mpdfi/fpdi_pdf_parser.php
  85. 0 723
      main/inc/lib/mpdf/mpdfi/mpdfi.php
  86. 11 11
      main/inc/lib/mpdf/progress/out.php
  87. BIN
      main/inc/lib/mpdf/unifont/garuda.ctg.z
  88. 18 18
      main/inc/lib/mpdf/unifont/garuda.php
  89. 354 0
      main/inc/lib/mpdf/unifont/garuda.uni2gn.php
  90. BIN
      main/inc/lib/mpdf/unifont/garuda.z
  91. BIN
      main/inc/lib/mpdf/unifont/garudab.ctg.z
  92. 10 10
      main/inc/lib/mpdf/unifont/garudab.php
  93. 354 0
      main/inc/lib/mpdf/unifont/garudab.uni2gn.php
  94. BIN
      main/inc/lib/mpdf/unifont/garudab.z
  95. BIN
      main/inc/lib/mpdf/unifont/garudabi.ctg.z
  96. 10 10
      main/inc/lib/mpdf/unifont/garudabi.php
  97. 354 0
      main/inc/lib/mpdf/unifont/garudabi.uni2gn.php
  98. BIN
      main/inc/lib/mpdf/unifont/garudabi.z
  99. BIN
      main/inc/lib/mpdf/unifont/garudai.ctg.z
  100. 18 18
      main/inc/lib/mpdf/unifont/garudai.php

+ 9 - 0
documentation/changelog.html

@@ -19,6 +19,15 @@
 <div id="outerframe">
 <div id="main">
 
+<h1>Dokeos 1.8.7.1 - </h1>
+<h3>New Features</h3>
+
+<h3>Debugging</h3>
+
+<h3>Deprecated files</h3>
+<ul>
+  <li>html2pdf library (replaced by mpdf libray)</li>
+</ul>
 <h1>Chamilo 1.8.7 - Istanbul</h1>
 <h3>Release notes - summary</h3>
 <p>Chamilo 1.8.7 is a major&nbsp;release including a lot of new features, mostly focused on social network, the handling of sessions (which will help many educational institutions, public or private, to manage their contents in a more flexible way) and visual style, and a few important bugfixes. It lays the first stable stone in the Chamilo software project. This version is the first one to <b>highly recommend PHP 5.2</b> or superior, and <b>require PHP 5.1</b> or higher.<br />Also, this version of Chamilo will automatically convert all your data to UTF-8, which will make it more difficult to migrate from Dokeos versions higher than 1.8.6.1</p>

+ 33 - 3
main/document/document.inc.php

@@ -162,7 +162,20 @@ function create_document_link($www, $title, $path, $filetype, $size, $visibility
 	if (!$show_as_icon) {
 		if ($filetype == 'folder') {
 			if (api_is_allowed_to_edit() || api_is_platform_admin() || api_get_setting('students_download_folders') == 'true') {
-				$force_download_html = ($size == 0) ? '' : '<a href="'.$forcedownload_link.'" style="float:right"'.$prevent_multiple_click.'>'.Display::return_icon($forcedownload_icon, get_lang('Download'), array('height'=>'16', 'width' => '16')).'</a>';
+				
+				//filter when I am into shared folder, I can show for donwload only my shared folder
+				if(is_shared_folder($_GET['curdirpath']))
+				{							
+					$my_preg_folder="/shared_folder\/sf_user_".api_get_user_id()."$/";
+					if (preg_match($my_preg_folder, urldecode($forcedownload_link))|| api_is_allowed_to_edit() || api_is_platform_admin())
+					{			
+					  $force_download_html = ($size == 0) ? '' : '<a href="'.$forcedownload_link.'" style="float:right"'.$prevent_multiple_click.'>'.Display::return_icon($forcedownload_icon, get_lang('Download'), array('height'=>'16', 'width' => '16')).'</a>';
+					}
+				}
+				elseif(!preg_match('/shared_folder/', urldecode($forcedownload_link)) || api_is_allowed_to_edit() || api_is_platform_admin())
+				{
+					$force_download_html = ($size == 0) ? '' : '<a href="'.$forcedownload_link.'" style="float:right"'.$prevent_multiple_click.'>'.Display::return_icon($forcedownload_icon, get_lang('Download'), array('height'=>'16', 'width' => '16')).'</a>';
+				}
 			}
 		} else {
 			$force_download_html = ($size==0)?'':'<a href="'.$forcedownload_link.'" style="float:right"'.$prevent_multiple_click.'>'.Display::return_icon($forcedownload_icon, get_lang('Download'), array('height'=>'16', 'width' => '16')).'</a>';
@@ -468,10 +481,27 @@ function create_dir_form() {
 	return $new_folder_text;
 }
 
+
+/**
+ * Checks whether the user is in shared folder
+ * @return return bool Return true when user is in shared folder
+ */
+function is_shared_folder($curdirpath) {
+	return Security::remove_XSS($curdirpath) == '/shared_folder';
+}
+
+/**
+ * Checks whether the user is in any user shared folder
+ * @return return bool Return true when user is in any user shared folder
+ */
+function is_any_user_shared_folder($path) {
+	return preg_match('/shared_folder\/sf_user_/', Security::remove_XSS($path));	
+}	
+
 /**
  * Checks whether the user is in his/her shared folder
- * @return return bool Return true when user is in his shared folder
+ * @return return bool Return true when user is in his user shared folder
  */
 function is_my_shared_folder($user_id, $path) {
 	return Security::remove_XSS($path) == '/shared_folder/sf_user_'.$user_id;
-}
+}

+ 26 - 8
main/document/document.php

@@ -275,9 +275,24 @@ if (isset($_GET['action']) && $_GET['action'] == 'download') {
 	exit;
 }
 
-// Download of an completed folder
-if (isset($_GET['action']) && $_GET['action'] == 'downloadfolder' && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) {
-	require 'downloadfolder.inc.php';
+
+// Download a folder
+if (isset($_GET['action']) && $_GET['action'] == 'downloadfolder' && $curdirpath!='/' && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) {
+	
+	//filter when I am into shared folder, I can donwload only my shared folder
+	
+	if(is_any_user_shared_folder($_GET['path']))
+	{
+		if(is_my_shared_folder($_user['user_id'], $_GET['path']) || api_is_allowed_to_edit() || api_is_platform_admin())
+		{
+		  require 'downloadfolder.inc.php';
+		}
+	}
+	else
+	{
+		require 'downloadfolder.inc.php';
+	}
+	
 }
 
 // Slideshow inititalisation
@@ -772,13 +787,16 @@ if ($is_allowed_to_edit || $group_member_with_upload_rights || is_my_shared_fold
 
 if (!is_null($docs_and_folders)) {
 
-	// Download zipped folder
+	// Show download zipped folder icon
 	global $total_size;
 	if (!$is_certificate_mode && $total_size != 0 && (api_get_setting('students_download_folders') == 'true' || api_is_allowed_to_edit() || api_is_platform_admin())) {
-?>
-	<a href="<?php echo api_get_self(); ?>?<?php echo api_get_cidreq(); ?>&action=downloadfolder&path=<?php echo $curdirpathurl; ?>">
-		<?php Display::display_icon('zip_save.gif', get_lang('Save').' (ZIP)'); echo get_lang('Save').' (ZIP)'; ?></a>&nbsp;
-<?php
+		
+		//don't show icon into shared folder, and don´t show into main path (root)
+		if (!is_shared_folder($curdirpath) && $curdirpath!='/' || api_is_allowed_to_edit() || api_is_platform_admin())
+		{
+	    	echo '<a href="'.api_get_self().'?'.api_get_cidreq().'&action=downloadfolder&path='.$curdirpathurl.'">'.Display::display_icon('zip_save.gif', get_lang('Save').' (ZIP)'). get_lang('Save').' (ZIP)</a>&nbsp';
+		}
+
 	}
 }
 

+ 4 - 0
main/inc/lib/fckeditor/toolbars/default/wiki.php

@@ -44,6 +44,10 @@ $config['ToolbarSets']['Maximized'] = array(
 // Possible values: true , false
 //$config['BlockCopyPaste'] = false;
 
+// A setting for force paste as plain text.
+// Possible values: true , false
+$config['ForcePasteAsPlainText'] = true;
+
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '100%';

+ 4 - 0
main/inc/lib/fckeditor/toolbars/default/wiki_student.php

@@ -44,6 +44,10 @@ $config['ToolbarSets']['Maximized'] = array(
 // Possible values: true , false
 //$config['BlockCopyPaste'] = true;
 
+// A setting for force paste as plain text.
+// Possible values: true , false
+$config['ForcePasteAsPlainText'] = true;
+
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '100%';

+ 4 - 0
main/inc/lib/fckeditor/toolbars/extended/wiki.php

@@ -56,6 +56,10 @@ $config['ToolbarSets']['Maximized'] = array(
 // Possible values: true , false
 //$config['BlockCopyPaste'] = false;
 
+// A setting for force paste as plain text.
+// Possible values: true , false
+$config['ForcePasteAsPlainText'] = true;
+
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '100%';

+ 4 - 0
main/inc/lib/fckeditor/toolbars/extended/wiki_student.php

@@ -56,6 +56,10 @@ $config['ToolbarSets']['Maximized'] = array(
 // Possible values: true , false
 //$config['BlockCopyPaste'] = true;
 
+// A setting for force paste as plain text.
+// Possible values: true , false
+$config['ForcePasteAsPlainText'] = true;
+
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '100%';

+ 0 - 165
main/inc/lib/html2pdf/_LGPL.txt

@@ -1,165 +0,0 @@
-		   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
-  Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.

+ 0 - 7
main/inc/lib/html2pdf/_fpdf/font/courier.php

@@ -1,7 +0,0 @@
-<?php
-for($i=0;$i<=255;$i++)
-	$fpdf_charwidths['courier'][chr($i)]=600;
-$fpdf_charwidths['courierB']=$fpdf_charwidths['courier'];
-$fpdf_charwidths['courierI']=$fpdf_charwidths['courier'];
-$fpdf_charwidths['courierBI']=$fpdf_charwidths['courier'];
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/helvetica.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['helvetica']=array(
-	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
-	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
-	'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-	'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
-	'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
-	chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-	chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
-	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
-	chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/helveticab.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['helveticaB']=array(
-	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
-	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
-	'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-	'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
-	'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
-	chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-	chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
-	chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/helveticabi.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['helveticaBI']=array(
-	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
-	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
-	'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-	'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
-	'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
-	chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-	chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
-	chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/helveticai.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['helveticaI']=array(
-	chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-	chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
-	','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
-	'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-	'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
-	'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
-	chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-	chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-	chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
-	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
-	chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
-?>

+ 0 - 0
main/inc/lib/html2pdf/_fpdf/font/index.html


+ 0 - 251
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1250.map

@@ -1,251 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!89 U+2030 perthousand
-!8A U+0160 Scaron
-!8B U+2039 guilsinglleft
-!8C U+015A Sacute
-!8D U+0164 Tcaron
-!8E U+017D Zcaron
-!8F U+0179 Zacute
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9A U+0161 scaron
-!9B U+203A guilsinglright
-!9C U+015B sacute
-!9D U+0165 tcaron
-!9E U+017E zcaron
-!9F U+017A zacute
-!A0 U+00A0 space
-!A1 U+02C7 caron
-!A2 U+02D8 breve
-!A3 U+0141 Lslash
-!A4 U+00A4 currency
-!A5 U+0104 Aogonek
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+015E Scedilla
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+017B Zdotaccent
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+02DB ogonek
-!B3 U+0142 lslash
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+0105 aogonek
-!BA U+015F scedilla
-!BB U+00BB guillemotright
-!BC U+013D Lcaron
-!BD U+02DD hungarumlaut
-!BE U+013E lcaron
-!BF U+017C zdotaccent
-!C0 U+0154 Racute
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+0139 Lacute
-!C6 U+0106 Cacute
-!C7 U+00C7 Ccedilla
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0118 Eogonek
-!CB U+00CB Edieresis
-!CC U+011A Ecaron
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+010E Dcaron
-!D0 U+0110 Dcroat
-!D1 U+0143 Nacute
-!D2 U+0147 Ncaron
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+0150 Ohungarumlaut
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+0158 Rcaron
-!D9 U+016E Uring
-!DA U+00DA Uacute
-!DB U+0170 Uhungarumlaut
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+0162 Tcommaaccent
-!DF U+00DF germandbls
-!E0 U+0155 racute
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+013A lacute
-!E6 U+0107 cacute
-!E7 U+00E7 ccedilla
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+0119 eogonek
-!EB U+00EB edieresis
-!EC U+011B ecaron
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+010F dcaron
-!F0 U+0111 dcroat
-!F1 U+0144 nacute
-!F2 U+0148 ncaron
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+0151 ohungarumlaut
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+0159 rcaron
-!F9 U+016F uring
-!FA U+00FA uacute
-!FB U+0171 uhungarumlaut
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+0163 tcommaaccent
-!FF U+02D9 dotaccent

+ 0 - 255
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1251.map

@@ -1,255 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0402 afii10051
-!81 U+0403 afii10052
-!82 U+201A quotesinglbase
-!83 U+0453 afii10100
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+20AC Euro
-!89 U+2030 perthousand
-!8A U+0409 afii10058
-!8B U+2039 guilsinglleft
-!8C U+040A afii10059
-!8D U+040C afii10061
-!8E U+040B afii10060
-!8F U+040F afii10145
-!90 U+0452 afii10099
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9A U+0459 afii10106
-!9B U+203A guilsinglright
-!9C U+045A afii10107
-!9D U+045C afii10109
-!9E U+045B afii10108
-!9F U+045F afii10193
-!A0 U+00A0 space
-!A1 U+040E afii10062
-!A2 U+045E afii10110
-!A3 U+0408 afii10057
-!A4 U+00A4 currency
-!A5 U+0490 afii10050
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+0401 afii10023
-!A9 U+00A9 copyright
-!AA U+0404 afii10053
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+0407 afii10056
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+0406 afii10055
-!B3 U+0456 afii10103
-!B4 U+0491 afii10098
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+0451 afii10071
-!B9 U+2116 afii61352
-!BA U+0454 afii10101
-!BB U+00BB guillemotright
-!BC U+0458 afii10105
-!BD U+0405 afii10054
-!BE U+0455 afii10102
-!BF U+0457 afii10104
-!C0 U+0410 afii10017
-!C1 U+0411 afii10018
-!C2 U+0412 afii10019
-!C3 U+0413 afii10020
-!C4 U+0414 afii10021
-!C5 U+0415 afii10022
-!C6 U+0416 afii10024
-!C7 U+0417 afii10025
-!C8 U+0418 afii10026
-!C9 U+0419 afii10027
-!CA U+041A afii10028
-!CB U+041B afii10029
-!CC U+041C afii10030
-!CD U+041D afii10031
-!CE U+041E afii10032
-!CF U+041F afii10033
-!D0 U+0420 afii10034
-!D1 U+0421 afii10035
-!D2 U+0422 afii10036
-!D3 U+0423 afii10037
-!D4 U+0424 afii10038
-!D5 U+0425 afii10039
-!D6 U+0426 afii10040
-!D7 U+0427 afii10041
-!D8 U+0428 afii10042
-!D9 U+0429 afii10043
-!DA U+042A afii10044
-!DB U+042B afii10045
-!DC U+042C afii10046
-!DD U+042D afii10047
-!DE U+042E afii10048
-!DF U+042F afii10049
-!E0 U+0430 afii10065
-!E1 U+0431 afii10066
-!E2 U+0432 afii10067
-!E3 U+0433 afii10068
-!E4 U+0434 afii10069
-!E5 U+0435 afii10070
-!E6 U+0436 afii10072
-!E7 U+0437 afii10073
-!E8 U+0438 afii10074
-!E9 U+0439 afii10075
-!EA U+043A afii10076
-!EB U+043B afii10077
-!EC U+043C afii10078
-!ED U+043D afii10079
-!EE U+043E afii10080
-!EF U+043F afii10081
-!F0 U+0440 afii10082
-!F1 U+0441 afii10083
-!F2 U+0442 afii10084
-!F3 U+0443 afii10085
-!F4 U+0444 afii10086
-!F5 U+0445 afii10087
-!F6 U+0446 afii10088
-!F7 U+0447 afii10089
-!F8 U+0448 afii10090
-!F9 U+0449 afii10091
-!FA U+044A afii10092
-!FB U+044B afii10093
-!FC U+044C afii10094
-!FD U+044D afii10095
-!FE U+044E afii10096
-!FF U+044F afii10097

+ 0 - 251
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1252.map

@@ -1,251 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8A U+0160 Scaron
-!8B U+2039 guilsinglleft
-!8C U+0152 OE
-!8E U+017D Zcaron
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9A U+0161 scaron
-!9B U+203A guilsinglright
-!9C U+0153 oe
-!9E U+017E zcaron
-!9F U+0178 Ydieresis
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+00D0 Eth
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+00DE Thorn
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+00F0 eth
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+00FE thorn
-!FF U+00FF ydieresis

+ 0 - 239
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1253.map

@@ -1,239 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!A0 U+00A0 space
-!A1 U+0385 dieresistonos
-!A2 U+0386 Alphatonos
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+2015 afii00208
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+0384 tonos
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+0388 Epsilontonos
-!B9 U+0389 Etatonos
-!BA U+038A Iotatonos
-!BB U+00BB guillemotright
-!BC U+038C Omicrontonos
-!BD U+00BD onehalf
-!BE U+038E Upsilontonos
-!BF U+038F Omegatonos
-!C0 U+0390 iotadieresistonos
-!C1 U+0391 Alpha
-!C2 U+0392 Beta
-!C3 U+0393 Gamma
-!C4 U+0394 Delta
-!C5 U+0395 Epsilon
-!C6 U+0396 Zeta
-!C7 U+0397 Eta
-!C8 U+0398 Theta
-!C9 U+0399 Iota
-!CA U+039A Kappa
-!CB U+039B Lambda
-!CC U+039C Mu
-!CD U+039D Nu
-!CE U+039E Xi
-!CF U+039F Omicron
-!D0 U+03A0 Pi
-!D1 U+03A1 Rho
-!D3 U+03A3 Sigma
-!D4 U+03A4 Tau
-!D5 U+03A5 Upsilon
-!D6 U+03A6 Phi
-!D7 U+03A7 Chi
-!D8 U+03A8 Psi
-!D9 U+03A9 Omega
-!DA U+03AA Iotadieresis
-!DB U+03AB Upsilondieresis
-!DC U+03AC alphatonos
-!DD U+03AD epsilontonos
-!DE U+03AE etatonos
-!DF U+03AF iotatonos
-!E0 U+03B0 upsilondieresistonos
-!E1 U+03B1 alpha
-!E2 U+03B2 beta
-!E3 U+03B3 gamma
-!E4 U+03B4 delta
-!E5 U+03B5 epsilon
-!E6 U+03B6 zeta
-!E7 U+03B7 eta
-!E8 U+03B8 theta
-!E9 U+03B9 iota
-!EA U+03BA kappa
-!EB U+03BB lambda
-!EC U+03BC mu
-!ED U+03BD nu
-!EE U+03BE xi
-!EF U+03BF omicron
-!F0 U+03C0 pi
-!F1 U+03C1 rho
-!F2 U+03C2 sigma1
-!F3 U+03C3 sigma
-!F4 U+03C4 tau
-!F5 U+03C5 upsilon
-!F6 U+03C6 phi
-!F7 U+03C7 chi
-!F8 U+03C8 psi
-!F9 U+03C9 omega
-!FA U+03CA iotadieresis
-!FB U+03CB upsilondieresis
-!FC U+03CC omicrontonos
-!FD U+03CD upsilontonos
-!FE U+03CE omegatonos

+ 0 - 249
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1254.map

@@ -1,249 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8A U+0160 Scaron
-!8B U+2039 guilsinglleft
-!8C U+0152 OE
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9A U+0161 scaron
-!9B U+203A guilsinglright
-!9C U+0153 oe
-!9F U+0178 Ydieresis
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+011E Gbreve
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0130 Idotaccent
-!DE U+015E Scedilla
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+011F gbreve
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0131 dotlessi
-!FE U+015F scedilla
-!FF U+00FF ydieresis

+ 0 - 233
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1255.map

@@ -1,233 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+20AA afii57636
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00D7 multiply
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD sfthyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 middot
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00F7 divide
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+05B0 afii57799
-!C1 U+05B1 afii57801
-!C2 U+05B2 afii57800
-!C3 U+05B3 afii57802
-!C4 U+05B4 afii57793
-!C5 U+05B5 afii57794
-!C6 U+05B6 afii57795
-!C7 U+05B7 afii57798
-!C8 U+05B8 afii57797
-!C9 U+05B9 afii57806
-!CB U+05BB afii57796
-!CC U+05BC afii57807
-!CD U+05BD afii57839
-!CE U+05BE afii57645
-!CF U+05BF afii57841
-!D0 U+05C0 afii57842
-!D1 U+05C1 afii57804
-!D2 U+05C2 afii57803
-!D3 U+05C3 afii57658
-!D4 U+05F0 afii57716
-!D5 U+05F1 afii57717
-!D6 U+05F2 afii57718
-!D7 U+05F3 gereshhebrew
-!D8 U+05F4 gershayimhebrew
-!E0 U+05D0 afii57664
-!E1 U+05D1 afii57665
-!E2 U+05D2 afii57666
-!E3 U+05D3 afii57667
-!E4 U+05D4 afii57668
-!E5 U+05D5 afii57669
-!E6 U+05D6 afii57670
-!E7 U+05D7 afii57671
-!E8 U+05D8 afii57672
-!E9 U+05D9 afii57673
-!EA U+05DA afii57674
-!EB U+05DB afii57675
-!EC U+05DC afii57676
-!ED U+05DD afii57677
-!EE U+05DE afii57678
-!EF U+05DF afii57679
-!F0 U+05E0 afii57680
-!F1 U+05E1 afii57681
-!F2 U+05E2 afii57682
-!F3 U+05E3 afii57683
-!F4 U+05E4 afii57684
-!F5 U+05E5 afii57685
-!F6 U+05E6 afii57686
-!F7 U+05E7 afii57687
-!F8 U+05E8 afii57688
-!F9 U+05E9 afii57689
-!FA U+05EA afii57690
-!FD U+200E afii299
-!FE U+200F afii300

+ 0 - 244
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1257.map

@@ -1,244 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!8D U+00A8 dieresis
-!8E U+02C7 caron
-!8F U+00B8 cedilla
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!9D U+00AF macron
-!9E U+02DB ogonek
-!A0 U+00A0 space
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00D8 Oslash
-!A9 U+00A9 copyright
-!AA U+0156 Rcommaaccent
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00C6 AE
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00F8 oslash
-!B9 U+00B9 onesuperior
-!BA U+0157 rcommaaccent
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00E6 ae
-!C0 U+0104 Aogonek
-!C1 U+012E Iogonek
-!C2 U+0100 Amacron
-!C3 U+0106 Cacute
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+0118 Eogonek
-!C7 U+0112 Emacron
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0179 Zacute
-!CB U+0116 Edotaccent
-!CC U+0122 Gcommaaccent
-!CD U+0136 Kcommaaccent
-!CE U+012A Imacron
-!CF U+013B Lcommaaccent
-!D0 U+0160 Scaron
-!D1 U+0143 Nacute
-!D2 U+0145 Ncommaaccent
-!D3 U+00D3 Oacute
-!D4 U+014C Omacron
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+0172 Uogonek
-!D9 U+0141 Lslash
-!DA U+015A Sacute
-!DB U+016A Umacron
-!DC U+00DC Udieresis
-!DD U+017B Zdotaccent
-!DE U+017D Zcaron
-!DF U+00DF germandbls
-!E0 U+0105 aogonek
-!E1 U+012F iogonek
-!E2 U+0101 amacron
-!E3 U+0107 cacute
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+0119 eogonek
-!E7 U+0113 emacron
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+017A zacute
-!EB U+0117 edotaccent
-!EC U+0123 gcommaaccent
-!ED U+0137 kcommaaccent
-!EE U+012B imacron
-!EF U+013C lcommaaccent
-!F0 U+0161 scaron
-!F1 U+0144 nacute
-!F2 U+0146 ncommaaccent
-!F3 U+00F3 oacute
-!F4 U+014D omacron
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+0173 uogonek
-!F9 U+0142 lslash
-!FA U+015B sacute
-!FB U+016B umacron
-!FC U+00FC udieresis
-!FD U+017C zdotaccent
-!FE U+017E zcaron
-!FF U+02D9 dotaccent

+ 0 - 247
main/inc/lib/html2pdf/_fpdf/font/makefont/cp1258.map

@@ -1,247 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!82 U+201A quotesinglbase
-!83 U+0192 florin
-!84 U+201E quotedblbase
-!85 U+2026 ellipsis
-!86 U+2020 dagger
-!87 U+2021 daggerdbl
-!88 U+02C6 circumflex
-!89 U+2030 perthousand
-!8B U+2039 guilsinglleft
-!8C U+0152 OE
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!98 U+02DC tilde
-!99 U+2122 trademark
-!9B U+203A guilsinglright
-!9C U+0153 oe
-!9F U+0178 Ydieresis
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+0300 gravecomb
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+0110 Dcroat
-!D1 U+00D1 Ntilde
-!D2 U+0309 hookabovecomb
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+01A0 Ohorn
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+01AF Uhorn
-!DE U+0303 tildecomb
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+0301 acutecomb
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+0111 dcroat
-!F1 U+00F1 ntilde
-!F2 U+0323 dotbelowcomb
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+01A1 ohorn
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+01B0 uhorn
-!FE U+20AB dong
-!FF U+00FF ydieresis

+ 0 - 225
main/inc/lib/html2pdf/_fpdf/font/makefont/cp874.map

@@ -1,225 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+20AC Euro
-!85 U+2026 ellipsis
-!91 U+2018 quoteleft
-!92 U+2019 quoteright
-!93 U+201C quotedblleft
-!94 U+201D quotedblright
-!95 U+2022 bullet
-!96 U+2013 endash
-!97 U+2014 emdash
-!A0 U+00A0 space
-!A1 U+0E01 kokaithai
-!A2 U+0E02 khokhaithai
-!A3 U+0E03 khokhuatthai
-!A4 U+0E04 khokhwaithai
-!A5 U+0E05 khokhonthai
-!A6 U+0E06 khorakhangthai
-!A7 U+0E07 ngonguthai
-!A8 U+0E08 chochanthai
-!A9 U+0E09 chochingthai
-!AA U+0E0A chochangthai
-!AB U+0E0B sosothai
-!AC U+0E0C chochoethai
-!AD U+0E0D yoyingthai
-!AE U+0E0E dochadathai
-!AF U+0E0F topatakthai
-!B0 U+0E10 thothanthai
-!B1 U+0E11 thonangmonthothai
-!B2 U+0E12 thophuthaothai
-!B3 U+0E13 nonenthai
-!B4 U+0E14 dodekthai
-!B5 U+0E15 totaothai
-!B6 U+0E16 thothungthai
-!B7 U+0E17 thothahanthai
-!B8 U+0E18 thothongthai
-!B9 U+0E19 nonuthai
-!BA U+0E1A bobaimaithai
-!BB U+0E1B poplathai
-!BC U+0E1C phophungthai
-!BD U+0E1D fofathai
-!BE U+0E1E phophanthai
-!BF U+0E1F fofanthai
-!C0 U+0E20 phosamphaothai
-!C1 U+0E21 momathai
-!C2 U+0E22 yoyakthai
-!C3 U+0E23 roruathai
-!C4 U+0E24 ruthai
-!C5 U+0E25 lolingthai
-!C6 U+0E26 luthai
-!C7 U+0E27 wowaenthai
-!C8 U+0E28 sosalathai
-!C9 U+0E29 sorusithai
-!CA U+0E2A sosuathai
-!CB U+0E2B hohipthai
-!CC U+0E2C lochulathai
-!CD U+0E2D oangthai
-!CE U+0E2E honokhukthai
-!CF U+0E2F paiyannoithai
-!D0 U+0E30 saraathai
-!D1 U+0E31 maihanakatthai
-!D2 U+0E32 saraaathai
-!D3 U+0E33 saraamthai
-!D4 U+0E34 saraithai
-!D5 U+0E35 saraiithai
-!D6 U+0E36 sarauethai
-!D7 U+0E37 saraueethai
-!D8 U+0E38 sarauthai
-!D9 U+0E39 sarauuthai
-!DA U+0E3A phinthuthai
-!DF U+0E3F bahtthai
-!E0 U+0E40 saraethai
-!E1 U+0E41 saraaethai
-!E2 U+0E42 saraothai
-!E3 U+0E43 saraaimaimuanthai
-!E4 U+0E44 saraaimaimalaithai
-!E5 U+0E45 lakkhangyaothai
-!E6 U+0E46 maiyamokthai
-!E7 U+0E47 maitaikhuthai
-!E8 U+0E48 maiekthai
-!E9 U+0E49 maithothai
-!EA U+0E4A maitrithai
-!EB U+0E4B maichattawathai
-!EC U+0E4C thanthakhatthai
-!ED U+0E4D nikhahitthai
-!EE U+0E4E yamakkanthai
-!EF U+0E4F fongmanthai
-!F0 U+0E50 zerothai
-!F1 U+0E51 onethai
-!F2 U+0E52 twothai
-!F3 U+0E53 threethai
-!F4 U+0E54 fourthai
-!F5 U+0E55 fivethai
-!F6 U+0E56 sixthai
-!F7 U+0E57 seventhai
-!F8 U+0E58 eightthai
-!F9 U+0E59 ninethai
-!FA U+0E5A angkhankhuthai
-!FB U+0E5B khomutthai

+ 0 - 0
main/inc/lib/html2pdf/_fpdf/font/makefont/index.html


+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-1.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+00D0 Eth
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+00DE Thorn
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+00F0 eth
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+00FE thorn
-!FF U+00FF ydieresis

+ 0 - 248
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-11.map

@@ -1,248 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0E01 kokaithai
-!A2 U+0E02 khokhaithai
-!A3 U+0E03 khokhuatthai
-!A4 U+0E04 khokhwaithai
-!A5 U+0E05 khokhonthai
-!A6 U+0E06 khorakhangthai
-!A7 U+0E07 ngonguthai
-!A8 U+0E08 chochanthai
-!A9 U+0E09 chochingthai
-!AA U+0E0A chochangthai
-!AB U+0E0B sosothai
-!AC U+0E0C chochoethai
-!AD U+0E0D yoyingthai
-!AE U+0E0E dochadathai
-!AF U+0E0F topatakthai
-!B0 U+0E10 thothanthai
-!B1 U+0E11 thonangmonthothai
-!B2 U+0E12 thophuthaothai
-!B3 U+0E13 nonenthai
-!B4 U+0E14 dodekthai
-!B5 U+0E15 totaothai
-!B6 U+0E16 thothungthai
-!B7 U+0E17 thothahanthai
-!B8 U+0E18 thothongthai
-!B9 U+0E19 nonuthai
-!BA U+0E1A bobaimaithai
-!BB U+0E1B poplathai
-!BC U+0E1C phophungthai
-!BD U+0E1D fofathai
-!BE U+0E1E phophanthai
-!BF U+0E1F fofanthai
-!C0 U+0E20 phosamphaothai
-!C1 U+0E21 momathai
-!C2 U+0E22 yoyakthai
-!C3 U+0E23 roruathai
-!C4 U+0E24 ruthai
-!C5 U+0E25 lolingthai
-!C6 U+0E26 luthai
-!C7 U+0E27 wowaenthai
-!C8 U+0E28 sosalathai
-!C9 U+0E29 sorusithai
-!CA U+0E2A sosuathai
-!CB U+0E2B hohipthai
-!CC U+0E2C lochulathai
-!CD U+0E2D oangthai
-!CE U+0E2E honokhukthai
-!CF U+0E2F paiyannoithai
-!D0 U+0E30 saraathai
-!D1 U+0E31 maihanakatthai
-!D2 U+0E32 saraaathai
-!D3 U+0E33 saraamthai
-!D4 U+0E34 saraithai
-!D5 U+0E35 saraiithai
-!D6 U+0E36 sarauethai
-!D7 U+0E37 saraueethai
-!D8 U+0E38 sarauthai
-!D9 U+0E39 sarauuthai
-!DA U+0E3A phinthuthai
-!DF U+0E3F bahtthai
-!E0 U+0E40 saraethai
-!E1 U+0E41 saraaethai
-!E2 U+0E42 saraothai
-!E3 U+0E43 saraaimaimuanthai
-!E4 U+0E44 saraaimaimalaithai
-!E5 U+0E45 lakkhangyaothai
-!E6 U+0E46 maiyamokthai
-!E7 U+0E47 maitaikhuthai
-!E8 U+0E48 maiekthai
-!E9 U+0E49 maithothai
-!EA U+0E4A maitrithai
-!EB U+0E4B maichattawathai
-!EC U+0E4C thanthakhatthai
-!ED U+0E4D nikhahitthai
-!EE U+0E4E yamakkanthai
-!EF U+0E4F fongmanthai
-!F0 U+0E50 zerothai
-!F1 U+0E51 onethai
-!F2 U+0E52 twothai
-!F3 U+0E53 threethai
-!F4 U+0E54 fourthai
-!F5 U+0E55 fivethai
-!F6 U+0E56 sixthai
-!F7 U+0E57 seventhai
-!F8 U+0E58 eightthai
-!F9 U+0E59 ninethai
-!FA U+0E5A angkhankhuthai
-!FB U+0E5B khomutthai

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-15.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+20AC Euro
-!A5 U+00A5 yen
-!A6 U+0160 Scaron
-!A7 U+00A7 section
-!A8 U+0161 scaron
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+017D Zcaron
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+017E zcaron
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+0152 OE
-!BD U+0153 oe
-!BE U+0178 Ydieresis
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+00D0 Eth
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+00DE Thorn
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+00F0 eth
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+00FE thorn
-!FF U+00FF ydieresis

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-16.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0104 Aogonek
-!A2 U+0105 aogonek
-!A3 U+0141 Lslash
-!A4 U+20AC Euro
-!A5 U+201E quotedblbase
-!A6 U+0160 Scaron
-!A7 U+00A7 section
-!A8 U+0161 scaron
-!A9 U+00A9 copyright
-!AA U+0218 Scommaaccent
-!AB U+00AB guillemotleft
-!AC U+0179 Zacute
-!AD U+00AD hyphen
-!AE U+017A zacute
-!AF U+017B Zdotaccent
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+010C Ccaron
-!B3 U+0142 lslash
-!B4 U+017D Zcaron
-!B5 U+201D quotedblright
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+017E zcaron
-!B9 U+010D ccaron
-!BA U+0219 scommaaccent
-!BB U+00BB guillemotright
-!BC U+0152 OE
-!BD U+0153 oe
-!BE U+0178 Ydieresis
-!BF U+017C zdotaccent
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+0106 Cacute
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+0110 Dcroat
-!D1 U+0143 Nacute
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+0150 Ohungarumlaut
-!D6 U+00D6 Odieresis
-!D7 U+015A Sacute
-!D8 U+0170 Uhungarumlaut
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0118 Eogonek
-!DE U+021A Tcommaaccent
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+0107 cacute
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+0111 dcroat
-!F1 U+0144 nacute
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+0151 ohungarumlaut
-!F6 U+00F6 odieresis
-!F7 U+015B sacute
-!F8 U+0171 uhungarumlaut
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0119 eogonek
-!FE U+021B tcommaaccent
-!FF U+00FF ydieresis

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-2.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0104 Aogonek
-!A2 U+02D8 breve
-!A3 U+0141 Lslash
-!A4 U+00A4 currency
-!A5 U+013D Lcaron
-!A6 U+015A Sacute
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+0160 Scaron
-!AA U+015E Scedilla
-!AB U+0164 Tcaron
-!AC U+0179 Zacute
-!AD U+00AD hyphen
-!AE U+017D Zcaron
-!AF U+017B Zdotaccent
-!B0 U+00B0 degree
-!B1 U+0105 aogonek
-!B2 U+02DB ogonek
-!B3 U+0142 lslash
-!B4 U+00B4 acute
-!B5 U+013E lcaron
-!B6 U+015B sacute
-!B7 U+02C7 caron
-!B8 U+00B8 cedilla
-!B9 U+0161 scaron
-!BA U+015F scedilla
-!BB U+0165 tcaron
-!BC U+017A zacute
-!BD U+02DD hungarumlaut
-!BE U+017E zcaron
-!BF U+017C zdotaccent
-!C0 U+0154 Racute
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+0102 Abreve
-!C4 U+00C4 Adieresis
-!C5 U+0139 Lacute
-!C6 U+0106 Cacute
-!C7 U+00C7 Ccedilla
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0118 Eogonek
-!CB U+00CB Edieresis
-!CC U+011A Ecaron
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+010E Dcaron
-!D0 U+0110 Dcroat
-!D1 U+0143 Nacute
-!D2 U+0147 Ncaron
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+0150 Ohungarumlaut
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+0158 Rcaron
-!D9 U+016E Uring
-!DA U+00DA Uacute
-!DB U+0170 Uhungarumlaut
-!DC U+00DC Udieresis
-!DD U+00DD Yacute
-!DE U+0162 Tcommaaccent
-!DF U+00DF germandbls
-!E0 U+0155 racute
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+0103 abreve
-!E4 U+00E4 adieresis
-!E5 U+013A lacute
-!E6 U+0107 cacute
-!E7 U+00E7 ccedilla
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+0119 eogonek
-!EB U+00EB edieresis
-!EC U+011B ecaron
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+010F dcaron
-!F0 U+0111 dcroat
-!F1 U+0144 nacute
-!F2 U+0148 ncaron
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+0151 ohungarumlaut
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+0159 rcaron
-!F9 U+016F uring
-!FA U+00FA uacute
-!FB U+0171 uhungarumlaut
-!FC U+00FC udieresis
-!FD U+00FD yacute
-!FE U+0163 tcommaaccent
-!FF U+02D9 dotaccent

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-4.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0104 Aogonek
-!A2 U+0138 kgreenlandic
-!A3 U+0156 Rcommaaccent
-!A4 U+00A4 currency
-!A5 U+0128 Itilde
-!A6 U+013B Lcommaaccent
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+0160 Scaron
-!AA U+0112 Emacron
-!AB U+0122 Gcommaaccent
-!AC U+0166 Tbar
-!AD U+00AD hyphen
-!AE U+017D Zcaron
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+0105 aogonek
-!B2 U+02DB ogonek
-!B3 U+0157 rcommaaccent
-!B4 U+00B4 acute
-!B5 U+0129 itilde
-!B6 U+013C lcommaaccent
-!B7 U+02C7 caron
-!B8 U+00B8 cedilla
-!B9 U+0161 scaron
-!BA U+0113 emacron
-!BB U+0123 gcommaaccent
-!BC U+0167 tbar
-!BD U+014A Eng
-!BE U+017E zcaron
-!BF U+014B eng
-!C0 U+0100 Amacron
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+012E Iogonek
-!C8 U+010C Ccaron
-!C9 U+00C9 Eacute
-!CA U+0118 Eogonek
-!CB U+00CB Edieresis
-!CC U+0116 Edotaccent
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+012A Imacron
-!D0 U+0110 Dcroat
-!D1 U+0145 Ncommaaccent
-!D2 U+014C Omacron
-!D3 U+0136 Kcommaaccent
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+0172 Uogonek
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0168 Utilde
-!DE U+016A Umacron
-!DF U+00DF germandbls
-!E0 U+0101 amacron
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+012F iogonek
-!E8 U+010D ccaron
-!E9 U+00E9 eacute
-!EA U+0119 eogonek
-!EB U+00EB edieresis
-!EC U+0117 edotaccent
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+012B imacron
-!F0 U+0111 dcroat
-!F1 U+0146 ncommaaccent
-!F2 U+014D omacron
-!F3 U+0137 kcommaaccent
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+0173 uogonek
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0169 utilde
-!FE U+016B umacron
-!FF U+02D9 dotaccent

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-5.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+0401 afii10023
-!A2 U+0402 afii10051
-!A3 U+0403 afii10052
-!A4 U+0404 afii10053
-!A5 U+0405 afii10054
-!A6 U+0406 afii10055
-!A7 U+0407 afii10056
-!A8 U+0408 afii10057
-!A9 U+0409 afii10058
-!AA U+040A afii10059
-!AB U+040B afii10060
-!AC U+040C afii10061
-!AD U+00AD hyphen
-!AE U+040E afii10062
-!AF U+040F afii10145
-!B0 U+0410 afii10017
-!B1 U+0411 afii10018
-!B2 U+0412 afii10019
-!B3 U+0413 afii10020
-!B4 U+0414 afii10021
-!B5 U+0415 afii10022
-!B6 U+0416 afii10024
-!B7 U+0417 afii10025
-!B8 U+0418 afii10026
-!B9 U+0419 afii10027
-!BA U+041A afii10028
-!BB U+041B afii10029
-!BC U+041C afii10030
-!BD U+041D afii10031
-!BE U+041E afii10032
-!BF U+041F afii10033
-!C0 U+0420 afii10034
-!C1 U+0421 afii10035
-!C2 U+0422 afii10036
-!C3 U+0423 afii10037
-!C4 U+0424 afii10038
-!C5 U+0425 afii10039
-!C6 U+0426 afii10040
-!C7 U+0427 afii10041
-!C8 U+0428 afii10042
-!C9 U+0429 afii10043
-!CA U+042A afii10044
-!CB U+042B afii10045
-!CC U+042C afii10046
-!CD U+042D afii10047
-!CE U+042E afii10048
-!CF U+042F afii10049
-!D0 U+0430 afii10065
-!D1 U+0431 afii10066
-!D2 U+0432 afii10067
-!D3 U+0433 afii10068
-!D4 U+0434 afii10069
-!D5 U+0435 afii10070
-!D6 U+0436 afii10072
-!D7 U+0437 afii10073
-!D8 U+0438 afii10074
-!D9 U+0439 afii10075
-!DA U+043A afii10076
-!DB U+043B afii10077
-!DC U+043C afii10078
-!DD U+043D afii10079
-!DE U+043E afii10080
-!DF U+043F afii10081
-!E0 U+0440 afii10082
-!E1 U+0441 afii10083
-!E2 U+0442 afii10084
-!E3 U+0443 afii10085
-!E4 U+0444 afii10086
-!E5 U+0445 afii10087
-!E6 U+0446 afii10088
-!E7 U+0447 afii10089
-!E8 U+0448 afii10090
-!E9 U+0449 afii10091
-!EA U+044A afii10092
-!EB U+044B afii10093
-!EC U+044C afii10094
-!ED U+044D afii10095
-!EE U+044E afii10096
-!EF U+044F afii10097
-!F0 U+2116 afii61352
-!F1 U+0451 afii10071
-!F2 U+0452 afii10099
-!F3 U+0453 afii10100
-!F4 U+0454 afii10101
-!F5 U+0455 afii10102
-!F6 U+0456 afii10103
-!F7 U+0457 afii10104
-!F8 U+0458 afii10105
-!F9 U+0459 afii10106
-!FA U+045A afii10107
-!FB U+045B afii10108
-!FC U+045C afii10109
-!FD U+00A7 section
-!FE U+045E afii10110
-!FF U+045F afii10193

+ 0 - 250
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-7.map

@@ -1,250 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+2018 quoteleft
-!A2 U+2019 quoteright
-!A3 U+00A3 sterling
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AF U+2015 afii00208
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+0384 tonos
-!B5 U+0385 dieresistonos
-!B6 U+0386 Alphatonos
-!B7 U+00B7 periodcentered
-!B8 U+0388 Epsilontonos
-!B9 U+0389 Etatonos
-!BA U+038A Iotatonos
-!BB U+00BB guillemotright
-!BC U+038C Omicrontonos
-!BD U+00BD onehalf
-!BE U+038E Upsilontonos
-!BF U+038F Omegatonos
-!C0 U+0390 iotadieresistonos
-!C1 U+0391 Alpha
-!C2 U+0392 Beta
-!C3 U+0393 Gamma
-!C4 U+0394 Delta
-!C5 U+0395 Epsilon
-!C6 U+0396 Zeta
-!C7 U+0397 Eta
-!C8 U+0398 Theta
-!C9 U+0399 Iota
-!CA U+039A Kappa
-!CB U+039B Lambda
-!CC U+039C Mu
-!CD U+039D Nu
-!CE U+039E Xi
-!CF U+039F Omicron
-!D0 U+03A0 Pi
-!D1 U+03A1 Rho
-!D3 U+03A3 Sigma
-!D4 U+03A4 Tau
-!D5 U+03A5 Upsilon
-!D6 U+03A6 Phi
-!D7 U+03A7 Chi
-!D8 U+03A8 Psi
-!D9 U+03A9 Omega
-!DA U+03AA Iotadieresis
-!DB U+03AB Upsilondieresis
-!DC U+03AC alphatonos
-!DD U+03AD epsilontonos
-!DE U+03AE etatonos
-!DF U+03AF iotatonos
-!E0 U+03B0 upsilondieresistonos
-!E1 U+03B1 alpha
-!E2 U+03B2 beta
-!E3 U+03B3 gamma
-!E4 U+03B4 delta
-!E5 U+03B5 epsilon
-!E6 U+03B6 zeta
-!E7 U+03B7 eta
-!E8 U+03B8 theta
-!E9 U+03B9 iota
-!EA U+03BA kappa
-!EB U+03BB lambda
-!EC U+03BC mu
-!ED U+03BD nu
-!EE U+03BE xi
-!EF U+03BF omicron
-!F0 U+03C0 pi
-!F1 U+03C1 rho
-!F2 U+03C2 sigma1
-!F3 U+03C3 sigma
-!F4 U+03C4 tau
-!F5 U+03C5 upsilon
-!F6 U+03C6 phi
-!F7 U+03C7 chi
-!F8 U+03C8 psi
-!F9 U+03C9 omega
-!FA U+03CA iotadieresis
-!FB U+03CB upsilondieresis
-!FC U+03CC omicrontonos
-!FD U+03CD upsilontonos
-!FE U+03CE omegatonos

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/iso-8859-9.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+0080 .notdef
-!81 U+0081 .notdef
-!82 U+0082 .notdef
-!83 U+0083 .notdef
-!84 U+0084 .notdef
-!85 U+0085 .notdef
-!86 U+0086 .notdef
-!87 U+0087 .notdef
-!88 U+0088 .notdef
-!89 U+0089 .notdef
-!8A U+008A .notdef
-!8B U+008B .notdef
-!8C U+008C .notdef
-!8D U+008D .notdef
-!8E U+008E .notdef
-!8F U+008F .notdef
-!90 U+0090 .notdef
-!91 U+0091 .notdef
-!92 U+0092 .notdef
-!93 U+0093 .notdef
-!94 U+0094 .notdef
-!95 U+0095 .notdef
-!96 U+0096 .notdef
-!97 U+0097 .notdef
-!98 U+0098 .notdef
-!99 U+0099 .notdef
-!9A U+009A .notdef
-!9B U+009B .notdef
-!9C U+009C .notdef
-!9D U+009D .notdef
-!9E U+009E .notdef
-!9F U+009F .notdef
-!A0 U+00A0 space
-!A1 U+00A1 exclamdown
-!A2 U+00A2 cent
-!A3 U+00A3 sterling
-!A4 U+00A4 currency
-!A5 U+00A5 yen
-!A6 U+00A6 brokenbar
-!A7 U+00A7 section
-!A8 U+00A8 dieresis
-!A9 U+00A9 copyright
-!AA U+00AA ordfeminine
-!AB U+00AB guillemotleft
-!AC U+00AC logicalnot
-!AD U+00AD hyphen
-!AE U+00AE registered
-!AF U+00AF macron
-!B0 U+00B0 degree
-!B1 U+00B1 plusminus
-!B2 U+00B2 twosuperior
-!B3 U+00B3 threesuperior
-!B4 U+00B4 acute
-!B5 U+00B5 mu
-!B6 U+00B6 paragraph
-!B7 U+00B7 periodcentered
-!B8 U+00B8 cedilla
-!B9 U+00B9 onesuperior
-!BA U+00BA ordmasculine
-!BB U+00BB guillemotright
-!BC U+00BC onequarter
-!BD U+00BD onehalf
-!BE U+00BE threequarters
-!BF U+00BF questiondown
-!C0 U+00C0 Agrave
-!C1 U+00C1 Aacute
-!C2 U+00C2 Acircumflex
-!C3 U+00C3 Atilde
-!C4 U+00C4 Adieresis
-!C5 U+00C5 Aring
-!C6 U+00C6 AE
-!C7 U+00C7 Ccedilla
-!C8 U+00C8 Egrave
-!C9 U+00C9 Eacute
-!CA U+00CA Ecircumflex
-!CB U+00CB Edieresis
-!CC U+00CC Igrave
-!CD U+00CD Iacute
-!CE U+00CE Icircumflex
-!CF U+00CF Idieresis
-!D0 U+011E Gbreve
-!D1 U+00D1 Ntilde
-!D2 U+00D2 Ograve
-!D3 U+00D3 Oacute
-!D4 U+00D4 Ocircumflex
-!D5 U+00D5 Otilde
-!D6 U+00D6 Odieresis
-!D7 U+00D7 multiply
-!D8 U+00D8 Oslash
-!D9 U+00D9 Ugrave
-!DA U+00DA Uacute
-!DB U+00DB Ucircumflex
-!DC U+00DC Udieresis
-!DD U+0130 Idotaccent
-!DE U+015E Scedilla
-!DF U+00DF germandbls
-!E0 U+00E0 agrave
-!E1 U+00E1 aacute
-!E2 U+00E2 acircumflex
-!E3 U+00E3 atilde
-!E4 U+00E4 adieresis
-!E5 U+00E5 aring
-!E6 U+00E6 ae
-!E7 U+00E7 ccedilla
-!E8 U+00E8 egrave
-!E9 U+00E9 eacute
-!EA U+00EA ecircumflex
-!EB U+00EB edieresis
-!EC U+00EC igrave
-!ED U+00ED iacute
-!EE U+00EE icircumflex
-!EF U+00EF idieresis
-!F0 U+011F gbreve
-!F1 U+00F1 ntilde
-!F2 U+00F2 ograve
-!F3 U+00F3 oacute
-!F4 U+00F4 ocircumflex
-!F5 U+00F5 otilde
-!F6 U+00F6 odieresis
-!F7 U+00F7 divide
-!F8 U+00F8 oslash
-!F9 U+00F9 ugrave
-!FA U+00FA uacute
-!FB U+00FB ucircumflex
-!FC U+00FC udieresis
-!FD U+0131 dotlessi
-!FE U+015F scedilla
-!FF U+00FF ydieresis

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/koi8-r.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+2500 SF100000
-!81 U+2502 SF110000
-!82 U+250C SF010000
-!83 U+2510 SF030000
-!84 U+2514 SF020000
-!85 U+2518 SF040000
-!86 U+251C SF080000
-!87 U+2524 SF090000
-!88 U+252C SF060000
-!89 U+2534 SF070000
-!8A U+253C SF050000
-!8B U+2580 upblock
-!8C U+2584 dnblock
-!8D U+2588 block
-!8E U+258C lfblock
-!8F U+2590 rtblock
-!90 U+2591 ltshade
-!91 U+2592 shade
-!92 U+2593 dkshade
-!93 U+2320 integraltp
-!94 U+25A0 filledbox
-!95 U+2219 periodcentered
-!96 U+221A radical
-!97 U+2248 approxequal
-!98 U+2264 lessequal
-!99 U+2265 greaterequal
-!9A U+00A0 space
-!9B U+2321 integralbt
-!9C U+00B0 degree
-!9D U+00B2 twosuperior
-!9E U+00B7 periodcentered
-!9F U+00F7 divide
-!A0 U+2550 SF430000
-!A1 U+2551 SF240000
-!A2 U+2552 SF510000
-!A3 U+0451 afii10071
-!A4 U+2553 SF520000
-!A5 U+2554 SF390000
-!A6 U+2555 SF220000
-!A7 U+2556 SF210000
-!A8 U+2557 SF250000
-!A9 U+2558 SF500000
-!AA U+2559 SF490000
-!AB U+255A SF380000
-!AC U+255B SF280000
-!AD U+255C SF270000
-!AE U+255D SF260000
-!AF U+255E SF360000
-!B0 U+255F SF370000
-!B1 U+2560 SF420000
-!B2 U+2561 SF190000
-!B3 U+0401 afii10023
-!B4 U+2562 SF200000
-!B5 U+2563 SF230000
-!B6 U+2564 SF470000
-!B7 U+2565 SF480000
-!B8 U+2566 SF410000
-!B9 U+2567 SF450000
-!BA U+2568 SF460000
-!BB U+2569 SF400000
-!BC U+256A SF540000
-!BD U+256B SF530000
-!BE U+256C SF440000
-!BF U+00A9 copyright
-!C0 U+044E afii10096
-!C1 U+0430 afii10065
-!C2 U+0431 afii10066
-!C3 U+0446 afii10088
-!C4 U+0434 afii10069
-!C5 U+0435 afii10070
-!C6 U+0444 afii10086
-!C7 U+0433 afii10068
-!C8 U+0445 afii10087
-!C9 U+0438 afii10074
-!CA U+0439 afii10075
-!CB U+043A afii10076
-!CC U+043B afii10077
-!CD U+043C afii10078
-!CE U+043D afii10079
-!CF U+043E afii10080
-!D0 U+043F afii10081
-!D1 U+044F afii10097
-!D2 U+0440 afii10082
-!D3 U+0441 afii10083
-!D4 U+0442 afii10084
-!D5 U+0443 afii10085
-!D6 U+0436 afii10072
-!D7 U+0432 afii10067
-!D8 U+044C afii10094
-!D9 U+044B afii10093
-!DA U+0437 afii10073
-!DB U+0448 afii10090
-!DC U+044D afii10095
-!DD U+0449 afii10091
-!DE U+0447 afii10089
-!DF U+044A afii10092
-!E0 U+042E afii10048
-!E1 U+0410 afii10017
-!E2 U+0411 afii10018
-!E3 U+0426 afii10040
-!E4 U+0414 afii10021
-!E5 U+0415 afii10022
-!E6 U+0424 afii10038
-!E7 U+0413 afii10020
-!E8 U+0425 afii10039
-!E9 U+0418 afii10026
-!EA U+0419 afii10027
-!EB U+041A afii10028
-!EC U+041B afii10029
-!ED U+041C afii10030
-!EE U+041D afii10031
-!EF U+041E afii10032
-!F0 U+041F afii10033
-!F1 U+042F afii10049
-!F2 U+0420 afii10034
-!F3 U+0421 afii10035
-!F4 U+0422 afii10036
-!F5 U+0423 afii10037
-!F6 U+0416 afii10024
-!F7 U+0412 afii10019
-!F8 U+042C afii10046
-!F9 U+042B afii10045
-!FA U+0417 afii10025
-!FB U+0428 afii10042
-!FC U+042D afii10047
-!FD U+0429 afii10043
-!FE U+0427 afii10041
-!FF U+042A afii10044

+ 0 - 256
main/inc/lib/html2pdf/_fpdf/font/makefont/koi8-u.map

@@ -1,256 +0,0 @@
-!00 U+0000 .notdef
-!01 U+0001 .notdef
-!02 U+0002 .notdef
-!03 U+0003 .notdef
-!04 U+0004 .notdef
-!05 U+0005 .notdef
-!06 U+0006 .notdef
-!07 U+0007 .notdef
-!08 U+0008 .notdef
-!09 U+0009 .notdef
-!0A U+000A .notdef
-!0B U+000B .notdef
-!0C U+000C .notdef
-!0D U+000D .notdef
-!0E U+000E .notdef
-!0F U+000F .notdef
-!10 U+0010 .notdef
-!11 U+0011 .notdef
-!12 U+0012 .notdef
-!13 U+0013 .notdef
-!14 U+0014 .notdef
-!15 U+0015 .notdef
-!16 U+0016 .notdef
-!17 U+0017 .notdef
-!18 U+0018 .notdef
-!19 U+0019 .notdef
-!1A U+001A .notdef
-!1B U+001B .notdef
-!1C U+001C .notdef
-!1D U+001D .notdef
-!1E U+001E .notdef
-!1F U+001F .notdef
-!20 U+0020 space
-!21 U+0021 exclam
-!22 U+0022 quotedbl
-!23 U+0023 numbersign
-!24 U+0024 dollar
-!25 U+0025 percent
-!26 U+0026 ampersand
-!27 U+0027 quotesingle
-!28 U+0028 parenleft
-!29 U+0029 parenright
-!2A U+002A asterisk
-!2B U+002B plus
-!2C U+002C comma
-!2D U+002D hyphen
-!2E U+002E period
-!2F U+002F slash
-!30 U+0030 zero
-!31 U+0031 one
-!32 U+0032 two
-!33 U+0033 three
-!34 U+0034 four
-!35 U+0035 five
-!36 U+0036 six
-!37 U+0037 seven
-!38 U+0038 eight
-!39 U+0039 nine
-!3A U+003A colon
-!3B U+003B semicolon
-!3C U+003C less
-!3D U+003D equal
-!3E U+003E greater
-!3F U+003F question
-!40 U+0040 at
-!41 U+0041 A
-!42 U+0042 B
-!43 U+0043 C
-!44 U+0044 D
-!45 U+0045 E
-!46 U+0046 F
-!47 U+0047 G
-!48 U+0048 H
-!49 U+0049 I
-!4A U+004A J
-!4B U+004B K
-!4C U+004C L
-!4D U+004D M
-!4E U+004E N
-!4F U+004F O
-!50 U+0050 P
-!51 U+0051 Q
-!52 U+0052 R
-!53 U+0053 S
-!54 U+0054 T
-!55 U+0055 U
-!56 U+0056 V
-!57 U+0057 W
-!58 U+0058 X
-!59 U+0059 Y
-!5A U+005A Z
-!5B U+005B bracketleft
-!5C U+005C backslash
-!5D U+005D bracketright
-!5E U+005E asciicircum
-!5F U+005F underscore
-!60 U+0060 grave
-!61 U+0061 a
-!62 U+0062 b
-!63 U+0063 c
-!64 U+0064 d
-!65 U+0065 e
-!66 U+0066 f
-!67 U+0067 g
-!68 U+0068 h
-!69 U+0069 i
-!6A U+006A j
-!6B U+006B k
-!6C U+006C l
-!6D U+006D m
-!6E U+006E n
-!6F U+006F o
-!70 U+0070 p
-!71 U+0071 q
-!72 U+0072 r
-!73 U+0073 s
-!74 U+0074 t
-!75 U+0075 u
-!76 U+0076 v
-!77 U+0077 w
-!78 U+0078 x
-!79 U+0079 y
-!7A U+007A z
-!7B U+007B braceleft
-!7C U+007C bar
-!7D U+007D braceright
-!7E U+007E asciitilde
-!7F U+007F .notdef
-!80 U+2500 SF100000
-!81 U+2502 SF110000
-!82 U+250C SF010000
-!83 U+2510 SF030000
-!84 U+2514 SF020000
-!85 U+2518 SF040000
-!86 U+251C SF080000
-!87 U+2524 SF090000
-!88 U+252C SF060000
-!89 U+2534 SF070000
-!8A U+253C SF050000
-!8B U+2580 upblock
-!8C U+2584 dnblock
-!8D U+2588 block
-!8E U+258C lfblock
-!8F U+2590 rtblock
-!90 U+2591 ltshade
-!91 U+2592 shade
-!92 U+2593 dkshade
-!93 U+2320 integraltp
-!94 U+25A0 filledbox
-!95 U+2022 bullet
-!96 U+221A radical
-!97 U+2248 approxequal
-!98 U+2264 lessequal
-!99 U+2265 greaterequal
-!9A U+00A0 space
-!9B U+2321 integralbt
-!9C U+00B0 degree
-!9D U+00B2 twosuperior
-!9E U+00B7 periodcentered
-!9F U+00F7 divide
-!A0 U+2550 SF430000
-!A1 U+2551 SF240000
-!A2 U+2552 SF510000
-!A3 U+0451 afii10071
-!A4 U+0454 afii10101
-!A5 U+2554 SF390000
-!A6 U+0456 afii10103
-!A7 U+0457 afii10104
-!A8 U+2557 SF250000
-!A9 U+2558 SF500000
-!AA U+2559 SF490000
-!AB U+255A SF380000
-!AC U+255B SF280000
-!AD U+0491 afii10098
-!AE U+255D SF260000
-!AF U+255E SF360000
-!B0 U+255F SF370000
-!B1 U+2560 SF420000
-!B2 U+2561 SF190000
-!B3 U+0401 afii10023
-!B4 U+0404 afii10053
-!B5 U+2563 SF230000
-!B6 U+0406 afii10055
-!B7 U+0407 afii10056
-!B8 U+2566 SF410000
-!B9 U+2567 SF450000
-!BA U+2568 SF460000
-!BB U+2569 SF400000
-!BC U+256A SF540000
-!BD U+0490 afii10050
-!BE U+256C SF440000
-!BF U+00A9 copyright
-!C0 U+044E afii10096
-!C1 U+0430 afii10065
-!C2 U+0431 afii10066
-!C3 U+0446 afii10088
-!C4 U+0434 afii10069
-!C5 U+0435 afii10070
-!C6 U+0444 afii10086
-!C7 U+0433 afii10068
-!C8 U+0445 afii10087
-!C9 U+0438 afii10074
-!CA U+0439 afii10075
-!CB U+043A afii10076
-!CC U+043B afii10077
-!CD U+043C afii10078
-!CE U+043D afii10079
-!CF U+043E afii10080
-!D0 U+043F afii10081
-!D1 U+044F afii10097
-!D2 U+0440 afii10082
-!D3 U+0441 afii10083
-!D4 U+0442 afii10084
-!D5 U+0443 afii10085
-!D6 U+0436 afii10072
-!D7 U+0432 afii10067
-!D8 U+044C afii10094
-!D9 U+044B afii10093
-!DA U+0437 afii10073
-!DB U+0448 afii10090
-!DC U+044D afii10095
-!DD U+0449 afii10091
-!DE U+0447 afii10089
-!DF U+044A afii10092
-!E0 U+042E afii10048
-!E1 U+0410 afii10017
-!E2 U+0411 afii10018
-!E3 U+0426 afii10040
-!E4 U+0414 afii10021
-!E5 U+0415 afii10022
-!E6 U+0424 afii10038
-!E7 U+0413 afii10020
-!E8 U+0425 afii10039
-!E9 U+0418 afii10026
-!EA U+0419 afii10027
-!EB U+041A afii10028
-!EC U+041B afii10029
-!ED U+041C afii10030
-!EE U+041D afii10031
-!EF U+041E afii10032
-!F0 U+041F afii10033
-!F1 U+042F afii10049
-!F2 U+0420 afii10034
-!F3 U+0421 afii10035
-!F4 U+0422 afii10036
-!F5 U+0423 afii10037
-!F6 U+0416 afii10024
-!F7 U+0412 afii10019
-!F8 U+042C afii10046
-!F9 U+042B afii10045
-!FA U+0417 afii10025
-!FB U+0428 afii10042
-!FC U+042D afii10047
-!FD U+0429 afii10043
-!FE U+0427 afii10041
-!FF U+042A afii10044

+ 0 - 419
main/inc/lib/html2pdf/_fpdf/font/makefont/makefont.php

@@ -1,419 +0,0 @@
-<?php
-/*******************************************************************************
-* Utility to generate font definition files
-*
-* Version:	1.14
-* Date:		2008-08-03
-* Author:	Olivier PLATHEY
-*******************************************************************************/
-
-function ReadMap($enc)
-{
-	//Read a map file
-	$file=dirname(__FILE__).'/'.strtolower($enc).'.map';
-	$a=file($file);
-	if(empty($a))
-		die('<b>Error:</b> encoding not found: '.$enc);
-	$cc2gn=array();
-	foreach($a as $l)
-	{
-		if($l[0]=='!')
-		{
-			$e=preg_split('/[ \\t]+/',rtrim($l));
-			$cc=hexdec(substr($e[0],1));
-			$gn=$e[2];
-			$cc2gn[$cc]=$gn;
-		}
-	}
-	for($i=0;$i<=255;$i++)
-	{
-		if(!isset($cc2gn[$i]))
-			$cc2gn[$i]='.notdef';
-	}
-	return $cc2gn;
-}
-
-function ReadAFM($file, &$map)
-{
-	//Read a font metric file
-	$a=file($file);
-	if(empty($a))
-		die('File not found');
-	$widths=array();
-	$fm=array();
-	$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
-		'Odblacute'=>'Ohungarumlaut','odblacute'=>'ohungarumlaut','Udblacute'=>'Uhungarumlaut','udblacute'=>'uhungarumlaut',
-		'Gcedilla'=>'Gcommaaccent','gcedilla'=>'gcommaaccent','Kcedilla'=>'Kcommaaccent','kcedilla'=>'kcommaaccent',
-		'Lcedilla'=>'Lcommaaccent','lcedilla'=>'lcommaaccent','Ncedilla'=>'Ncommaaccent','ncedilla'=>'ncommaaccent',
-		'Rcedilla'=>'Rcommaaccent','rcedilla'=>'rcommaaccent','Scedilla'=>'Scommaaccent','scedilla'=>'scommaaccent',
-		'Tcedilla'=>'Tcommaaccent','tcedilla'=>'tcommaaccent','Dslash'=>'Dcroat','dslash'=>'dcroat','Dmacron'=>'Dcroat','dmacron'=>'dcroat',
-		'combininggraveaccent'=>'gravecomb','combininghookabove'=>'hookabovecomb','combiningtildeaccent'=>'tildecomb',
-		'combiningacuteaccent'=>'acutecomb','combiningdotbelow'=>'dotbelowcomb','dongsign'=>'dong');
-	foreach($a as $l)
-	{
-		$e=explode(' ',rtrim($l));
-		if(count($e)<2)
-			continue;
-		$code=$e[0];
-		$param=$e[1];
-		if($code=='C')
-		{
-			//Character metrics
-			$cc=(int)$e[1];
-			$w=$e[4];
-			$gn=$e[7];
-			if(substr($gn,-4)=='20AC')
-				$gn='Euro';
-			if(isset($fix[$gn]))
-			{
-				//Fix incorrect glyph name
-				foreach($map as $c=>$n)
-				{
-					if($n==$fix[$gn])
-						$map[$c]=$gn;
-				}
-			}
-			if(empty($map))
-			{
-				//Symbolic font: use built-in encoding
-				$widths[$cc]=$w;
-			}
-			else
-			{
-				$widths[$gn]=$w;
-				if($gn=='X')
-					$fm['CapXHeight']=$e[13];
-			}
-			if($gn=='.notdef')
-				$fm['MissingWidth']=$w;
-		}
-		elseif($code=='FontName')
-			$fm['FontName']=$param;
-		elseif($code=='Weight')
-			$fm['Weight']=$param;
-		elseif($code=='ItalicAngle')
-			$fm['ItalicAngle']=(double)$param;
-		elseif($code=='Ascender')
-			$fm['Ascender']=(int)$param;
-		elseif($code=='Descender')
-			$fm['Descender']=(int)$param;
-		elseif($code=='UnderlineThickness')
-			$fm['UnderlineThickness']=(int)$param;
-		elseif($code=='UnderlinePosition')
-			$fm['UnderlinePosition']=(int)$param;
-		elseif($code=='IsFixedPitch')
-			$fm['IsFixedPitch']=($param=='true');
-		elseif($code=='FontBBox')
-			$fm['FontBBox']=array($e[1],$e[2],$e[3],$e[4]);
-		elseif($code=='CapHeight')
-			$fm['CapHeight']=(int)$param;
-		elseif($code=='StdVW')
-			$fm['StdVW']=(int)$param;
-	}
-	if(!isset($fm['FontName']))
-		die('FontName not found');
-	if(!empty($map))
-	{
-		if(!isset($widths['.notdef']))
-			$widths['.notdef']=600;
-		if(!isset($widths['Delta']) && isset($widths['increment']))
-			$widths['Delta']=$widths['increment'];
-		//Order widths according to map
-		for($i=0;$i<=255;$i++)
-		{
-			if(!isset($widths[$map[$i]]))
-			{
-				echo '<b>Warning:</b> character '.$map[$i].' is missing<br>';
-				$widths[$i]=$widths['.notdef'];
-			}
-			else
-				$widths[$i]=$widths[$map[$i]];
-		}
-	}
-	$fm['Widths']=$widths;
-	return $fm;
-}
-
-function MakeFontDescriptor($fm, $symbolic)
-{
-	//Ascent
-	$asc=(isset($fm['Ascender']) ? $fm['Ascender'] : 1000);
-	$fd="array('Ascent'=>".$asc;
-	//Descent
-	$desc=(isset($fm['Descender']) ? $fm['Descender'] : -200);
-	$fd.=",'Descent'=>".$desc;
-	//CapHeight
-	if(isset($fm['CapHeight']))
-		$ch=$fm['CapHeight'];
-	elseif(isset($fm['CapXHeight']))
-		$ch=$fm['CapXHeight'];
-	else
-		$ch=$asc;
-	$fd.=",'CapHeight'=>".$ch;
-	//Flags
-	$flags=0;
-	if(isset($fm['IsFixedPitch']) && $fm['IsFixedPitch'])
-		$flags+=1<<0;
-	if($symbolic)
-		$flags+=1<<2;
-	if(!$symbolic)
-		$flags+=1<<5;
-	if(isset($fm['ItalicAngle']) && $fm['ItalicAngle']!=0)
-		$flags+=1<<6;
-	$fd.=",'Flags'=>".$flags;
-	//FontBBox
-	if(isset($fm['FontBBox']))
-		$fbb=$fm['FontBBox'];
-	else
-		$fbb=array(0,$desc-100,1000,$asc+100);
-	$fd.=",'FontBBox'=>'[".$fbb[0].' '.$fbb[1].' '.$fbb[2].' '.$fbb[3]."]'";
-	//ItalicAngle
-	$ia=(isset($fm['ItalicAngle']) ? $fm['ItalicAngle'] : 0);
-	$fd.=",'ItalicAngle'=>".$ia;
-	//StemV
-	if(isset($fm['StdVW']))
-		$stemv=$fm['StdVW'];
-	elseif(isset($fm['Weight']) && preg_match('/bold|black/i',$fm['Weight']))
-		$stemv=120;
-	else
-		$stemv=70;
-	$fd.=",'StemV'=>".$stemv;
-	//MissingWidth
-	if(isset($fm['MissingWidth']))
-		$fd.=",'MissingWidth'=>".$fm['MissingWidth'];
-	$fd.=')';
-	return $fd;
-}
-
-function MakeWidthArray($fm)
-{
-	//Make character width array
-	$s="array(\n\t";
-	$cw=$fm['Widths'];
-	for($i=0;$i<=255;$i++)
-	{
-		if(chr($i)=="'")
-			$s.="'\\''";
-		elseif(chr($i)=="\\")
-			$s.="'\\\\'";
-		elseif($i>=32 && $i<=126)
-			$s.="'".chr($i)."'";
-		else
-			$s.="chr($i)";
-		$s.='=>'.$fm['Widths'][$i];
-		if($i<255)
-			$s.=',';
-		if(($i+1)%22==0)
-			$s.="\n\t";
-	}
-	$s.=')';
-	return $s;
-}
-
-function MakeFontEncoding($map)
-{
-	//Build differences from reference encoding
-	$ref=ReadMap('cp1252');
-	$s='';
-	$last=0;
-	for($i=32;$i<=255;$i++)
-	{
-		if($map[$i]!=$ref[$i])
-		{
-			if($i!=$last+1)
-				$s.=$i.' ';
-			$last=$i;
-			$s.='/'.$map[$i].' ';
-		}
-	}
-	return rtrim($s);
-}
-
-function SaveToFile($file, $s, $mode)
-{
-	$f=fopen($file,'w'.$mode);
-	if(!$f)
-		die('Can\'t write to file '.$file);
-	fwrite($f,$s,strlen($s));
-	fclose($f);
-}
-
-function ReadShort($f)
-{
-	$a=unpack('n1n',fread($f,2));
-	return $a['n'];
-}
-
-function ReadLong($f)
-{
-	$a=unpack('N1N',fread($f,4));
-	return $a['N'];
-}
-
-function CheckTTF($file)
-{
-	//Check if font license allows embedding
-	$f=fopen($file,'rb');
-	if(!$f)
-		die('<b>Error:</b> Can\'t open '.$file);
-	//Extract number of tables
-	fseek($f,4,SEEK_CUR);
-	$nb=ReadShort($f);
-	fseek($f,6,SEEK_CUR);
-	//Seek OS/2 table
-	$found=false;
-	for($i=0;$i<$nb;$i++)
-	{
-		if(fread($f,4)=='OS/2')
-		{
-			$found=true;
-			break;
-		}
-		fseek($f,12,SEEK_CUR);
-	}
-	if(!$found)
-	{
-		fclose($f);
-		return;
-	}
-	fseek($f,4,SEEK_CUR);
-	$offset=ReadLong($f);
-	fseek($f,$offset,SEEK_SET);
-	//Extract fsType flags
-	fseek($f,8,SEEK_CUR);
-	$fsType=ReadShort($f);
-	$rl=($fsType & 0x02)!=0;
-	$pp=($fsType & 0x04)!=0;
-	$e=($fsType & 0x08)!=0;
-	fclose($f);
-	if($rl && !$pp && !$e)
-		echo '<b>Warning:</b> font license does not allow embedding';
-}
-
-/*******************************************************************************
-* fontfile: path to TTF file (or empty string if not to be embedded0)
-* afmfile:	path to AFM file
-* enc:		font encoding (or empty string for symbolic fonts)
-* patch:	optional patch for encoding
-* type:		font type if fontfile is empty
-*******************************************************************************/
-function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='TrueType')
-{
-	//Generate a font definition file
-	if(get_magic_quotes_runtime())
-		@set_magic_quotes_runtime(0);
-	ini_set('auto_detect_line_endings','1');
-	if($enc)
-	{
-		$map=ReadMap($enc);
-		foreach($patch as $cc=>$gn)
-			$map[$cc]=$gn;
-	}
-	else
-		$map=array();
-	if(!file_exists($afmfile))
-		die('<b>Error:</b> AFM file not found: '.$afmfile);
-	$fm=ReadAFM($afmfile,$map);
-	if($enc)
-		$diff=MakeFontEncoding($map);
-	else
-		$diff='';
-	$fd=MakeFontDescriptor($fm,empty($map));
-	//Find font type
-	if($fontfile)
-	{
-		$ext=strtolower(substr($fontfile,-3));
-		if($ext=='ttf')
-			$type='TrueType';
-		elseif($ext=='pfb')
-			$type='Type1';
-		else
-			die('<b>Error:</b> unrecognized font file extension: '.$ext);
-	}
-	else
-	{
-		if($type!='TrueType' && $type!='Type1')
-			die('<b>Error:</b> incorrect font type: '.$type);
-	}
-	//Start generation
-	$s='<?php'."\n";
-	$s.='$type=\''.$type."';\n";
-	$s.='$name=\''.$fm['FontName']."';\n";
-	$s.='$desc='.$fd.";\n";
-	if(!isset($fm['UnderlinePosition']))
-		$fm['UnderlinePosition']=-100;
-	if(!isset($fm['UnderlineThickness']))
-		$fm['UnderlineThickness']=50;
-	$s.='$up='.$fm['UnderlinePosition'].";\n";
-	$s.='$ut='.$fm['UnderlineThickness'].";\n";
-	$w=MakeWidthArray($fm);
-	$s.='$cw='.$w.";\n";
-	$s.='$enc=\''.$enc."';\n";
-	$s.='$diff=\''.$diff."';\n";
-	$basename=substr(basename($afmfile),0,-4);
-	if($fontfile)
-	{
-		//Embedded font
-		if(!file_exists($fontfile))
-			die('<b>Error:</b> font file not found: '.$fontfile);
-		if($type=='TrueType')
-			CheckTTF($fontfile);
-		$f=fopen($fontfile,'rb');
-		if(!$f)
-			die('<b>Error:</b> Can\'t open '.$fontfile);
-		$file=fread($f,filesize($fontfile));
-		fclose($f);
-		if($type=='Type1')
-		{
-			//Find first two sections and discard third one
-			$header=(ord($file[0])==128);
-			if($header)
-			{
-				//Strip first binary header
-				$file=substr($file,6);
-			}
-			$pos=strpos($file,'eexec');
-			if(!$pos)
-				die('<b>Error:</b> font file does not seem to be valid Type1');
-			$size1=$pos+6;
-			if($header && ord($file[$size1])==128)
-			{
-				//Strip second binary header
-				$file=substr($file,0,$size1).substr($file,$size1+6);
-			}
-			$pos=strpos($file,'00000000');
-			if(!$pos)
-				die('<b>Error:</b> font file does not seem to be valid Type1');
-			$size2=$pos-$size1;
-			$file=substr($file,0,$size1+$size2);
-		}
-		if(function_exists('gzcompress'))
-		{
-			$cmp=$basename.'.z';
-			SaveToFile($cmp,gzcompress($file),'b');
-			$s.='$file=\''.$cmp."';\n";
-			echo 'Font file compressed ('.$cmp.')<br>';
-		}
-		else
-		{
-			$s.='$file=\''.basename($fontfile)."';\n";
-			echo '<b>Notice:</b> font file could not be compressed (zlib extension not available)<br>';
-		}
-		if($type=='Type1')
-		{
-			$s.='$size1='.$size1.";\n";
-			$s.='$size2='.$size2.";\n";
-		}
-		else
-			$s.='$originalsize='.filesize($fontfile).";\n";
-	}
-	else
-	{
-		//Not embedded font
-		$s.='$file='."'';\n";
-	}
-	$s.="?>\n";
-	SaveToFile($basename.'.php',$s,'t');
-	echo 'Font definition file generated ('.$basename.'.php'.')<br>';
-}
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/symbol.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['symbol']=array(
-	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
-	','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
-	'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
-	'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
-	'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
-	chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
-	chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
-	chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
-	chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
-	chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
-	chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/times.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['times']=array(
-	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
-	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
-	'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
-	'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
-	'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-	chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
-	chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
-	chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-	chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
-	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/timesb.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['timesB']=array(
-	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
-	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
-	'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
-	'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
-	'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-	chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-	chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
-	chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-	chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
-	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/timesbi.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['timesBI']=array(
-	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
-	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
-	'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
-	'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
-	'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-	chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-	chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
-	chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
-	chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
-	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/timesi.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['timesI']=array(
-	chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-	chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
-	','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
-	'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
-	'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
-	'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-	chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
-	chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
-	chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
-	chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-	chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
-	chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
-?>

+ 0 - 15
main/inc/lib/html2pdf/_fpdf/font/zapfdingbats.php

@@ -1,15 +0,0 @@
-<?php
-$fpdf_charwidths['zapfdingbats']=array(
-	chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
-	chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
-	','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
-	'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
-	'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
-	'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
-	chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
-	chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
-	chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
-	chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
-	chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
-	chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
-?>

+ 0 - 21
main/inc/lib/html2pdf/_fpdf/fpdf.css

@@ -1,21 +0,0 @@
-body {font-family:"Times New Roman",serif}
-h1 {font:bold 135% Arial,sans-serif; color:#4000A0; margin-bottom:0.9em}
-h2 {font:bold 100% Arial,sans-serif; color:#900000; margin-top:1.5em}
-dl.param dt {text-decoration:underline}
-dl.param dd {margin-top:1em; margin-bottom:1em}
-dl.param ul {margin-top:1em; margin-bottom:1em}
-tt, code, kbd {font-family:"Courier New",Courier,monospace; font-size:82%}
-div.source {margin-top:1.4em; margin-bottom:1.3em}
-div.source pre {display:table; border:1px solid #24246A; width:100%; margin:0em; font-family:inherit; font-size:100%}
-div.source code {display:block; border:1px solid #C5C5EC; background-color:#F0F5FF; padding:6px; color:#000000}
-div.doc-source {margin-top:1.4em; margin-bottom:1.3em}
-div.doc-source pre {display:table; width:100%; margin:0em; font-family:inherit; font-size:100%}
-div.doc-source code {display:block; background-color:#E0E0E0; padding:4px}
-.kw {color:#000080; font-weight:bold}
-.str {color:#CC0000}
-.cmt {color:#008000}
-p.demo {text-align:center; margin-top:-0.9em}
-a.demo {text-decoration:none; font-weight:bold; color:#0000CC}
-a.demo:link {text-decoration:none; font-weight:bold; color:#0000CC}
-a.demo:hover {text-decoration:none; font-weight:bold; color:#0000FF}
-a.demo:active {text-decoration:none; font-weight:bold; color:#0000FF}

+ 0 - 1736
main/inc/lib/html2pdf/_fpdf/fpdf.php

@@ -1,1736 +0,0 @@
-<?php
-/*******************************************************************************
-* FPDF                                                                         *
-*                                                                              *
-* Version: 1.6                                                                 *
-* Date:    2008-08-03                                                          *
-* Author:  Olivier PLATHEY                                                     *
-*******************************************************************************/
-
-define('FPDF_VERSION','1.6');
-
-class FPDF
-{
-var $page;               //current page number
-var $n;                  //current object number
-var $offsets;            //array of object offsets
-var $buffer;             //buffer holding in-memory PDF
-var $pages;              //array containing pages
-var $state;              //current document state
-var $compress;           //compression flag
-var $k;                  //scale factor (number of points in user unit)
-var $DefOrientation;     //default orientation
-var $CurOrientation;     //current orientation
-var $PageFormats;        //available page formats
-var $DefPageFormat;      //default page format
-var $CurPageFormat;      //current page format
-var $PageSizes;          //array storing non-default page sizes
-var $wPt,$hPt;           //dimensions of current page in points
-var $w,$h;               //dimensions of current page in user unit
-var $lMargin;            //left margin
-var $tMargin;            //top margin
-var $rMargin;            //right margin
-var $bMargin;            //page break margin
-var $cMargin;            //cell margin
-var $x,$y;               //current position in user unit
-var $lasth;              //height of last printed cell
-var $LineWidth;          //line width in user unit
-var $CoreFonts;          //array of standard font names
-var $fonts;              //array of used fonts
-var $FontFiles;          //array of font files
-var $diffs;              //array of encoding differences
-var $FontFamily;         //current font family
-var $FontStyle;          //current font style
-var $underline;          //underlining flag
-var $CurrentFont;        //current font info
-var $FontSizePt;         //current font size in points
-var $FontSize;           //current font size in user unit
-var $DrawColor;          //commands for drawing color
-var $FillColor;          //commands for filling color
-var $TextColor;          //commands for text color
-var $ColorFlag;          //indicates whether fill and text colors are different
-var $ws;                 //word spacing
-var $images;             //array of used images
-var $PageLinks;          //array of links in pages
-var $links;              //array of internal links
-var $AutoPageBreak;      //automatic page breaking
-var $PageBreakTrigger;   //threshold used to trigger page breaks
-var $InHeader;           //flag set when processing header
-var $InFooter;           //flag set when processing footer
-var $ZoomMode;           //zoom display mode
-var $LayoutMode;         //layout display mode
-var $title;              //title
-var $subject;            //subject
-var $author;             //author
-var $keywords;           //keywords
-var $creator;            //creator
-var $AliasNbPages;       //alias for total number of pages
-var $PDFVersion;         //PDF version number
-
-/*******************************************************************************
-*                                                                              *
-*                               Public methods                                 *
-*                                                                              *
-*******************************************************************************/
-function FPDF($orientation='P', $unit='mm', $format='A4')
-{
-	//Some checks
-	$this->_dochecks();
-	//Initialization of properties
-	$this->page=0;
-	$this->n=2;
-	$this->buffer='';
-	$this->pages=array();
-	$this->PageSizes=array();
-	$this->state=0;
-	$this->fonts=array();
-	$this->FontFiles=array();
-	$this->diffs=array();
-	$this->images=array();
-	$this->links=array();
-	$this->InHeader=false;
-	$this->InFooter=false;
-	$this->lasth=0;
-	$this->FontFamily='';
-	$this->FontStyle='';
-	$this->FontSizePt=12;
-	$this->underline=false;
-	$this->DrawColor='0 G';
-	$this->FillColor='0 g';
-	$this->TextColor='0 g';
-	$this->ColorFlag=false;
-	$this->ws=0;
-	//Standard fonts
-	$this->CoreFonts=array('courier'=>'Courier', 'courierB'=>'Courier-Bold', 'courierI'=>'Courier-Oblique', 'courierBI'=>'Courier-BoldOblique',
-		'helvetica'=>'Helvetica', 'helveticaB'=>'Helvetica-Bold', 'helveticaI'=>'Helvetica-Oblique', 'helveticaBI'=>'Helvetica-BoldOblique',
-		'times'=>'Times-Roman', 'timesB'=>'Times-Bold', 'timesI'=>'Times-Italic', 'timesBI'=>'Times-BoldItalic',
-		'symbol'=>'Symbol', 'zapfdingbats'=>'ZapfDingbats');
-	//Scale factor
-	if($unit=='pt')
-		$this->k=1;
-	elseif($unit=='mm')
-		$this->k=72/25.4;
-	elseif($unit=='cm')
-		$this->k=72/2.54;
-	elseif($unit=='in')
-		$this->k=72;
-	else
-		$this->Error('Incorrect unit: '.$unit);
-	//Page format
-	$this->PageFormats=array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28),
-		'letter'=>array(612,792), 'legal'=>array(612,1008));
-	if(is_string($format))
-		$format=$this->_getpageformat($format);
-	$this->DefPageFormat=$format;
-	$this->CurPageFormat=$format;
-	//Page orientation
-	$orientation=strtolower($orientation);
-	if($orientation=='p' || $orientation=='portrait')
-	{
-		$this->DefOrientation='P';
-		$this->w=$this->DefPageFormat[0];
-		$this->h=$this->DefPageFormat[1];
-	}
-	elseif($orientation=='l' || $orientation=='landscape')
-	{
-		$this->DefOrientation='L';
-		$this->w=$this->DefPageFormat[1];
-		$this->h=$this->DefPageFormat[0];
-	}
-	else
-		$this->Error('Incorrect orientation: '.$orientation);
-	$this->CurOrientation=$this->DefOrientation;
-	$this->wPt=$this->w*$this->k;
-	$this->hPt=$this->h*$this->k;
-	//Page margins (1 cm)
-	$margin=28.35/$this->k;
-	$this->SetMargins($margin,$margin);
-	//Interior cell margin (1 mm)
-	$this->cMargin=$margin/10;
-	//Line width (0.2 mm)
-	$this->LineWidth=.567/$this->k;
-	//Automatic page break
-	$this->SetAutoPageBreak(true,2*$margin);
-	//Full width display mode
-	$this->SetDisplayMode('fullwidth');
-	//Enable compression
-	$this->SetCompression(true);
-	//Set default PDF version number
-	$this->PDFVersion='1.3';
-}
-
-function SetMargins($left, $top, $right=null)
-{
-	//Set left, top and right margins
-	$this->lMargin=$left;
-	$this->tMargin=$top;
-	if($right===null)
-		$right=$left;
-	$this->rMargin=$right;
-}
-
-function SetLeftMargin($margin)
-{
-	//Set left margin
-	$this->lMargin=$margin;
-	if($this->page>0 && $this->x<$margin)
-		$this->x=$margin;
-}
-
-function SetTopMargin($margin)
-{
-	//Set top margin
-	$this->tMargin=$margin;
-}
-
-function SetRightMargin($margin)
-{
-	//Set right margin
-	$this->rMargin=$margin;
-}
-
-function SetAutoPageBreak($auto, $margin=0)
-{
-	//Set auto page break mode and triggering margin
-	$this->AutoPageBreak=$auto;
-	$this->bMargin=$margin;
-	$this->PageBreakTrigger=$this->h-$margin;
-}
-
-function SetDisplayMode($zoom, $layout='continuous')
-{
-	//Set display mode in viewer
-	if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom))
-		$this->ZoomMode=$zoom;
-	else
-		$this->Error('Incorrect zoom display mode: '.$zoom);
-	if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default')
-		$this->LayoutMode=$layout;
-	else
-		$this->Error('Incorrect layout display mode: '.$layout);
-}
-
-function SetCompression($compress)
-{
-	//Set page compression
-	if(function_exists('gzcompress'))
-		$this->compress=$compress;
-	else
-		$this->compress=false;
-}
-
-function SetTitle($title, $isUTF8=false)
-{
-	//Title of document
-	if($isUTF8)
-		$title=$this->_UTF8toUTF16($title);
-	$this->title=$title;
-}
-
-function SetSubject($subject, $isUTF8=false)
-{
-	//Subject of document
-	if($isUTF8)
-		$subject=$this->_UTF8toUTF16($subject);
-	$this->subject=$subject;
-}
-
-function SetAuthor($author, $isUTF8=false)
-{
-	//Author of document
-	if($isUTF8)
-		$author=$this->_UTF8toUTF16($author);
-	$this->author=$author;
-}
-
-function SetKeywords($keywords, $isUTF8=false)
-{
-	//Keywords of document
-	if($isUTF8)
-		$keywords=$this->_UTF8toUTF16($keywords);
-	$this->keywords=$keywords;
-}
-
-function SetCreator($creator, $isUTF8=false)
-{
-	//Creator of document
-	if($isUTF8)
-		$creator=$this->_UTF8toUTF16($creator);
-	$this->creator=$creator;
-}
-
-function AliasNbPages($alias='{nb}')
-{
-	//Define an alias for total number of pages
-	$this->AliasNbPages=$alias;
-}
-
-function Error($msg)
-{
-	//Fatal error
-	die('<b>FPDF error:</b> '.$msg);
-}
-
-function Open()
-{
-	//Begin document
-	$this->state=1;
-}
-
-function Close()
-{
-	//Terminate document
-	if($this->state==3)
-		return;
-	if($this->page==0)
-		$this->AddPage();
-	//Page footer
-	$this->InFooter=true;
-	$this->Footer();
-	$this->InFooter=false;
-	//Close page
-	$this->_endpage();
-	//Close document
-	$this->_enddoc();
-}
-
-function AddPage($orientation='', $format='')
-{
-	//Start a new page
-	if($this->state==0)
-		$this->Open();
-	$family=$this->FontFamily;
-	$style=$this->FontStyle.($this->underline ? 'U' : '');
-	$size=$this->FontSizePt;
-	$lw=$this->LineWidth;
-	$dc=$this->DrawColor;
-	$fc=$this->FillColor;
-	$tc=$this->TextColor;
-	$cf=$this->ColorFlag;
-	if($this->page>0)
-	{
-		//Page footer
-		$this->InFooter=true;
-		$this->Footer();
-		$this->InFooter=false;
-		//Close page
-		$this->_endpage();
-	}
-	//Start new page
-	$this->_beginpage($orientation,$format);
-	//Set line cap style to square
-	$this->_out('2 J');
-	//Set line width
-	$this->LineWidth=$lw;
-	$this->_out(sprintf('%.2F w',$lw*$this->k));
-	//Set font
-	if($family)
-		$this->SetFont($family,$style,$size);
-	//Set colors
-	$this->DrawColor=$dc;
-	if($dc!='0 G')
-		$this->_out($dc);
-	$this->FillColor=$fc;
-	if($fc!='0 g')
-		$this->_out($fc);
-	$this->TextColor=$tc;
-	$this->ColorFlag=$cf;
-	//Page header
-	$this->InHeader=true;
-	$this->Header();
-	$this->InHeader=false;
-	//Restore line width
-	if($this->LineWidth!=$lw)
-	{
-		$this->LineWidth=$lw;
-		$this->_out(sprintf('%.2F w',$lw*$this->k));
-	}
-	//Restore font
-	if($family)
-		$this->SetFont($family,$style,$size);
-	//Restore colors
-	if($this->DrawColor!=$dc)
-	{
-		$this->DrawColor=$dc;
-		$this->_out($dc);
-	}
-	if($this->FillColor!=$fc)
-	{
-		$this->FillColor=$fc;
-		$this->_out($fc);
-	}
-	$this->TextColor=$tc;
-	$this->ColorFlag=$cf;
-}
-
-function Header()
-{
-	//To be implemented in your own inherited class
-}
-
-function Footer()
-{
-	//To be implemented in your own inherited class
-}
-
-function PageNo()
-{
-	//Get current page number
-	return $this->page;
-}
-
-function SetDrawColor($r, $g=null, $b=null)
-{
-	//Set color for all stroking operations
-	if(($r==0 && $g==0 && $b==0) || $g===null)
-		$this->DrawColor=sprintf('%.3F G',$r/255);
-	else
-		$this->DrawColor=sprintf('%.3F %.3F %.3F RG',$r/255,$g/255,$b/255);
-	if($this->page>0)
-		$this->_out($this->DrawColor);
-}
-
-function SetFillColor($r, $g=null, $b=null)
-{
-	//Set color for all filling operations
-	if(($r==0 && $g==0 && $b==0) || $g===null)
-		$this->FillColor=sprintf('%.3F g',$r/255);
-	else
-		$this->FillColor=sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255);
-	$this->ColorFlag=($this->FillColor!=$this->TextColor);
-	if($this->page>0)
-		$this->_out($this->FillColor);
-}
-
-function SetTextColor($r, $g=null, $b=null)
-{
-	//Set color for text
-	if(($r==0 && $g==0 && $b==0) || $g===null)
-		$this->TextColor=sprintf('%.3F g',$r/255);
-	else
-		$this->TextColor=sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255);
-	$this->ColorFlag=($this->FillColor!=$this->TextColor);
-}
-
-function GetStringWidth($s)
-{
-	//Get width of a string in the current font
-	$s=(string)$s;
-	$cw=&$this->CurrentFont['cw'];
-	$w=0;
-	$l=strlen($s);
-	for($i=0;$i<$l;$i++)
-		$w+=$cw[$s[$i]];
-	return $w*$this->FontSize/1000;
-}
-
-function SetLineWidth($width)
-{
-	//Set line width
-	$this->LineWidth=$width;
-	if($this->page>0)
-		$this->_out(sprintf('%.2F w',$width*$this->k));
-}
-
-function Line($x1, $y1, $x2, $y2)
-{
-	//Draw a line
-	$this->_out(sprintf('%.2F %.2F m %.2F %.2F l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k));
-}
-
-function Rect($x, $y, $w, $h, $style='')
-{
-	//Draw a rectangle
-	if($style=='F')
-		$op='f';
-	elseif($style=='FD' || $style=='DF')
-		$op='B';
-	else
-		$op='S';
-	$this->_out(sprintf('%.2F %.2F %.2F %.2F re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op));
-}
-
-function AddFont($family, $style='', $file='')
-{
-	//Add a TrueType or Type1 font
-	$family=strtolower($family);
-	if($file=='')
-		$file=str_replace(' ','',$family).strtolower($style).'.php';
-	if($family=='arial')
-		$family='helvetica';
-	$style=strtoupper($style);
-	if($style=='IB')
-		$style='BI';
-	$fontkey=$family.$style;
-	if(isset($this->fonts[$fontkey]))
-		return;
-	include($this->_getfontpath().$file);
-	if(!isset($name))
-		$this->Error('Could not include font definition file');
-	$i=count($this->fonts)+1;
-	$this->fonts[$fontkey]=array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'enc'=>$enc, 'file'=>$file);
-	if($diff)
-	{
-		//Search existing encodings
-		$d=0;
-		$nb=count($this->diffs);
-		for($i=1;$i<=$nb;$i++)
-		{
-			if($this->diffs[$i]==$diff)
-			{
-				$d=$i;
-				break;
-			}
-		}
-		if($d==0)
-		{
-			$d=$nb+1;
-			$this->diffs[$d]=$diff;
-		}
-		$this->fonts[$fontkey]['diff']=$d;
-	}
-	if($file)
-	{
-		if($type=='TrueType')
-			$this->FontFiles[$file]=array('length1'=>$originalsize);
-		else
-			$this->FontFiles[$file]=array('length1'=>$size1, 'length2'=>$size2);
-	}
-}
-
-function SetFont($family, $style='', $size=0)
-{
-	//Select a font; size given in points
-	global $fpdf_charwidths;
-
-	$family=strtolower($family);
-	if($family=='')
-		$family=$this->FontFamily;
-	if($family=='arial')
-		$family='helvetica';
-	elseif($family=='symbol' || $family=='zapfdingbats')
-		$style='';
-	$style=strtoupper($style);
-	if(strpos($style,'U')!==false)
-	{
-		$this->underline=true;
-		$style=str_replace('U','',$style);
-	}
-	else
-		$this->underline=false;
-	if($style=='IB')
-		$style='BI';
-	if($size==0)
-		$size=$this->FontSizePt;
-	//Test if font is already selected
-	if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size)
-		return;
-	//Test if used for the first time
-	$fontkey=$family.$style;
-	if(!isset($this->fonts[$fontkey]))
-	{
-		//Check if one of the standard fonts
-		if(isset($this->CoreFonts[$fontkey]))
-		{
-			if(!isset($fpdf_charwidths[$fontkey]))
-			{
-				//Load metric file
-				$file=$family;
-				if($family=='times' || $family=='helvetica')
-					$file.=strtolower($style);
-				include($this->_getfontpath().$file.'.php');
-				if(!isset($fpdf_charwidths[$fontkey]))
-					$this->Error('Could not include font metric file');
-			}
-			$i=count($this->fonts)+1;
-			$name=$this->CoreFonts[$fontkey];
-			$cw=$fpdf_charwidths[$fontkey];
-			$this->fonts[$fontkey]=array('i'=>$i, 'type'=>'core', 'name'=>$name, 'up'=>-100, 'ut'=>50, 'cw'=>$cw);
-		}
-		else
-			$this->Error('Undefined font: '.$family.' '.$style);
-	}
-	//Select it
-	$this->FontFamily=$family;
-	$this->FontStyle=$style;
-	$this->FontSizePt=$size;
-	$this->FontSize=$size/$this->k;
-	$this->CurrentFont=&$this->fonts[$fontkey];
-	if($this->page>0)
-		$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
-}
-
-function SetFontSize($size)
-{
-	//Set font size in points
-	if($this->FontSizePt==$size)
-		return;
-	$this->FontSizePt=$size;
-	$this->FontSize=$size/$this->k;
-	if($this->page>0)
-		$this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
-}
-
-function AddLink()
-{
-	//Create a new internal link
-	$n=count($this->links)+1;
-	$this->links[$n]=array(0, 0);
-	return $n;
-}
-
-function SetLink($link, $y=0, $page=-1)
-{
-	//Set destination of internal link
-	if($y==-1)
-		$y=$this->y;
-	if($page==-1)
-		$page=$this->page;
-	$this->links[$link]=array($page, $y);
-}
-
-function Link($x, $y, $w, $h, $link)
-{
-	//Put a link on the page
-	$this->PageLinks[$this->page][]=array($x*$this->k, $this->hPt-$y*$this->k, $w*$this->k, $h*$this->k, $link);
-}
-
-function Text($x, $y, $txt)
-{
-	//Output a string
-	$s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
-	if ($txt!='')
-	{
-		if($this->underline) $s.=' '.$this->_dounderline($x,$y,$txt);
-	}
-	if($this->ColorFlag)
-		$s='q '.$this->TextColor.' '.$s.' Q';
-	$this->_out($s);
-}
-
-function AcceptPageBreak()
-{
-	//Accept automatic page break or not
-	return $this->AutoPageBreak;
-}
-
-function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
-{
-	//Output a cell
-	$k=$this->k;
-	if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
-	{
-		//Automatic page break
-		$x=$this->x;
-		$ws=$this->ws;
-		if($ws>0)
-		{
-			$this->ws=0;
-			$this->_out('0 Tw');
-		}
-		$this->AddPage($this->CurOrientation,$this->CurPageFormat);
-		$this->x=$x;
-		if($ws>0)
-		{
-			$this->ws=$ws;
-			$this->_out(sprintf('%.3F Tw',$ws*$k));
-		}
-	}
-	if($w==0)
-		$w=$this->w-$this->rMargin-$this->x;
-	$s='';
-	if($fill || $border==1)
-	{
-		if($fill)
-			$op=($border==1) ? 'B' : 'f';
-		else
-			$op='S';
-		$s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
-	}
-	if(is_string($border))
-	{
-		$x=$this->x;
-		$y=$this->y;
-		if(strpos($border,'L')!==false)
-			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
-		if(strpos($border,'T')!==false)
-			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
-		if(strpos($border,'R')!==false)
-			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
-		if(strpos($border,'B')!==false)
-			$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
-	}
-	if($txt!=='')
-	{
-		if($align=='R')
-			$dx=$w-$this->cMargin-$this->GetStringWidth($txt);
-		elseif($align=='C')
-			$dx=($w-$this->GetStringWidth($txt))/2;
-		else
-			$dx=$this->cMargin;
-		if($this->ColorFlag)
-			$s.='q '.$this->TextColor.' ';
-		$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
-		$s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
-		if($this->underline)
-			$s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
-		if($this->ColorFlag)
-			$s.=' Q';
-		if($link)
-			$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
-	}
-	if($s)
-		$this->_out($s);
-	$this->lasth=$h;
-	if($ln>0)
-	{
-		//Go to next line
-		$this->y+=$h;
-		if($ln==1)
-			$this->x=$this->lMargin;
-	}
-	else
-		$this->x+=$w;
-}
-
-function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false)
-{
-	//Output text with automatic or explicit line breaks
-	$cw=&$this->CurrentFont['cw'];
-	if($w==0)
-		$w=$this->w-$this->rMargin-$this->x;
-	$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
-	$s=str_replace("\r",'',$txt);
-	$nb=strlen($s);
-	if($nb>0 && $s[$nb-1]=="\n")
-		$nb--;
-	$b=0;
-	if($border)
-	{
-		if($border==1)
-		{
-			$border='LTRB';
-			$b='LRT';
-			$b2='LR';
-		}
-		else
-		{
-			$b2='';
-			if(strpos($border,'L')!==false)
-				$b2.='L';
-			if(strpos($border,'R')!==false)
-				$b2.='R';
-			$b=(strpos($border,'T')!==false) ? $b2.'T' : $b2;
-		}
-	}
-	$sep=-1;
-	$i=0;
-	$j=0;
-	$l=0;
-	$ns=0;
-	$nl=1;
-	while($i<$nb)
-	{
-		//Get next character
-		$c=$s[$i];
-		if($c=="\n")
-		{
-			//Explicit line break
-			if($this->ws>0)
-			{
-				$this->ws=0;
-				$this->_out('0 Tw');
-			}
-			$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
-			$i++;
-			$sep=-1;
-			$j=$i;
-			$l=0;
-			$ns=0;
-			$nl++;
-			if($border && $nl==2)
-				$b=$b2;
-			continue;
-		}
-		if($c==' ')
-		{
-			$sep=$i;
-			$ls=$l;
-			$ns++;
-		}
-		$l+=$cw[$c];
-		if($l>$wmax)
-		{
-			//Automatic line break
-			if($sep==-1)
-			{
-				if($i==$j)
-					$i++;
-				if($this->ws>0)
-				{
-					$this->ws=0;
-					$this->_out('0 Tw');
-				}
-				$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
-			}
-			else
-			{
-				if($align=='J')
-				{
-					$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
-					$this->_out(sprintf('%.3F Tw',$this->ws*$this->k));
-				}
-				$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);
-				$i=$sep+1;
-			}
-			$sep=-1;
-			$j=$i;
-			$l=0;
-			$ns=0;
-			$nl++;
-			if($border && $nl==2)
-				$b=$b2;
-		}
-		else
-			$i++;
-	}
-	//Last chunk
-	if($this->ws>0)
-	{
-		$this->ws=0;
-		$this->_out('0 Tw');
-	}
-	if($border && strpos($border,'B')!==false)
-		$b.='B';
-	$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
-	$this->x=$this->lMargin;
-}
-
-function Write($h, $txt, $link='')
-{
-	//Output text in flowing mode
-	$cw=&$this->CurrentFont['cw'];
-	$w=$this->w-$this->rMargin-$this->x;
-	$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
-	$s=str_replace("\r",'',$txt);
-	$nb=strlen($s);
-	$sep=-1;
-	$i=0;
-	$j=0;
-	$l=0;
-	$nl=1;
-	while($i<$nb)
-	{
-		//Get next character
-		$c=$s[$i];
-		if($c=="\n")
-		{
-			//Explicit line break
-			$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
-			$i++;
-			$sep=-1;
-			$j=$i;
-			$l=0;
-			if($nl==1)
-			{
-				$this->x=$this->lMargin;
-				$w=$this->w-$this->rMargin-$this->x;
-				$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
-			}
-			$nl++;
-			continue;
-		}
-		if($c==' ')
-			$sep=$i;
-		$l+=$cw[$c];
-		if($l>$wmax)
-		{
-			//Automatic line break
-			if($sep==-1)
-			{
-				if($this->x>$this->lMargin)
-				{
-					//Move to next line
-					$this->x=$this->lMargin;
-					$this->y+=$h;
-					$w=$this->w-$this->rMargin-$this->x;
-					$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
-					$i++;
-					$nl++;
-					continue;
-				}
-				if($i==$j)
-					$i++;
-				$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
-			}
-			else
-			{
-				$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link);
-				$i=$sep+1;
-			}
-			$sep=-1;
-			$j=$i;
-			$l=0;
-			if($nl==1)
-			{
-				$this->x=$this->lMargin;
-				$w=$this->w-$this->rMargin-$this->x;
-				$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
-			}
-			$nl++;
-		}
-		else
-			$i++;
-	}
-	//Last chunk
-	if($i!=$j)
-		$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link);
-}
-
-function Ln($h=null)
-{
-	//Line feed; default value is last cell height
-	$this->x=$this->lMargin;
-	if($h===null)
-		$this->y+=$this->lasth;
-	else
-		$this->y+=$h;
-}
-/*
- * en commentaire car erreur PHP : 
- * Strict Standards: Declaration of FPDF_Alpha::Image() should be compatible with that of FPDF::Image()
- */
-/*
-function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='')
-{
-	//Put an image on the page
-	if(!isset($this->images[$file]))
-	{
-		//First use of this image, get info
-		if($type=='')
-		{
-			$pos=strrpos($file,'.');
-			if(!$pos)
-				$this->Error('Image file has no extension and no type was specified: '.$file);
-			$type=substr($file,$pos+1);
-		}
-		$type=strtolower($type);
-		if($type=='jpeg')
-			$type='jpg';
-		$mtd='_parse'.$type;
-		if(!method_exists($this,$mtd))
-			$this->Error('Unsupported image type: '.$type);
-		$info=$this->$mtd($file);
-		$info['i']=count($this->images)+1;
-		$this->images[$file]=$info;
-	}
-	else
-		$info=$this->images[$file];
-	//Automatic width and height calculation if needed
-	if($w==0 && $h==0)
-	{
-		//Put image at 72 dpi
-		$w=$info['w']/$this->k;
-		$h=$info['h']/$this->k;
-	}
-	elseif($w==0)
-		$w=$h*$info['w']/$info['h'];
-	elseif($h==0)
-		$h=$w*$info['h']/$info['w'];
-	//Flowing mode
-	if($y===null)
-	{
-		if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
-		{
-			//Automatic page break
-			$x2=$this->x;
-			$this->AddPage($this->CurOrientation,$this->CurPageFormat);
-			$this->x=$x2;
-		}
-		$y=$this->y;
-		$this->y+=$h;
-	}
-	if($x===null)
-		$x=$this->x;
-	$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
-	if($link)
-		$this->Link($x,$y,$w,$h,$link);
-}
-*/
-function GetX()
-{
-	//Get x position
-	return $this->x;
-}
-
-function SetX($x)
-{
-	//Set x position
-	if($x>=0)
-		$this->x=$x;
-	else
-		$this->x=$this->w+$x;
-}
-
-function GetY()
-{
-	//Get y position
-	return $this->y;
-}
-
-function SetY($y)
-{
-	//Set y position and reset x
-	$this->x=$this->lMargin;
-	if($y>=0)
-		$this->y=$y;
-	else
-		$this->y=$this->h+$y;
-}
-
-function SetXY($x, $y)
-{
-	//Set x and y positions
-	$this->SetY($y);
-	$this->SetX($x);
-}
-
-function Output($name='', $dest='')
-{
-	//Output PDF to some destination
-	if($this->state<3)
-		$this->Close();
-	$dest=strtoupper($dest);
-	if($dest=='')
-	{
-		if($name=='')
-		{
-			$name='doc.pdf';
-			$dest='I';
-		}
-		else
-			$dest='F';
-	}
-	switch($dest)
-	{
-		case 'I':
-			//Send to standard output
-			if(ob_get_length())
-				$this->Error('Some data has already been output, can\'t send PDF file');
-			if(php_sapi_name()!='cli')
-			{
-				//We send to a browser
-				header('Content-Type: application/pdf');
-				if(headers_sent())
-					$this->Error('Some data has already been output, can\'t send PDF file');
-				header('Content-Length: '.strlen($this->buffer));
-				header('Content-Disposition: inline; filename="'.$name.'"');
-				header('Cache-Control: private, max-age=0, must-revalidate');
-				header('Pragma: public');
-				ini_set('zlib.output_compression','0');
-			}
-			echo $this->buffer;
-			break;
-		case 'D':
-			//Download file
-			if(ob_get_length())
-				$this->Error('Some data has already been output, can\'t send PDF file');
-			header('Content-Type: application/x-download');
-			if(headers_sent())
-				$this->Error('Some data has already been output, can\'t send PDF file');
-			header('Content-Length: '.strlen($this->buffer));
-			header('Content-Disposition: attachment; filename="'.$name.'"');
-			header('Cache-Control: private, max-age=0, must-revalidate');
-			header('Pragma: public');
-			ini_set('zlib.output_compression','0');
-			echo $this->buffer;
-			break;
-		case 'F':
-			//Save to local file
-			$f=fopen($name,'wb');
-			if(!$f)
-				$this->Error('Unable to create output file: '.$name);
-			fwrite($f,$this->buffer,strlen($this->buffer));
-			fclose($f);
-			break;
-		case 'S':
-			//Return as a string
-			return $this->buffer;
-		default:
-			$this->Error('Incorrect output destination: '.$dest);
-	}
-	return '';
-}
-
-/*******************************************************************************
-*                                                                              *
-*                              Protected methods                               *
-*                                                                              *
-*******************************************************************************/
-function _dochecks()
-{
-	//Check availability of %F
-	if(sprintf('%.1F',1.0)!='1.0')
-		$this->Error('This version of PHP is not supported');
-	//Check mbstring overloading
-	if(ini_get('mbstring.func_overload') & 2)
-		$this->Error('mbstring overloading must be disabled');
-	//Disable runtime magic quotes
-	if(get_magic_quotes_runtime())
-		@set_magic_quotes_runtime(0);
-}
-
-function _getpageformat($format)
-{
-	$format=strtolower($format);
-	if(!isset($this->PageFormats[$format]))
-		$this->Error('Unknown page format: '.$format);
-	$a=$this->PageFormats[$format];
-	return array($a[0]/$this->k, $a[1]/$this->k);
-}
-
-function _getfontpath()
-{
-	if(!defined('FPDF_FONTPATH') && is_dir(dirname(__FILE__).'/font'))
-		define('FPDF_FONTPATH',dirname(__FILE__).'/font/');
-	return defined('FPDF_FONTPATH') ? FPDF_FONTPATH : '';
-}
-
-function _beginpage($orientation, $format)
-{
-	$this->page++;
-	$this->pages[$this->page]='';
-	$this->state=2;
-	$this->x=$this->lMargin;
-	$this->y=$this->tMargin;
-	$this->FontFamily='';
-	//Check page size
-	if($orientation=='')
-		$orientation=$this->DefOrientation;
-	else
-		$orientation=strtoupper($orientation[0]);
-	if($format=='')
-		$format=$this->DefPageFormat;
-	else
-	{
-		if(is_string($format))
-			$format=$this->_getpageformat($format);
-	}
-	if($orientation!=$this->CurOrientation || $format[0]!=$this->CurPageFormat[0] || $format[1]!=$this->CurPageFormat[1])
-	{
-		//New size
-		if($orientation=='P')
-		{
-			$this->w=$format[0];
-			$this->h=$format[1];
-		}
-		else
-		{
-			$this->w=$format[1];
-			$this->h=$format[0];
-		}
-		$this->wPt=$this->w*$this->k;
-		$this->hPt=$this->h*$this->k;
-		$this->PageBreakTrigger=$this->h-$this->bMargin;
-		$this->CurOrientation=$orientation;
-		$this->CurPageFormat=$format;
-	}
-	if($orientation!=$this->DefOrientation || $format[0]!=$this->DefPageFormat[0] || $format[1]!=$this->DefPageFormat[1])
-		$this->PageSizes[$this->page]=array($this->wPt, $this->hPt);
-}
-
-function _endpage()
-{
-	$this->state=1;
-}
-
-function _escape($s)
-{
-	//Escape special characters in strings
-	$s=str_replace('\\','\\\\',$s);
-	$s=str_replace('(','\\(',$s);
-	$s=str_replace(')','\\)',$s);
-	$s=str_replace("\r",'\\r',$s);
-	return $s;
-}
-
-function _textstring($s)
-{
-	//Format a text string
-	return '('.$this->_escape($s).')';
-}
-
-function _UTF8toUTF16($s)
-{
-	//Convert UTF-8 to UTF-16BE with BOM
-	$res="\xFE\xFF";
-	$nb=strlen($s);
-	$i=0;
-	while($i<$nb)
-	{
-		$c1=ord($s[$i++]);
-		if($c1>=224)
-		{
-			//3-byte character
-			$c2=ord($s[$i++]);
-			$c3=ord($s[$i++]);
-			$res.=chr((($c1 & 0x0F)<<4) + (($c2 & 0x3C)>>2));
-			$res.=chr((($c2 & 0x03)<<6) + ($c3 & 0x3F));
-		}
-		elseif($c1>=192)
-		{
-			//2-byte character
-			$c2=ord($s[$i++]);
-			$res.=chr(($c1 & 0x1C)>>2);
-			$res.=chr((($c1 & 0x03)<<6) + ($c2 & 0x3F));
-		}
-		else
-		{
-			//Single-byte character
-			$res.="\0".chr($c1);
-		}
-	}
-	return $res;
-}
-
-function _dounderline($x, $y, $txt)
-{
-	//Underline text
-	$up=$this->CurrentFont['up'];
-	$ut=$this->CurrentFont['ut'];
-	$w=$this->GetStringWidth($txt)+$this->ws*substr_count($txt,' ');
-	return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt);
-}
-
-function _parsejpg($file)
-{
-	//Extract info from a JPEG file
-	$a=GetImageSize($file);
-	if(!$a)
-		$this->Error('Missing or incorrect image file: '.$file);
-	if($a[2]!=2)
-		$this->Error('Not a JPEG file: '.$file);
-	if(!isset($a['channels']) || $a['channels']==3)
-		$colspace='DeviceRGB';
-	elseif($a['channels']==4)
-		$colspace='DeviceCMYK';
-	else
-		$colspace='DeviceGray';
-	$bpc=isset($a['bits']) ? $a['bits'] : 8;
-	//Read whole file
-	$f=fopen($file,'rb');
-	$data='';
-	while(!feof($f))
-		$data.=fread($f,8192);
-	fclose($f);
-	return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data);
-}
-
-function _parsepng($file)
-{
-	//Extract info from a PNG file
-	$f=fopen($file,'rb');
-	if(!$f)
-		$this->Error('Can\'t open image file: '.$file);
-	//Check signature
-	if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
-		$this->Error('Not a PNG file: '.$file);
-	//Read header chunk
-	$this->_readstream($f,4);
-	if($this->_readstream($f,4)!='IHDR')
-		$this->Error('Incorrect PNG file: '.$file);
-	$w=$this->_readint($f);
-	$h=$this->_readint($f);
-	$bpc=ord($this->_readstream($f,1));
-	if($bpc>8)
-		$this->Error('16-bit depth not supported: '.$file);
-	$ct=ord($this->_readstream($f,1));
-	if($ct==0)
-		$colspace='DeviceGray';
-	elseif($ct==2)
-		$colspace='DeviceRGB';
-	elseif($ct==3)
-		$colspace='Indexed';
-	else
-		$this->Error('Alpha channel not supported: '.$file);
-	if(ord($this->_readstream($f,1))!=0)
-		$this->Error('Unknown compression method: '.$file);
-	if(ord($this->_readstream($f,1))!=0)
-		$this->Error('Unknown filter method: '.$file);
-	if(ord($this->_readstream($f,1))!=0)
-		$this->Error('Interlacing not supported: '.$file);
-	$this->_readstream($f,4);
-	$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
-	//Scan chunks looking for palette, transparency and image data
-	$pal='';
-	$trns='';
-	$data='';
-	do
-	{
-		$n=$this->_readint($f);
-		$type=$this->_readstream($f,4);
-		if($type=='PLTE')
-		{
-			//Read palette
-			$pal=$this->_readstream($f,$n);
-			$this->_readstream($f,4);
-		}
-		elseif($type=='tRNS')
-		{
-			//Read transparency info
-			$t=$this->_readstream($f,$n);
-			if($ct==0)
-				$trns=array(ord(substr($t,1,1)));
-			elseif($ct==2)
-				$trns=array(ord(substr($t,1,1)), ord(substr($t,3,1)), ord(substr($t,5,1)));
-			else
-			{
-				$pos=strpos($t,chr(0));
-				if($pos!==false)
-					$trns=array($pos);
-			}
-			$this->_readstream($f,4);
-		}
-		elseif($type=='IDAT')
-		{
-			//Read image data block
-			$data.=$this->_readstream($f,$n);
-			$this->_readstream($f,4);
-		}
-		elseif($type=='IEND')
-			break;
-		else
-			$this->_readstream($f,$n+4);
-	}
-	while($n);
-	if($colspace=='Indexed' && empty($pal))
-		$this->Error('Missing palette in '.$file);
-	fclose($f);
-	return array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'parms'=>$parms, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$data);
-}
-
-function _readstream($f, $n)
-{
-	//Read n bytes from stream
-	$res='';
-	while($n>0 && !feof($f))
-	{
-		$s=fread($f,$n);
-		if($s===false)
-			$this->Error('Error while reading stream');
-		$n-=strlen($s);
-		$res.=$s;
-	}
-	if($n>0)
-		$this->Error('Unexpected end of stream');
-	return $res;
-}
-
-function _readint($f)
-{
-	//Read a 4-byte integer from stream
-	$a=unpack('Ni',$this->_readstream($f,4));
-	return $a['i'];
-}
-
-function _parsegif($file)
-{
-	//Extract info from a GIF file (via PNG conversion)
-	if(!function_exists('imagepng'))
-		$this->Error('GD extension is required for GIF support');
-	if(!function_exists('imagecreatefromgif'))
-		$this->Error('GD has no GIF read support');
-	$im=imagecreatefromgif($file);
-	if(!$im)
-		$this->Error('Missing or incorrect image file: '.$file);
-	imageinterlace($im,0);
-	$tmp=tempnam('.','gif');
-	if(!$tmp)
-		$this->Error('Unable to create a temporary file');
-	if(!imagepng($im,$tmp))
-		$this->Error('Error while saving to temporary file');
-	imagedestroy($im);
-	$info=$this->_parsepng($tmp);
-	unlink($tmp);
-	return $info;
-}
-
-function _newobj()
-{
-	//Begin a new object
-	$this->n++;
-	$this->offsets[$this->n]=strlen($this->buffer);
-	$this->_out($this->n.' 0 obj');
-}
-
-function _putstream($s)
-{
-	$this->_out('stream');
-	$this->_out($s);
-	$this->_out('endstream');
-}
-
-function _out($s)
-{
-	//Add a line to the document
-	if($this->state==2)
-		$this->pages[$this->page].=$s."\n";
-	else
-		$this->buffer.=$s."\n";
-}
-
-function _putpages()
-{
-	$nb=$this->page;
-	if(!empty($this->AliasNbPages))
-	{
-		//Replace number of pages
-		for($n=1;$n<=$nb;$n++)
-			$this->pages[$n]=str_replace($this->AliasNbPages,$nb,$this->pages[$n]);
-	}
-	if($this->DefOrientation=='P')
-	{
-		$wPt=$this->DefPageFormat[0]*$this->k;
-		$hPt=$this->DefPageFormat[1]*$this->k;
-	}
-	else
-	{
-		$wPt=$this->DefPageFormat[1]*$this->k;
-		$hPt=$this->DefPageFormat[0]*$this->k;
-	}
-	$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-	for($n=1;$n<=$nb;$n++)
-	{
-		//Page
-		$this->_newobj();
-		$this->_out('<</Type /Page');
-		$this->_out('/Parent 1 0 R');
-		if(isset($this->PageSizes[$n]))
-			$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$this->PageSizes[$n][0],$this->PageSizes[$n][1]));
-		$this->_out('/Resources 2 0 R');
-		if(isset($this->PageLinks[$n]))
-		{
-			//Links
-			$annots='/Annots [';
-			foreach($this->PageLinks[$n] as $pl)
-			{
-				$rect=sprintf('%.2F %.2F %.2F %.2F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
-				$annots.='<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] ';
-				if(is_string($pl[4]))
-					$annots.='/A <</S /URI /URI '.$this->_textstring($pl[4]).'>>>>';
-				else
-				{
-					$l=$this->links[$pl[4]];
-					$h=isset($this->PageSizes[$l[0]]) ? $this->PageSizes[$l[0]][1] : $hPt;
-					$annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]>>',1+2*$l[0],$h-$l[1]*$this->k);
-				}
-			}
-			$this->_out($annots.']');
-		}
-		$this->_out('/Contents '.($this->n+1).' 0 R>>');
-		$this->_out('endobj');
-		//Page content
-		$p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n];
-		$this->_newobj();
-		$this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
-		$this->_putstream($p);
-		$this->_out('endobj');
-	}
-	//Pages root
-	$this->offsets[1]=strlen($this->buffer);
-	$this->_out('1 0 obj');
-	$this->_out('<</Type /Pages');
-	$kids='/Kids [';
-	for($i=0;$i<$nb;$i++)
-		$kids.=(3+2*$i).' 0 R ';
-	$this->_out($kids.']');
-	$this->_out('/Count '.$nb);
-	$this->_out(sprintf('/MediaBox [0 0 %.2F %.2F]',$wPt,$hPt));
-	$this->_out('>>');
-	$this->_out('endobj');
-}
-
-function _putfonts()
-{
-	$nf=$this->n;
-	foreach($this->diffs as $diff)
-	{
-		//Encodings
-		$this->_newobj();
-		$this->_out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.']>>');
-		$this->_out('endobj');
-	}
-	foreach($this->FontFiles as $file=>$info)
-	{
-		//Font file embedding
-		$this->_newobj();
-		$this->FontFiles[$file]['n']=$this->n;
-		$font='';
-		$f=fopen($this->_getfontpath().$file,'rb',1);
-		if(!$f)
-			$this->Error('Font file not found');
-		while(!feof($f))
-			$font.=fread($f,8192);
-		fclose($f);
-		$compressed=(substr($file,-2)=='.z');
-		if(!$compressed && isset($info['length2']))
-		{
-			$header=(ord($font[0])==128);
-			if($header)
-			{
-				//Strip first binary header
-				$font=substr($font,6);
-			}
-			if($header && ord($font[$info['length1']])==128)
-			{
-				//Strip second binary header
-				$font=substr($font,0,$info['length1']).substr($font,$info['length1']+6);
-			}
-		}
-		$this->_out('<</Length '.strlen($font));
-		if($compressed)
-			$this->_out('/Filter /FlateDecode');
-		$this->_out('/Length1 '.$info['length1']);
-		if(isset($info['length2']))
-			$this->_out('/Length2 '.$info['length2'].' /Length3 0');
-		$this->_out('>>');
-		$this->_putstream($font);
-		$this->_out('endobj');
-	}
-	foreach($this->fonts as $k=>$font)
-	{
-		//Font objects
-		$this->fonts[$k]['n']=$this->n+1;
-		$type=$font['type'];
-		$name=$font['name'];
-		if($type=='core')
-		{
-			//Standard font
-			$this->_newobj();
-			$this->_out('<</Type /Font');
-			$this->_out('/BaseFont /'.$name);
-			$this->_out('/Subtype /Type1');
-			if($name!='Symbol' && $name!='ZapfDingbats')
-				$this->_out('/Encoding /WinAnsiEncoding');
-			$this->_out('>>');
-			$this->_out('endobj');
-		}
-		elseif($type=='Type1' || $type=='TrueType')
-		{
-			//Additional Type1 or TrueType font
-			$this->_newobj();
-			$this->_out('<</Type /Font');
-			$this->_out('/BaseFont /'.$name);
-			$this->_out('/Subtype /'.$type);
-			$this->_out('/FirstChar 32 /LastChar 255');
-			$this->_out('/Widths '.($this->n+1).' 0 R');
-			$this->_out('/FontDescriptor '.($this->n+2).' 0 R');
-			if($font['enc'])
-			{
-				if(isset($font['diff']))
-					$this->_out('/Encoding '.($nf+$font['diff']).' 0 R');
-				else
-					$this->_out('/Encoding /WinAnsiEncoding');
-			}
-			$this->_out('>>');
-			$this->_out('endobj');
-			//Widths
-			$this->_newobj();
-			$cw=&$font['cw'];
-			$s='[';
-			for($i=32;$i<=255;$i++)
-				$s.=$cw[chr($i)].' ';
-			$this->_out($s.']');
-			$this->_out('endobj');
-			//Descriptor
-			$this->_newobj();
-			$s='<</Type /FontDescriptor /FontName /'.$name;
-			foreach($font['desc'] as $k=>$v)
-				$s.=' /'.$k.' '.$v;
-			$file=$font['file'];
-			if($file)
-				$s.=' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$file]['n'].' 0 R';
-			$this->_out($s.'>>');
-			$this->_out('endobj');
-		}
-		else
-		{
-			//Allow for additional types
-			$mtd='_put'.strtolower($type);
-			if(!method_exists($this,$mtd))
-				$this->Error('Unsupported font type: '.$type);
-			$this->$mtd($font);
-		}
-	}
-}
-
-function _putimages()
-{
-	$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-	reset($this->images);
-	while(list($file,$info)=each($this->images))
-	{
-		$this->_newobj();
-		$this->images[$file]['n']=$this->n;
-		$this->_out('<</Type /XObject');
-		$this->_out('/Subtype /Image');
-		$this->_out('/Width '.$info['w']);
-		$this->_out('/Height '.$info['h']);
-		if($info['cs']=='Indexed')
-			$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
-		else
-		{
-			$this->_out('/ColorSpace /'.$info['cs']);
-			if($info['cs']=='DeviceCMYK')
-				$this->_out('/Decode [1 0 1 0 1 0 1 0]');
-		}
-		$this->_out('/BitsPerComponent '.$info['bpc']);
-		if(isset($info['f']))
-			$this->_out('/Filter /'.$info['f']);
-		if(isset($info['parms']))
-			$this->_out($info['parms']);
-		if(isset($info['trns']) && is_array($info['trns']))
-		{
-			$trns='';
-			for($i=0;$i<count($info['trns']);$i++)
-				$trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
-			$this->_out('/Mask ['.$trns.']');
-		}
-		$this->_out('/Length '.strlen($info['data']).'>>');
-		$this->_putstream($info['data']);
-		unset($this->images[$file]['data']);
-		$this->_out('endobj');
-		//Palette
-		if($info['cs']=='Indexed')
-		{
-			$this->_newobj();
-			$pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
-			$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
-			$this->_putstream($pal);
-			$this->_out('endobj');
-		}
-	}
-}
-
-function _putxobjectdict()
-{
-	foreach($this->images as $image)
-		$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
-}
-
-function _putresourcedict()
-{
-	$this->_out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
-	$this->_out('/Font <<');
-	foreach($this->fonts as $font)
-		$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
-	$this->_out('>>');
-	$this->_out('/XObject <<');
-	$this->_putxobjectdict();
-	$this->_out('>>');
-}
-
-function _putresources()
-{
-	$this->_putfonts();
-	$this->_putimages();
-	//Resource dictionary
-	$this->offsets[2]=strlen($this->buffer);
-	$this->_out('2 0 obj');
-	$this->_out('<<');
-	$this->_putresourcedict();
-	$this->_out('>>');
-	$this->_out('endobj');
-}
-
-function _putinfo()
-{
-	$this->_out('/Producer '.$this->_textstring('FPDF '.FPDF_VERSION));
-	if(!empty($this->title))
-		$this->_out('/Title '.$this->_textstring($this->title));
-	if(!empty($this->subject))
-		$this->_out('/Subject '.$this->_textstring($this->subject));
-	if(!empty($this->author))
-		$this->_out('/Author '.$this->_textstring($this->author));
-	if(!empty($this->keywords))
-		$this->_out('/Keywords '.$this->_textstring($this->keywords));
-	if(!empty($this->creator))
-		$this->_out('/Creator '.$this->_textstring($this->creator));
-	$this->_out('/CreationDate '.$this->_textstring('D:'.@date('YmdHis')));
-}
-
-function _putcatalog()
-{
-	$this->_out('/Type /Catalog');
-	$this->_out('/Pages 1 0 R');
-	if($this->ZoomMode=='fullpage')
-		$this->_out('/OpenAction [3 0 R /Fit]');
-	elseif($this->ZoomMode=='fullwidth')
-		$this->_out('/OpenAction [3 0 R /FitH null]');
-	elseif($this->ZoomMode=='real')
-		$this->_out('/OpenAction [3 0 R /XYZ null null 1]');
-	elseif(!is_string($this->ZoomMode))
-		$this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']');
-	if($this->LayoutMode=='single')
-		$this->_out('/PageLayout /SinglePage');
-	elseif($this->LayoutMode=='continuous')
-		$this->_out('/PageLayout /OneColumn');
-	elseif($this->LayoutMode=='two')
-		$this->_out('/PageLayout /TwoColumnLeft');
-}
-
-function _putheader()
-{
-	$this->_out('%PDF-'.$this->PDFVersion);
-}
-
-function _puttrailer()
-{
-	$this->_out('/Size '.($this->n+1));
-	$this->_out('/Root '.$this->n.' 0 R');
-	$this->_out('/Info '.($this->n-1).' 0 R');
-}
-
-function _enddoc()
-{
-	$this->_putheader();
-	$this->_putpages();
-	$this->_putresources();
-	//Info
-	$this->_newobj();
-	$this->_out('<<');
-	$this->_putinfo();
-	$this->_out('>>');
-	$this->_out('endobj');
-	//Catalog
-	$this->_newobj();
-	$this->_out('<<');
-	$this->_putcatalog();
-	$this->_out('>>');
-	$this->_out('endobj');
-	//Cross-ref
-	$o=strlen($this->buffer);
-	$this->_out('xref');
-	$this->_out('0 '.($this->n+1));
-	$this->_out('0000000000 65535 f ');
-	for($i=1;$i<=$this->n;$i++)
-		$this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
-	//Trailer
-	$this->_out('trailer');
-	$this->_out('<<');
-	$this->_puttrailer();
-	$this->_out('>>');
-	$this->_out('startxref');
-	$this->_out($o);
-	$this->_out('%%EOF');
-	$this->state=3;
-}
-//End of class
-}
-
-//Handle special IE contype request
-if(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']=='contype')
-{
-	header('Content-Type: application/pdf');
-	exit;
-}

+ 0 - 0
main/inc/lib/html2pdf/_fpdf/index.html


+ 0 - 6
main/inc/lib/html2pdf/_fpdf/license.txt

@@ -1,6 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software to use, copy, modify, distribute, sublicense, and/or sell
-copies of the software, and to permit persons to whom the software is furnished
-to do so.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

+ 0 - 237
main/inc/lib/html2pdf/_mypdf/00_fpdf_codebar.class.php

@@ -1,237 +0,0 @@
-<?php
-/*************************************************************************
- * http://www.fpdf.org/en/script/script5.php
- * 
- * @author		Olivier
- * 
- * This script implements EAN13 and UPC-A barcodes (the second being a particular case of the first one). Bars are drawn directly in the PDF (no image is generated).
- * EAN13(float x, float y, string barcode [, float h [, float w]])
- * x: abscissa of barcode.
- * y: ordinate of barcode.
- * barcode: value of barcode.
- * h: height of barcode. Default value: 16.
- * w: width of a bar. Default value: 0.35.
- * 
- * UPC_A(float x, float y, string barcode [, float h [, float w]])
- * 
- * Same parameters.
- * 
- * An EAN13 barcode is made up of 13 digits, UPC-A of 12 (leading zeroes are added if necessary). The last digit is a check digit; if it's not supplied, it will be automatically computed. 
- ************************************************************************/
- 
-/*************************************************************************
- * http://www.fpdf.org/en/script/script46.php
- * 
- * @author		The-eh
- *
- * This script implements Code 39 barcodes. A Code 39 barcode can encode a string with the following characters: digits (0 to 9), uppercase letters (A to Z) and 8 additional characters (- . space $ / + % *).
- * Code39(float xpos, float ypos, string code [, float baseline [, float height]])
- * xpos: abscissa of barcode
- * ypos: ordinate of barcode
- * code: value of barcode
- * height: bar height
- * baseline: corresponds to the width of a wide bar
- ************************************************************************/
-
-
-if (!defined('__CLASS_FPDF_CODEBAR__'))
-{
-	define('__CLASS_FPDF_CODEBAR__', true);
-	
-	require_once(dirname(__FILE__).'/../_fpdf/fpdf.php');
-
-	class FPDF_Codebar extends FPDF
-	{
-		var $footer_param = array();
-		
-		function FPDF_Codebar($sens = 'P', $unit = 'mm', $format = 'A4')
-		{
-			$this->FPDF($sens, $unit, $format);
-		}
-		
-		function BARCODE_EAN13($x,$y,$barcode,$h=10,$w=.35)
-		{
-			return $this->Barcode($x,$y,$barcode,$h,$w,13);
-		}
-		
-		function BARCODE_UPC_A($x,$y,$barcode,$h=10,$w=.35)
-		{
-			return $this->Barcode($x,$y,$barcode,$h,$w,12);
-		}
-		
-		function GetCheckDigit($barcode)
-		{
-			//Compute the check digit
-			$sum=0;
-			for($i=1;$i<=11;$i+=2)
-				$sum+=3*$barcode{$i};
-			for($i=0;$i<=10;$i+=2)
-				$sum+=$barcode{$i};
-			$r=$sum%10;
-			if($r>0)
-				$r=10-$r;
-			return $r;
-		}
-		
-		function TestCheckDigit($barcode)
-		{
-			//Test validity of check digit
-			$sum=0;
-			for($i=1;$i<=11;$i+=2)
-				$sum+=3*$barcode{$i};
-			for($i=0;$i<=10;$i+=2)
-				$sum+=$barcode{$i};
-			return ($sum+$barcode{12})%10==0;
-		}
-		
-		function Barcode($x,$y,$barcode,$h,$w,$len)
-		{
-			//Padding
-			$barcode=str_pad($barcode,$len-1,'0',STR_PAD_LEFT);
-			if($len==12)
-				$barcode='0'.$barcode;
-			//Add or control the check digit
-			if(strlen($barcode)==12)
-				$barcode.=$this->GetCheckDigit($barcode);
-			elseif(!$this->TestCheckDigit($barcode))
-				$this->Error('Incorrect check digit');
-			//Convert digits to bars
-			$codes=array(
-				'A'=>array(
-					'0'=>'0001101','1'=>'0011001','2'=>'0010011','3'=>'0111101','4'=>'0100011',
-					'5'=>'0110001','6'=>'0101111','7'=>'0111011','8'=>'0110111','9'=>'0001011'),
-				'B'=>array(
-					'0'=>'0100111','1'=>'0110011','2'=>'0011011','3'=>'0100001','4'=>'0011101',
-					'5'=>'0111001','6'=>'0000101','7'=>'0010001','8'=>'0001001','9'=>'0010111'),
-				'C'=>array(
-					'0'=>'1110010','1'=>'1100110','2'=>'1101100','3'=>'1000010','4'=>'1011100',
-					'5'=>'1001110','6'=>'1010000','7'=>'1000100','8'=>'1001000','9'=>'1110100')
-				);
-			$parities=array(
-				'0'=>array('A','A','A','A','A','A'),
-				'1'=>array('A','A','B','A','B','B'),
-				'2'=>array('A','A','B','B','A','B'),
-				'3'=>array('A','A','B','B','B','A'),
-				'4'=>array('A','B','A','A','B','B'),
-				'5'=>array('A','B','B','A','A','B'),
-				'6'=>array('A','B','B','B','A','A'),
-				'7'=>array('A','B','A','B','A','B'),
-				'8'=>array('A','B','A','B','B','A'),
-				'9'=>array('A','B','B','A','B','A')
-				);
-			$code='101';
-			$p=$parities[$barcode{0}];
-			for($i=1;$i<=6;$i++)
-				$code.=$codes[$p[$i-1]][$barcode{$i}];
-			$code.='01010';
-			for($i=7;$i<=12;$i++)
-				$code.=$codes['C'][$barcode{$i}];
-			$code.='101';
-			//Draw bars
-			for($i=0;$i<strlen($code);$i++)
-			{
-				if($code{$i}=='1')
-					$this->Rect($x+$i*$w,$y,$w,$h,'F');
-			}
-			
-			$code_w = strlen($code)*$w;
-			$code_t = substr($barcode,-$len);
-			
-			$code_f = $code_w/strlen($code_t)*$this->k/0.60;
-			$code_h = $h+$code_f/$this->k;
-			
-			//Print text uder barcode
-			$this->SetFont('Arial','',$code_f);
-			$this->Text($x,$y+$h+0.90*$code_f/$this->k,$code_t);
-
-			return array($code_w, $code_h);
-		}
-		
-		function BARCODE_CODE39($xpos, $ypos, $code,$height=10, $baseline=0.5 )
-		{
-		
-			$wide = $baseline;
-			$narrow = $baseline / 3 ; 
-			$gap = $narrow;
-		
-			$barChar['0'] = 'nnnwwnwnn';
-			$barChar['1'] = 'wnnwnnnnw';
-			$barChar['2'] = 'nnwwnnnnw';
-			$barChar['3'] = 'wnwwnnnnn';
-			$barChar['4'] = 'nnnwwnnnw';
-			$barChar['5'] = 'wnnwwnnnn';
-			$barChar['6'] = 'nnwwwnnnn';
-			$barChar['7'] = 'nnnwnnwnw';
-			$barChar['8'] = 'wnnwnnwnn';
-			$barChar['9'] = 'nnwwnnwnn';
-			$barChar['A'] = 'wnnnnwnnw';
-			$barChar['B'] = 'nnwnnwnnw';
-			$barChar['C'] = 'wnwnnwnnn';
-			$barChar['D'] = 'nnnnwwnnw';
-			$barChar['E'] = 'wnnnwwnnn';
-			$barChar['F'] = 'nnwnwwnnn';
-			$barChar['G'] = 'nnnnnwwnw';
-			$barChar['H'] = 'wnnnnwwnn';
-			$barChar['I'] = 'nnwnnwwnn';
-			$barChar['J'] = 'nnnnwwwnn';
-			$barChar['K'] = 'wnnnnnnww';
-			$barChar['L'] = 'nnwnnnnww';
-			$barChar['M'] = 'wnwnnnnwn';
-			$barChar['N'] = 'nnnnwnnww';
-			$barChar['O'] = 'wnnnwnnwn'; 
-			$barChar['P'] = 'nnwnwnnwn';
-			$barChar['Q'] = 'nnnnnnwww';
-			$barChar['R'] = 'wnnnnnwwn';
-			$barChar['S'] = 'nnwnnnwwn';
-			$barChar['T'] = 'nnnnwnwwn';
-			$barChar['U'] = 'wwnnnnnnw';
-			$barChar['V'] = 'nwwnnnnnw';
-			$barChar['W'] = 'wwwnnnnnn';
-			$barChar['X'] = 'nwnnwnnnw';
-			$barChar['Y'] = 'wwnnwnnnn';
-			$barChar['Z'] = 'nwwnwnnnn';
-			$barChar['-'] = 'nwnnnnwnw';
-			$barChar['.'] = 'wwnnnnwnn';
-			$barChar[' '] = 'nwwnnnwnn';
-			$barChar['*'] = 'nwnnwnwnn';
-			$barChar['$'] = 'nwnwnwnnn';
-			$barChar['/'] = 'nwnwnnnwn';
-			$barChar['+'] = 'nwnnnwnwn';
-			$barChar['%'] = 'nnnwnwnwn';
-		
-			$xpos_dep = $xpos;
-			$code = '*'.strtoupper($code).'*';
-			for($i=0; $i<strlen($code); $i++){
-				$char = $code{$i};
-				if(!isset($barChar[$char])){
-					$this->Error('Invalid character in barcode: '.$char);
-				}
-				$seq = $barChar[$char];
-				for($bar=0; $bar<9; $bar++){
-					if($seq{$bar} == 'n'){
-						$lineWidth = $narrow;
-					}else{
-						$lineWidth = $wide;
-					}
-					if($bar % 2 == 0){
-						$this->Rect($xpos, $ypos, $lineWidth, $height, 'F');
-					}
-					$xpos += $lineWidth;
-				}
-				$xpos += $gap;
-			}
-			
-			$code_w = $xpos-$xpos_dep;
-			$code_t = $code;
-			
-			$code_f = $code_w/strlen($code_t)*$this->k/0.60/3;
-			$code_h = $height+$code_f/$this->k;
-			
-			//Print text uder barcode
-			$this->SetFont('Arial','',$code_f);
-			$this->Text($xpos_dep,$ypos+$height+0.90*$code_f/$this->k,$code_t);
-
-			return array($code_w, $code_h);
-		}
-	}
-}

+ 0 - 179
main/inc/lib/html2pdf/_mypdf/01_fpdf_bookmark.class.php

@@ -1,179 +0,0 @@
-<?php
-/*************************************************************************
- * http://www.fpdf.org/en/script/script1.php
- * 
- * @author		Olivier
- * 
- * This extension adds bookmark support. The method to add a bookmark is:
- * 
- * function Bookmark(string txt [, int level [, float y]])
- * 
- * txt: the bookmark title.
- * level: the bookmark level (0 is top level, 1 is just below, and so on).
- * y: the y position of the bookmark destination in the current page. -1 means the current position. Default value: 0.
- * 
- * The title must be encoded in ISO Latin-1.
- ************************************************************************/
-/*************************************************************************
- * http://www.fpdf.org/en/script/script13.php
- * 
- * @author		Min's
- * 
- * This class prints an index from the created bookmarks. 
- ************************************************************************/
- 
-if (!defined('__CLASS_FPDF_BOOKMARK__'))
-{
-	define('__CLASS_FPDF_BOOKMARK__', true);
-
-require_once(dirname(__FILE__).'/00_fpdf_codebar.class.php');
-
-	class FPDF_BookMark extends FPDF_Codebar
-	{
-		var $outlines=array();
-		var $OutlineRoot;
-		
-		function FPDF_BookMark($orientation='P',$unit='mm',$format='A4')
-		{
-			$this->FPDF_Codebar($orientation,$unit,$format);
-		
-		}
-		
-		function Bookmark($txt, $level=0, $y=0)
-		{
-			if($y==-1) $y=$this->GetY();
-			$this->outlines[]=array('t'=>$txt, 'l'=>$level, 'y'=>($this->h-$y)*$this->k, 'p'=>$this->PageNo());
-		}
-		
-		function _putbookmarks()
-		{
-			$nb=count($this->outlines);
-			if($nb==0) return;
-			$lru=array();
-			$level=0;
-			foreach($this->outlines as $i=>$o)
-			{
-				if($o['l']>0)
-				{
-					$parent=$lru[$o['l']-1];
-					//Set parent and last pointers
-					$this->outlines[$i]['parent']=$parent;
-					$this->outlines[$parent]['last']=$i;
-					if($o['l']>$level)
-					{
-						//Level increasing: set first pointer
-						$this->outlines[$parent]['first']=$i;
-					}
-				}
-				else
-					$this->outlines[$i]['parent']=$nb;
-					
-				if($o['l']<=$level and $i>0)
-				{
-					//Set prev and next pointers
-					$prev=$lru[$o['l']];
-					$this->outlines[$prev]['next']=$i;
-					$this->outlines[$i]['prev']=$prev;
-				}
-				$lru[$o['l']]=$i;
-				$level=$o['l'];
-			}
-			
-			//Outline items
-			$n=$this->n+1;
-			foreach($this->outlines as $i=>$o)
-			{
-				$this->_newobj();
-				$this->_out('<</Title '.$this->_textstring($o['t']));
-				$this->_out('/Parent '.($n+$o['parent']).' 0 R');
-				if(isset($o['prev']))
-				$this->_out('/Prev '.($n+$o['prev']).' 0 R');
-				if(isset($o['next']))
-				$this->_out('/Next '.($n+$o['next']).' 0 R');
-				if(isset($o['first']))
-				$this->_out('/First '.($n+$o['first']).' 0 R');
-				if(isset($o['last']))
-				$this->_out('/Last '.($n+$o['last']).' 0 R');
-				$this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]',1+2*$o['p'],$o['y']));
-				$this->_out('/Count 0>>');
-				$this->_out('endobj');
-			}
-			
-			//Outline root
-			$this->_newobj();
-			$this->OutlineRoot=$this->n;
-			$this->_out('<</Type /Outlines /First '.$n.' 0 R');
-			$this->_out('/Last '.($n+$lru[0]).' 0 R>>');
-			$this->_out('endobj');
-		}
-		
-		function _putresources()
-		{
-			parent::_putresources();
-			$this->_putbookmarks();
-		}
-		
-		function _putcatalog()
-		{
-			parent::_putcatalog();
-			if(count($this->outlines)>0)
-			{
-				$this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
-				$this->_out('/PageMode /UseOutlines');
-			}
-		}
-		
-		function CreateIndex(&$obj, $titre = 'Index', $size_title = 20, $size_bookmark = 15, $bookmark_title = true, $display_page = true)
-		{
-			if ($bookmark_title) $this->Bookmark($titre, 0, -1);
-			
-			//Index title
-			$this->SetFontSize($size_title);
-			$this->Cell(0,5,$titre,0,1,'C');
-			$this->SetFontSize($size_bookmark);
-			$this->Ln(10);
-			
-			$size=sizeof($this->outlines);
-			$PageCellSize=$this->GetStringWidth('p. '.$this->outlines[$size-1]['p'])+2;
-			for ($i=0;$i<$size;$i++)
-			{
-				if ($this->getY()+$this->FontSize>=($this->h - $this->bMargin))
-				{
-					$obj->setNewPage();
-					$this->SetFontSize($size_bookmark);
-				}
-				
-				//Offset
-				$level=$this->outlines[$i]['l'];
-				if($level>0) $this->Cell($level*8);
-				
-				//Caption
-				$str=$this->outlines[$i]['t'];
-				$strsize=$this->GetStringWidth($str);
-				$avail_size=$this->w-$this->lMargin-$this->rMargin-$PageCellSize-($level*8)-4;
-				while ($strsize>=$avail_size)
-				{
-					$str=substr($str,0,-1);
-					$strsize=$this->GetStringWidth($str);
-				}
-				if ($display_page)
-				{
-					$this->Cell($strsize+2,$this->FontSize+2,$str);
-				
-					//Filling dots
-					$w=$this->w-$this->lMargin-$this->rMargin-$PageCellSize-($level*8)-($strsize+2);
-					$nb=$w/$this->GetStringWidth('.');
-					$dots=str_repeat('.',$nb);
-					$this->Cell($w,$this->FontSize+2,$dots,0,0,'R');
-
-					//Page number
-					$this->Cell($PageCellSize,$this->FontSize+2,'p. '.$this->outlines[$i]['p'],0,1,'R');
-				}
-				else
-				{
-					$this->Cell($strsize+2,$this->FontSize+2,$str, 0, 1);					
-				}
-			}
-		}
-	}
-}

+ 0 - 227
main/inc/lib/html2pdf/_mypdf/02_fpdf_formulaire.class.php

@@ -1,227 +0,0 @@
-<?php
-/**
- * Logiciel : HTML2PDF - classe FPDF_Formulaire
- * 
- * permet la gestion de champs de formulaire dans un PDF 
- * Inspiré des sources de http://fpdf.org/fr/script/script36.php et http://fpdf.org/fr/script/script40.php
- *
- * @author		Laurent MINGUET <webmaster@spipu.net>
- */
-
-if (!defined('__CLASS_FPDF_FORMULAIRE__'))
-{
-	define('__CLASS_FPDF_FORMULAIRE__', true);
-	
-	require_once(dirname(__FILE__).'/01_fpdf_bookmark.class.php');
-	
-	class FPDF_Formulaire extends FPDF_BookMark
-	{
-		var $javascript = '';	//javascript code
-		var $n_js;				//numéro de l'objet javascript
-		var $n_cata;			//numéro de l'objet catalogue
-		var $ur;				//
-		
-		function FPDF_Formulaire($orientation='P',$unit='mm',$format='A4')
-		{
-			$this->FPDF_BookMark($orientation,$unit,$format);
-			$this->PDFVersion='1.6';
-			
-			$this->ur = false;
-		}
-		
-		 function _putuserrights()
-		{
-			if (!$this->ur) return;
-			$this->_out('/Perms<<');
-			
-			$this->_out('/UR3<<');
-			$this->_out('/Reference[<<');
-			$this->_out('/Type /SigRef');
-			$this->_out('/TransformMethod /UR3');
-			$this->_out('/TransformParams<<');
-			$this->_out('/Type /TransformParams');
-			$this->_out('/Annots[ /Create /Delete /Modify /Copy /Import /Export ]');
-			$this->_out('/Document [ /FullSave ]');
-			$this->_out('/Form[ /Add /FillIn /Delete /SubmitStandalone ]');
-			$this->_out('/Signature[ /Modify ]');
-			$this->_out('/V /2.2');
-			$this->_out('>>');
-			$this->_out('>>]');
-			$this->_out('>>');
-			$this->_out('>>');
-		}
-		
-		function _putresources()
-		{
-		
-			parent::_putresources();
-			$this->_putjavascript();
-		}
-		
-		function _putcatalog()
-		{
-			$this->n_cata = $this->n;
-			
-			parent::_putcatalog();
-			
-			if (!empty($this->javascript)) $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
-			$this->_putuserrights();
-		}
-
-		/*
-		* Create a javascript PDF string.
-		* @access protected
-		* @author Johannes Güntert, Nicola Asuni
-		*/
-		function _putjavascript()
-		{
-			if (empty($this->javascript)) return;
-			
-			// the following two lines are used to avoid form fields duplication after saving
-			if ($this->ur)
-			{
-				$js1 = "if(!this.getField('pdfoldsaved')) this.addField('pdfoldsaved','text',0, [0, 1, 0, 1]);";
-				$js2 = "getField('pdfoldsaved').value = 'saved';";
-			}
-			else
-			{
-				$js1 = '';
-				$js2 = '';	
-			}
-		
-			$this->_newobj();
-			$this->n_js = $this->n;
-			$this->_out('<<');
-			$this->_out('/Names [(EmbeddedJS) '.($this->n + 1).' 0 R ]');
-			$this->_out('>>');
-			$this->_out('endobj');
-			$this->_newobj();
-			$this->_out('<<');
-			$this->_out('/S /JavaScript');
-			$this->_out('/JS '.$this->_textstring($js1."\n".$this->javascript."\n".$js2));
-			$this->_out('>>');
-			$this->_out('endobj');
-		}
-		
-		/*
-		* Convert color to javascript color.
-		* @param string $color color name or #RRGGBB
-		* @access protected
-		* @author Denis Van Nuffelen, Nicola Asuni
-		*/
-		function _JScolor($color)
-		{
-			static $aColors = array('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray');
-			if (substr($color,0,1) == '#')
-			{
-				return sprintf("['RGB',%.3F,%.3F,%.3F]", hexdec(substr($color,1,2))/255, hexdec(substr($color,3,2))/255, hexdec(substr($color,5,2))/255);
-			}
-			if (!in_array($color,$aColors))
-			{
-				$this->Error('Invalid color: '.$color);
-			}
-			
-			return 'color.'.$color;
-		}
-		
-		/*
-		* Adds a javascript form field.
-		* @param string $type field type
-		* @param string $name field name
-		* @param int $x horizontal position
-		* @param int $y vertical position
-		* @param int $w width
-		* @param int $h height
-		* @param array $prop array of properties. Possible values are (http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf): <ul><li>rect: Position and size of field on page.</li><li>borderStyle: Rectangle border appearance.</li><li>strokeColor: Color of bounding rectangle.</li><li>lineWidth: Width of the edge of the surrounding rectangle.</li><li>rotation: Rotation of field in 90-degree increments.</li><li>fillColor: Background color of field (gray, transparent, RGB, or CMYK).</li><li>userName: Short description of field that appears on mouse-over.</li><li>readonly: Whether the user may change the field contents.</li><li>doNotScroll: Whether text fields may scroll.</li><li>display: Whether visible or hidden on screen or in print.</li><li>textFont: Text font.</li><li>textColor: Text color.</li><li>textSize: Text size.</li><li>richText: Rich text.</li><li>richValue: Text.</li><li>comb: Text comb format.</li><li>multiline: Text multiline.</li><li>charLimit: Text limit to number of characters.</li><li>fileSelect: Text file selection format.</li><li>password: Text password format.</li><li>alignment: Text layout in text fields.</li><li>buttonAlignX: X alignment of icon on button face.</li><li>buttonAlignY: Y alignment of icon on button face.</li><li>buttonFitBounds: Relative scaling of an icon to fit inside a button face.</li><li>buttonScaleHow: Relative scaling of an icon to fit inside a button face.</li><li>buttonScaleWhen: Relative scaling of an icon to fit inside a button face.</li><li>highlight: Appearance of a button when pushed.</li><li>style: Glyph style for checkbox and radio buttons.</li><li>numItems: Number of items in a combo box or list box.</li><li>editable: Whether the user can type in a combo box.</li><li>multipleSelection: Whether multiple list box items may be selected.</li></ul>
-		* @access protected
-		* @author Denis Van Nuffelen, Nicola Asuni
-		*/
-		function _addfield($type, $name, $x, $y, $w, $h, $prop, $js_after = '')
-		{
-			if (!isset($prop['textSize']))		$prop['textSize']		= $this->FontSizePt;
-			if (!isset($prop['strokeColor']))	$prop['strokeColor']	= 'ltGray';
-			if (isset($prop['value'])) 			$prop['value']			= str_replace('"', '', $prop['value']);
-
-			$this->SetFillColor(240);
-			if ($w>0 && $h>0)
-			{
-				$d = 1/$this->k;
-				$r = 0.1;
-				$this->Rect($x+$d*0.5+$r, $y-$d*0.5+$r, $w-$d-2*$r, $h-$d-2*$r, 'F');
-			}
-			
-			// javascript inclus			
-			$this->ur = true;
-			
-			// the followind avoid fields duplication after saving the document
-			$this->javascript .= "if(this.getField('pdfoldsaved') && this.getField('pdfoldsaved').value != 'saved') {";
-			$this->javascript .= sprintf("f".$name."=this.addField('%s','%s',%d,[%.2F,%.2F,%.2F,%.2F]);", $name, $type, $this->PageNo()-1, $x*$this->k, ($this->h-$y)*$this->k+1, ($x+$w)*$this->k, ($this->h-$y-$h)*$this->k+1)."\n";
-			$this->javascript .= 'f'.$name.'.textSize='.$this->FontSizePt.";\n";
-			while (list($key, $val) = each($prop))
-			{
-				if (strcmp(substr($key, -5), 'Color') == 0)
-					$val = $this->_JScolor($val);
-				else
-					$val = '"'.$val.'"';
-				$this->javascript .= 'f'.$name.'.'.$key.'='.$val.";\n";
-			}
-			
-			$this->javascript .= '}';
-			$this->javascript.= "\n".$js_after;
-		}
-		
-		function IncludeJS($script)
-		{
-			$this->javascript .= $script;
-		}
-		
-		function form_InputHidden($name, $value)
-		{
-			$prop = array('value' => $value);
-			$js_after = '';
-			$this->_addfield('checkbox', $name, 0, 0, 0.1, 0.1, $prop, $js_after);
-		}
-		
-		function form_InputCheckBox($name, $x, $y, $w, $checked)
-		{
-			$prop = array();
-			$prop['value'] = ($checked ? 'Yes' : 'Off');
-			$js_after = '';
-			$this->_addfield('checkbox', $name, $x, $y, $w, $w, $prop, $js_after);
-		}
-		
-		function form_InputRadio($name, $x, $y, $w)
-		{
-			$prop = array();
-			$js_after = '';
-			$this->_addfield('radiobutton', $name, $x, $y, $w, $w, $prop, $js_after);
-		}
-		
-		function form_InputText($name, $x, $y, $w, $h, $prop)
-		{
-			$js_after = '';
-			$this->_addfield('text', $name, $x, $y, $w, $h, $prop, $js_after);
-		}
-		
-		function form_InputButton($name, $x, $y, $w, $h, $caption, $action, $prop)
-		{
-			if (!isset($prop['borderStyle']))	$prop['borderStyle']	= 'beveled';
-			if (!isset($prop['fillColor']))		$prop['fillColor']		= 'ltGray';
-			if (!isset($prop['strokeColor']))	$prop['strokeColor']	= 'black';
-
-			$js_after = 'f'.$name.".buttonSetCaption('".addslashes($caption)."');\n";
-			$js_after.= 'f'.$name.".setAction('MouseUp','".addslashes($action)."');\n";
-			$js_after.= 'f'.$name.".highlight='push';\n";
-			$js_after.= 'f'.$name.".print=false;\n";
-			$this->_addfield('button', $name, $x, $y, $w, $h, $prop, $js_after);
-		}
-
-		function form_Select($name, $x, $y, $w, $h, $values, $multiligne, $prop)
-		{
-			$type = ($multiligne ? 'listbox' : 'combobox');				
-			$s = ''; foreach ($values as $value) { $s .= ($s ? ',' : '')."'".addslashes($value)."'"; }
-			$js_after = 'f'.$name.'.setItems(['.$s."]);\n";
-			$this->_addfield($type, $name, $x, $y, $w, $h, $prop, $js_after);
-		}
-	}
-}

+ 0 - 326
main/inc/lib/html2pdf/_mypdf/03_fpdf_alpha.class.php

@@ -1,326 +0,0 @@
-<?php
-/*************************************************************************
- * http://staff.dasdeck.de/valentin/fpdf/fpdf_alpha/
- * 
- * @author		Valentin Schmidt
- * 
- * This script allows to use images (PNGs or JPGs) with alpha-channels.
- * The alpha-channel can be either supplied as separate 8-bit PNG ("mask"),
- * or, for PNGs, also an internal alpha-channel can be used.
- * For the latter, the GD 2.x extension is required.
- ************************************************************************/
-
-
-if (!defined('__CLASS_FPDF_ALPHA__'))
-{
-	define('__CLASS_FPDF_ALPHA__', true);
-	
-	require_once(dirname(__FILE__).'/02_fpdf_formulaire.class.php');
-	
-	class FPDF_Alpha extends FPDF_Formulaire
-	{
-		var $tmpFiles = array(); 
-		
-		function FPDF_Alpha($orientation='P',$unit='mm',$format='A4')
-		{
-			$this->FPDF_Formulaire($orientation,$unit,$format);
-		}
-		
-		/* Public methods */
-		function Image($file,$x,$y,$w=0,$h=0,$type='',$link='', $isMask=false, $maskImg=0)
-		{
-			//Put an image on the page
-			if(!isset($this->images[$file]))
-			{
-				//First use of image, get info
-				if($type=='')
-				{
-					/* MODIFICATION HTML2PDF pour le support des images PHP */
-					$type = explode('?', $file);
-					$type = pathinfo($type[0]);
-					if (!isset($type['extension']) || !$type['extension'])
-						$this->Error('Image file has no extension and no type was specified: '.$file);
-						
-					$type = $type['extension'];
-					/* FIN MODIFICATION */
-/*
-					$pos=strrpos($file,'.');
-					if(!$pos)
-						$this->Error('Image file has no extension and no type was specified: '.$file);
-					$type=substr($file,$pos+1);
-*/
-				}
-				$type=strtolower($type);
-
-				/* MODIFICATION HTML2PDF pour le support des images PHP et CGI*/
-				if ($type=='php' || $type=='cgi')
-				{
-					// identification des infos
-					$infos=@GetImageSize($file);
-					if (!$infos) $this->Error('Unsupported image : '.$file);
-				
-					// identification du type
-					$type = explode('/', $infos['mime']);
-					if ($type[0]!='image') $this->Error('Unsupported image : '.$file);
-					$type = $type[1];
-				}
-				/* FIN MODIFICATION */
-				
-//				$mqr=get_magic_quotes_runtime();
-//				set_magic_quotes_runtime(0);
-				if($type=='jpg' || $type=='jpeg')
-					$info=$this->_parsejpg($file);
-				elseif($type=='png')
-				{
-					$info=$this->_parsepng($file);
-					if ($info=='alpha')
-						return $this->ImagePngWithAlpha($file,$x,$y,$w,$h,$link);
-				}
-				else
-				{
-					//Allow for additional formats
-					$mtd='_parse'.$type;
-					if(!method_exists($this,$mtd))
-					$this->Error('Unsupported image type: '.$type);
-					$info=$this->$mtd($file);
-				}
-//				set_magic_quotes_runtime($mqr);
-			
-				if ($isMask)
-				{
-					$info['cs']="DeviceGray"; // try to force grayscale (instead of indexed)
-				}
-				$info['i']=count($this->images)+1;
-				if ($maskImg>0) $info['masked'] = $maskImg;###
-				$this->images[$file]=$info;
-			}
-			else
-				$info=$this->images[$file];
-				
-			//Automatic width and height calculation if needed
-			if($w==0 && $h==0)
-			{
-				//Put image at 72 dpi
-				$w=$info['w']/$this->k;
-				$h=$info['h']/$this->k;
-			}
-			if($w==0)
-				$w=$h*$info['w']/$info['h'];
-			if($h==0)
-				$h=$w*$info['h']/$info['w'];
-		
-			if ($isMask) // embed hidden, ouside the canvas
-			{
-				$x = ($this->CurOrientation=='P'?$this->CurPageFormat[0]*2:$this->CurPageFormat[1]*2) + 10; 
-			}
-			else // modification by spipu :) pas besoin de tracer l'image si c'est pour faire un mask !!!!
-			{
-				$this->_out(sprintf('q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
-				if($link) $this->Link($x,$y,$w,$h,$link);
-			}
-		
-			return $info['i'];
-		}
-
-		// needs GD 2.x extension
-		// pixel-wise operation, not very fast
-		function ImagePngWithAlpha($file,$x,$y,$w=0,$h=0,$link='')
-		{
-			$tmp_alpha = tempnam('.', 'mska');
-			$this->tmpFiles[] = $tmp_alpha;
-			$tmp_plain = tempnam('.', 'mskp');
-			$this->tmpFiles[] = $tmp_plain;
-		
-			list($wpx, $hpx) = @getimagesize($file);
-			$img = imagecreatefrompng($file);
-			$alpha_img = imagecreate( $wpx, $hpx );
-		
-			// generate gray scale pallete
-			for($c=0;$c<256;$c++) ImageColorAllocate($alpha_img, $c, $c, $c);
-			
-			// extract alpha channel
-			$xpx=0;
-			while ($xpx<$wpx)
-			{
-				$ypx = 0;
-				while ($ypx<$hpx)
-				{
-					$color_index = imagecolorat($img, $xpx, $ypx);
-					$col = imagecolorsforindex($img, $color_index);
-					imagesetpixel($alpha_img, $xpx, $ypx, $this->_gamma( (127-$col['alpha'])*255/127) );
-					++$ypx;
-				}
-				++$xpx;
-			}
-		
-			imagepng($alpha_img, $tmp_alpha);
-			imagedestroy($alpha_img);
-		
-			// extract image without alpha channel
-			$plain_img = imagecreatetruecolor ( $wpx, $hpx );
-			imagecopy ($plain_img, $img, 0, 0, 0, 0, $wpx, $hpx );
-			imagepng($plain_img, $tmp_plain);
-			imagedestroy($plain_img);
-		
-			//first embed mask image (w, h, x, will be ignored)
-			$maskImg = $this->Image($tmp_alpha, 0,0,0,0, 'PNG', '', true);
-			
-			//embed image, masked with previously embedded mask
-			$this->Image($tmp_plain,$x,$y,$w,$h,'PNG',$link, false, $maskImg);
-		}
-	
-		function Close()
-		{
-			parent::Close();
-			// clean up tmp files
-			foreach($this->tmpFiles as $tmp) @unlink($tmp);
-		}
-
-		/* Private methods */
-		function _putimages()
-		{
-			$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-			reset($this->images);
-			while(list($file,$info)=each($this->images))
-			{
-				$this->_newobj();
-				$this->images[$file]['n']=$this->n;
-				$this->_out('<</Type /XObject');
-				$this->_out('/Subtype /Image');
-				$this->_out('/Width '.$info['w']);
-				$this->_out('/Height '.$info['h']);
-		
-				if (isset($info["masked"])) $this->_out('/SMask '.($this->n-1).' 0 R'); ###
-				
-				if($info['cs']=='Indexed')
-				$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
-				else
-				{
-					$this->_out('/ColorSpace /'.$info['cs']);
-					if($info['cs']=='DeviceCMYK')
-					$this->_out('/Decode [1 0 1 0 1 0 1 0]');
-				}
-				$this->_out('/BitsPerComponent '.$info['bpc']);
-				if(isset($info['f']))
-				$this->_out('/Filter /'.$info['f']);
-				if(isset($info['parms']))
-				$this->_out($info['parms']);
-				if(isset($info['trns']) && is_array($info['trns']))
-				{
-					$trns='';
-					for($i=0;$i<count($info['trns']);$i++)
-					$trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
-					$this->_out('/Mask ['.$trns.']');
-				}
-				$this->_out('/Length '.strlen($info['data']).'>>');
-				$this->_putstream($info['data']);
-				unset($this->images[$file]['data']);
-				$this->_out('endobj');
-				//Palette
-				if($info['cs']=='Indexed')
-				{
-					$this->_newobj();
-					$pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
-					$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
-					$this->_putstream($pal);
-					$this->_out('endobj');
-				}
-			}
-		}
-
-		// GD seems to use a different gamma, this method is used to correct it again
-		function _gamma($v)
-		{
-			return pow ($v/255, 2.2) * 255;
-		}
-
-		// this method overwriing the original version is only needed to make the Image method support PNGs with alpha channels.
-		// if you only use the ImagePngWithAlpha method for such PNGs, you can remove it from this script.
-		function _parsepng($file)
-		{
-			//Extract info from a PNG file
-			$f=fopen($file,'rb');
-			if(!$f)
-				$this->Error('Can\'t open image file: '.$file);
-			//Check signature
-			if(fread($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
-				$this->Error('Not a PNG file: '.$file);
-			//Read header chunk
-			fread($f,4);
-			if(fread($f,4)!='IHDR')
-				$this->Error('Incorrect PNG file: '.$file);
-			$w=$this->_readint($f);
-			$h=$this->_readint($f);
-			$bpc=ord(fread($f,1));
-			if($bpc>8)
-				$this->Error('16-bit depth not supported: '.$file);
-			$ct=ord(fread($f,1));
-			if($ct==0)
-				$colspace='DeviceGray';
-			elseif($ct==2)
-				$colspace='DeviceRGB';
-			elseif($ct==3)
-				$colspace='Indexed';
-			else
-			{
-				fclose($f);		// the only changes are
-				return 'alpha';	// made in those 2 lines
-			}
-			if(ord(fread($f,1))!=0)
-				$this->Error('Unknown compression method: '.$file);
-			if(ord(fread($f,1))!=0)
-				$this->Error('Unknown filter method: '.$file);
-			if(ord(fread($f,1))!=0)
-				$this->Error('Interlacing not supported: '.$file);
-			fread($f,4);
-			$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
-			//Scan chunks looking for palette, transparency and image data
-			$pal='';
-			$trns='';
-			$data='';
-			do
-			{
-				$n=$this->_readint($f);
-				$type=fread($f,4);
-				if($type=='PLTE')
-				{
-					//Read palette
-					$pal=fread($f,$n);
-					fread($f,4);
-				}
-				elseif($type=='tRNS')
-				{
-					//Read transparency info
-					$t=fread($f,$n);
-					if($ct==0)
-						$trns=array(ord(substr($t,1,1)));
-					elseif($ct==2)
-						$trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
-					else
-					{
-						$pos=strpos($t,chr(0));
-						if($pos!==false)
-							$trns=array($pos);
-					}
-					fread($f,4);
-				}
-				elseif($type=='IDAT')
-				{
-					//Read image data block
-					$data.=fread($f,$n);
-					fread($f,4);
-				}
-				elseif($type=='IEND')
-					break;
-				else
-					fread($f,$n+4);
-			}
-			while($n);
-			if($colspace=='Indexed' && empty($pal))
-				$this->Error('Missing palette in '.$file);
-			fclose($f);
-			return array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$data);
-		} 
-		
-	}
-}

+ 0 - 228
main/inc/lib/html2pdf/_mypdf/99_fpdf_protection.class.php

@@ -1,228 +0,0 @@
-<?php
-/*************************************************************************
- * http://www.fpdf.org/fr/script/script37.php
- * 
- * @author		Klemen Vodopivec
- * 
- * Ce script permet de protéger le PDF, c'est-à-dire empêcher l'utilisateur de copier son contenu, de l'imprimer ou de le modifier.
- * 
- * SetProtection([array permissions [, string user_pass [, string owner_pass]]])
- * 
- * permissions : l'ensemble des permissions. Vide par défaut (seule la lecture est autorisée).
- * user_pass : mot de passe utilisateur. Vide par défaut.
- * owner_pass : mot de passe propriétaire. Par défaut, une valeur aléatoire est choisie.
- * 
- * Le tableau des permissions est composé de valeurs prises parmi les suivantes :
- *		* copy : copie du texte et des images dans le presse-papier
- *		* print : impression du document
- *		* modify : modification (autre ques les annotations et les formulaires)
- *		* annot-forms : ajout d'annotations ou de formulaires 
- * 
- * Remarque : la protection contre la modification concerne les personnes possédant la version complète d'Acrobat.
- * 
- * Si vous ne spécifiez pas de mot de passe, le document s'ouvrira normalement. Si vous indiquez un mot de passe utilisateur,
- * le lecteur de PDF le demandera avant d'afficher le document. Le mot de passe propriétaire, s'il est différent de celui utilisateur,
- * permet d'obtenir l'accès complet.
- * 
- * Note : protéger un document nécessite de le crypter, ce qui augmente le temps de traitement de manière importante.
- * Cela peut dans certains cas entraîner un time-out au niveau de PHP, en particulier si le document contient des
- * images ou des polices.
- ************************************************************************/
-
-if (!defined('__CLASS_FPDF_PROTECTION__'))
-{
-	define('__CLASS_FPDF_PROTECTION__', true);
-	
-	require_once(dirname(__FILE__).'/03_fpdf_alpha.class.php');
-	
-	class FPDF_Protection extends FPDF_Alpha
-	{
-		var $encrypted;			//whether document is protected
-		var $Uvalue;			//U entry in pdf document
-		var $Ovalue;			//O entry in pdf document
-		var $Pvalue;			//P entry in pdf document
-		var $enc_obj_id;		//encryption object id
-		var $last_rc4_key;		//last RC4 key encrypted (cached for optimisation)
-		var $last_rc4_key_c;	//last RC4 computed key
-	
-		function FPDF_Protection($orientation='P',$unit='mm',$format='A4')
-		{
-			$this->FPDF_Formulaire($orientation,$unit,$format);
-	
-			$this->encrypted=false;
-			$this->last_rc4_key='';
-			$this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08".
-							"\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
-		}
-	
-		/**
-		* Function to set permissions as well as user and owner passwords
-		*
-		* - permissions is an array with values taken from the following list:
-		*	copy, print, modify, annot-forms
-		*	If a value is present it means that the permission is granted
-		* - If a user password is set, user will be prompted before document is opened
-		* - If an owner password is set, document can be opened in privilege mode with no
-		*	restriction if that password is entered
-		*/
-		function SetProtection($permissions=array(),$user_pass='',$owner_pass=null)
-		{
-			$options = array('print' => 4, 'modify' => 8, 'copy' => 16, 'annot-forms' => 32 );
-			$protection = 192;
-			foreach($permissions as $permission){
-				if (!isset($options[$permission]))
-					$this->Error('Incorrect permission: '.$permission);
-				$protection += $options[$permission];
-			}
-			if ($owner_pass === null)
-				$owner_pass = uniqid(rand());
-			$this->encrypted = true;
-			$this->_generateencryptionkey($user_pass, $owner_pass, $protection);
-		}
-
-/****************************************************************************
-*																			*
-*								Private methods								*
-*																			*
-****************************************************************************/
-
-		function _putstream($s)
-		{
-			if ($this->encrypted) {
-				$s = $this->_RC4($this->_objectkey($this->n), $s);
-			}
-			parent::_putstream($s);
-		}
-	
-		function _textstring($s)
-		{
-			if ($this->encrypted) {
-				$s = $this->_RC4($this->_objectkey($this->n), $s);
-			}
-			return parent::_textstring($s);
-		}
-	
-		/**
-		* Compute key depending on object number where the encrypted data is stored
-		*/
-		function _objectkey($n)
-		{
-			return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,10);
-		}
-	
-		function _putresources()
-		{
-			parent::_putresources();
-			if ($this->encrypted) {
-				$this->_newobj();
-				$this->enc_obj_id = $this->n;
-				$this->_out('<<');
-				$this->_putencryption();
-				$this->_out('>>');
-				$this->_out('endobj');
-			}
-		}
-	
-		function _putencryption()
-		{
-			$this->_out('/Filter /Standard');
-			$this->_out('/V 1');
-			$this->_out('/R 2');
-			$this->_out('/O ('.$this->_escape($this->Ovalue).')');
-			$this->_out('/U ('.$this->_escape($this->Uvalue).')');
-			$this->_out('/P '.$this->Pvalue);
-		}
-	
-		function _puttrailer()
-		{
-			parent::_puttrailer();
-			if ($this->encrypted) {
-				$this->_out('/Encrypt '.$this->enc_obj_id.' 0 R');
-				$this->_out('/ID [()()]');
-			}
-		}
-	
-		/**
-		* RC4 is the standard encryption algorithm used in PDF format
-		*/
-		function _RC4($key, $text)
-		{
-			if ($this->last_rc4_key != $key) {
-				$k = str_repeat($key, 256/strlen($key)+1);
-				$rc4 = range(0,255);
-				$j = 0;
-				for ($i=0; $i<256; $i++){
-					$t = $rc4[$i];
-					$j = ($j + $t + ord($k{$i})) % 256;
-					$rc4[$i] = $rc4[$j];
-					$rc4[$j] = $t;
-				}
-				$this->last_rc4_key = $key;
-				$this->last_rc4_key_c = $rc4;
-			} else {
-				$rc4 = $this->last_rc4_key_c;
-			}
-	
-			$len = strlen($text);
-			$a = 0;
-			$b = 0;
-			$out = '';
-			for ($i=0; $i<$len; $i++){
-				$a = ($a+1)%256;
-				$t= $rc4[$a];
-				$b = ($b+$t)%256;
-				$rc4[$a] = $rc4[$b];
-				$rc4[$b] = $t;
-				$k = $rc4[($rc4[$a]+$rc4[$b])%256];
-				$out.=chr(ord($text{$i}) ^ $k);
-			}
-	
-			return $out;
-		}
-	
-		/**
-		* Get MD5 as binary string
-		*/
-		function _md5_16($string)
-		{
-			return pack('H*',md5($string));
-		}
-	
-		/**
-		* Compute O value
-		*/
-		function _Ovalue($user_pass, $owner_pass)
-		{
-			$tmp = $this->_md5_16($owner_pass);
-			$owner_RC4_key = substr($tmp,0,5);
-			return $this->_RC4($owner_RC4_key, $user_pass);
-		}
-	
-		/**
-		* Compute U value
-		*/
-		function _Uvalue()
-		{
-			return $this->_RC4($this->encryption_key, $this->padding);
-		}
-	
-		/**
-		* Compute encryption key
-		*/
-		function _generateencryptionkey($user_pass, $owner_pass, $protection)
-		{
-			// Pad passwords
-			$user_pass = substr($user_pass.$this->padding,0,32);
-			$owner_pass = substr($owner_pass.$this->padding,0,32);
-			// Compute O value
-			$this->Ovalue = $this->_Ovalue($user_pass,$owner_pass);
-			// Compute encyption key
-			$tmp = $this->_md5_16($user_pass.$this->Ovalue.chr($protection)."\xFF\xFF\xFF");
-			$this->encryption_key = substr($tmp,0,5);
-			// Compute U value
-			$this->Uvalue = $this->_Uvalue();
-			// Compute P value
-			$this->Pvalue = -(($protection^255)+1);
-		}
-	}
-}

+ 0 - 0
main/inc/lib/html2pdf/_mypdf/index.html


+ 0 - 502
main/inc/lib/html2pdf/_mypdf/mypdf.class.php

@@ -1,502 +0,0 @@
-<?php
-/**
- * Logiciel : HTML2PDF - classe MyPDF
- * 
- * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
- * Distribué sous la licence LGPL. 
- *
- * @author		Laurent MINGUET <webmaster@spipu.net>
- * @version		3.26 - 16/11/2009
- */
-
-if (!defined('__CLASS_MYPDF__'))
-{
-	define('__CLASS_MYPDF__', true);
-	
-	require_once(dirname(__FILE__).'/99_fpdf_protection.class.php');		// classe fpdf_protection
-
-	class MyPDF extends FPDF_Protection
-	{
-		var $footer_param = array();
-		
-		var $underline		= false;
-		var $overline		= false;
-		var $linethrough	= false;
-			
-		function MyPDF($sens = 'P', $unit = 'mm', $format = 'A4')
-		{
-			$this->underline	= false;
-			$this->overline		= false;
-			$this->linethrough	= false;
-			
-			$this->FPDF_Protection($sens, $unit, $format);
-			$this->AliasNbPages();
-			$this->SetMyFooter();
-		}
-		
-		function SetMyFooter($page = null, $date = null, $heure = null, $form = null)
-		{
-			if ($page===null)	$page	= null;
-			if ($date===null)	$date	= null;
-			if ($heure===null)	$heure	= null;
-			if ($form===null)	$form	= null;
-			
-			$this->footer_param = array('page' => $page, 'date' => $date, 'heure' => $heure, 'form' => $form);	
-		}
-		
-		function Footer()
-		{ 
-			$txt = '';
-			if ($this->footer_param['form'])	$txt = (@HTML2PDF::textGET('pdf05'));
-			if ($this->footer_param['date'] && $this->footer_param['heure'])	$txt.= ($txt ? ' - ' : '').(@HTML2PDF::textGET('pdf03'));
-			if ($this->footer_param['date'] && !$this->footer_param['heure'])	$txt.= ($txt ? ' - ' : '').(@HTML2PDF::textGET('pdf01'));
-			if (!$this->footer_param['date'] && $this->footer_param['heure'])	$txt.= ($txt ? ' - ' : '').(@HTML2PDF::textGET('pdf02'));
-			if ($this->footer_param['page'])	$txt.= ($txt ? ' - ' : '').(@HTML2PDF::textGET('pdf04'));
-			
-			$txt = str_replace('[[date_d]]',	date('d'),			$txt);
-			$txt = str_replace('[[date_m]]',	date('m'),			$txt);
-			$txt = str_replace('[[date_y]]',	date('Y'),			$txt);
-			$txt = str_replace('[[date_h]]',	date('H'),			$txt);
-			$txt = str_replace('[[date_i]]',	date('i'),			$txt);
-			$txt = str_replace('[[date_s]]',	date('s'),			$txt);
-			$txt = str_replace('[[current]]',	$this->PageNo(),	$txt);
-			$txt = str_replace('[[nb]]',		'{nb}',				$txt);
-
-			if (strlen($txt)>0)
-			{
-			 	$this->SetY(-11);
-			 	$this->setOverline(false);
-			 	$this->setLinethrough(false);
-				$this->SetFont('Arial','I',8);
-				$this->Cell(0, 10, $txt, 0, 0, 'R');
-			}
-		}
-				
-		// Draw a polygon
-		// Auteur	: Andrew Meier
-		// Licence	: Freeware
-		function Polygon($points, $style='D')
-		{
-			if($style=='F')							$op='f';
-			elseif($style=='FD' or $style=='DF')	$op='b';
-			else									$op='s';
-		
-			$h = $this->h;
-			$k = $this->k;
-		
-			$points_string = '';
-			for($i=0; $i<count($points); $i+=2)
-			{
-				$points_string .= sprintf('%.2F %.2F', $points[$i]*$k, ($h-$points[$i+1])*$k);
-				if($i==0)	$points_string .= ' m ';
-				else		$points_string .= ' l ';
-			}
-			$this->_out($points_string . $op);
-		}
-		
-		function setOverline($value = true)
-		{
-			$this->overline = $value;
-		}
-
-		function setLinethrough($value = true)
-		{
-			$this->linethrough = $value;
-		}
-		
-		// redéfinition de la methode Text de FPDF afin de rajouter la gestion des overline et linethrough
-		function Text($x, $y, $txt)
-		{
-			//Output a string
-			$s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
-
-			/* MODIFICATION HTML2PDF pour le support de underline, overline, linethrough */
-			if ($txt!='')
-			{
-				if($this->underline)	$s.=' '.$this->_dounderline($x,$y,$txt);
-				if($this->overline)		$s.=' '.$this->_dooverline($x,$y,$txt);
-				if($this->linethrough)	$s.=' '.$this->_dolinethrough($x,$y,$txt);
-			}
-			/* FIN MODIFICATION */
-
-			if($this->ColorFlag)
-				$s='q '.$this->TextColor.' '.$s.' Q';
-			$this->_out($s);
-		}
-
-		// redéfinition de la methode Cell de FPDF afin de rajouter la gestion des overline et linethrough
-		function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
-		{
-			//Output a cell
-			$k=$this->k;
-			if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
-			{
-				//Automatic page break
-				$x=$this->x;
-				$ws=$this->ws;
-				if($ws>0)
-				{
-					$this->ws=0;
-					$this->_out('0 Tw');
-				}
-				$this->AddPage($this->CurOrientation,$this->CurPageFormat);
-				$this->x=$x;
-				if($ws>0)
-				{
-					$this->ws=$ws;
-					$this->_out(sprintf('%.3F Tw',$ws*$k));
-				}
-			}
-			if($w==0)
-				$w=$this->w-$this->rMargin-$this->x;
-			$s='';
-			if($fill || $border==1)
-			{
-				if($fill)
-					$op=($border==1) ? 'B' : 'f';
-				else
-					$op='S';
-				$s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
-			}
-			if(is_string($border))
-			{
-				$x=$this->x;
-				$y=$this->y;
-				if(strpos($border,'L')!==false)
-					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
-				if(strpos($border,'T')!==false)
-					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
-				if(strpos($border,'R')!==false)
-					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
-				if(strpos($border,'B')!==false)
-					$s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
-			}
-			if($txt!=='')
-			{
-				if($align=='R')
-					$dx=$w-$this->cMargin-$this->GetStringWidth($txt);
-				elseif($align=='C')
-					$dx=($w-$this->GetStringWidth($txt))/2;
-				else
-					$dx=$this->cMargin;
-				if($this->ColorFlag)
-					$s.='q '.$this->TextColor.' ';
-				$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
-				$s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
-				
-				/* MODIFICATION HTML2PDF pour le support de underline, overline, linethrough */
-				if($this->underline)	$s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
-				if($this->overline)		$s.=' '.$this->_dooverline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
-				if($this->linethrough)	$s.=' '.$this->_dolinethrough($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
-				/* FIN MODIFICATION */
-				
-				if($this->ColorFlag)
-					$s.=' Q';
-				if($link)
-					$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
-			}
-			if($s)
-				$this->_out($s);
-			$this->lasth=$h;
-			if($ln>0)
-			{
-				//Go to next line
-				$this->y+=$h;
-				if($ln==1)
-					$this->x=$this->lMargin;
-			}
-			else
-				$this->x+=$w;
-		}
-
-		function _dounderline($x, $y, $txt)
-		{
-			//Underline text
-			$up=$this->CurrentFont['up'];
-			$ut=$this->CurrentFont['ut'];
-
-			$p_x = $x*$this->k;
-			$p_y = ($this->h-($y-$up/1000*$this->FontSize))*$this->k;
-			$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
-			$p_h = -$ut/1000*$this->FontSizePt;
-
-			return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
-		}
-		
-		function _dooverline($x, $y, $txt)
-		{
-			//Overline text
-			$up=$this->CurrentFont['up'];
-			$ut=$this->CurrentFont['ut'];
-
-			$p_x = $x*$this->k;
-			$p_y = ($this->h-($y-(1000+1.5*$up)/1000*$this->FontSize))*$this->k;
-			$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
-			$p_h = -$ut/1000*$this->FontSizePt;
-			
-			return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
-		}
-		
-		function _dolinethrough($x, $y, $txt)
-		{
-			//Linethrough text
-			$up=$this->CurrentFont['up'];
-			$ut=$this->CurrentFont['ut'];
-
-			$p_x = $x*$this->k;
-			$p_y = ($this->h-($y-(1000+2.5*$up)/2000*$this->FontSize))*$this->k;
-			$p_w = ($this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '))*$this->k;
-			$p_h = -$ut/1000*$this->FontSizePt;
-			
-			return sprintf('%.2F %.2F %.2F %.2F re f',$p_x,$p_y,$p_w,$p_h);
-		}
-		
-		function clippingPathOpen($x = null, $y = null, $w = null, $h = null, $coin_TL=null, $coin_TR=null, $coin_BL=null, $coin_BR=null)
-		{
-			$path = '';
-			if ($x!==null && $y!==null && $w!==null && $h!==null)
-			{
-				$x1 = $x*$this->k;
-				$y1 = ($this->h-$y)*$this->k;
-
-				$x2 = ($x+$w)*$this->k;
-				$y2 = ($this->h-$y)*$this->k;
-
-				$x3 = ($x+$w)*$this->k;
-				$y3 = ($this->h-$y-$h)*$this->k;
-
-				$x4 = $x*$this->k;
-				$y4 = ($this->h-$y-$h)*$this->k;
-				
-				if ($coin_TL || $coin_TR || $coin_BL || $coin_BR)
-				{
-					if ($coin_TL) { $coin_TL[0] = $coin_TL[0]*$this->k; $coin_TL[1] =-$coin_TL[1]*$this->k; }
-					if ($coin_TR) { $coin_TR[0] = $coin_TR[0]*$this->k; $coin_TR[1] =-$coin_TR[1]*$this->k; }
-					if ($coin_BL) { $coin_BL[0] = $coin_BL[0]*$this->k; $coin_BL[1] =-$coin_BL[1]*$this->k; }
-					if ($coin_BR) { $coin_BR[0] = $coin_BR[0]*$this->k; $coin_BR[1] =-$coin_BR[1]*$this->k; }
-
-					$MyArc = 4/3 * (sqrt(2) - 1);
-					
-					if ($coin_TL)
-						$path.= sprintf('%.2F %.2F m ', $x1+$coin_TL[0], $y1);
-					else
-						$path.= sprintf('%.2F %.2F m ', $x1, $y1);
-					
-					if ($coin_TR)
-					{
-						$xt1 = ($x2-$coin_TR[0])+$coin_TR[0]*$MyArc;
-						$yt1 = ($y2+$coin_TR[1])-$coin_TR[1];
-						$xt2 = ($x2-$coin_TR[0])+$coin_TR[0];
-						$yt2 = ($y2+$coin_TR[1])-$coin_TR[1]*$MyArc;
-
-						$path.= sprintf('%.2F %.2F l ', $x2-$coin_TR[0], $y2);						
-						$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x2, $y2+$coin_TR[1]);
-					}
-					else
-						$path.= sprintf('%.2F %.2F l ', $x2, $y2);
-
-					if ($coin_BR)
-					{
-						$xt1 = ($x3-$coin_BR[0])+$coin_BR[0];
-						$yt1 = ($y3-$coin_BR[1])+$coin_BR[1]*$MyArc;
-						$xt2 = ($x3-$coin_BR[0])+$coin_BR[0]*$MyArc;
-						$yt2 = ($y3-$coin_BR[1])+$coin_BR[1];
-
-						$path.= sprintf('%.2F %.2F l ', $x3, $y3-$coin_BR[1]);						
-						$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x3-$coin_BR[0], $y3);
-					}
-					else
-						$path.= sprintf('%.2F %.2F l ', $x3, $y3);
-
-					if ($coin_BL)
-					{
-						$xt1 = ($x4+$coin_BL[0])-$coin_BL[0]*$MyArc;
-						$yt1 = ($y4-$coin_BL[1])+$coin_BL[1];
-						$xt2 = ($x4+$coin_BL[0])-$coin_BL[0];
-						$yt2 = ($y4-$coin_BL[1])+$coin_BL[1]*$MyArc;
-
-						$path.= sprintf('%.2F %.2F l ', $x4+$coin_BL[0], $y4);						
-						$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x4, $y4-$coin_BL[1]);
-					}
-					else
-						$path.= sprintf('%.2F %.2F l ', $x4, $y4);
-				
-					if ($coin_TL)
-					{
-						$xt1 = ($x1+$coin_TL[0])-$coin_TL[0];
-						$yt1 = ($y1+$coin_TL[1])-$coin_TL[1]*$MyArc;
-						$xt2 = ($x1+$coin_TL[0])-$coin_TL[0]*$MyArc;
-						$yt2 = ($y1+$coin_TL[1])-$coin_TL[1];
-
-						$path.= sprintf('%.2F %.2F l ', $x1, $y1+$coin_TL[1]);						
-						$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $x1+$coin_TL[0], $y1);
-					}
-				}
-				else
-				{
-					$path.= sprintf('%.2F %.2F m ', $x1, $y1);
-					$path.= sprintf('%.2F %.2F l ', $x2, $y2);
-					$path.= sprintf('%.2F %.2F l ', $x3, $y3);
-					$path.= sprintf('%.2F %.2F l ', $x4, $y4);
-				}
-
-				$path.= ' h W n';
-			}
-			$this->_out('q '.$path.' ');			
-		}
-		
-		function clippingPathClose()
-		{
-			$this->_out(' Q');
-		}
-		
-		function drawCourbe($ext1_x, $ext1_y, $ext2_x, $ext2_y, $int1_x, $int1_y, $int2_x, $int2_y, $cen_x, $cen_y)
-		{
-			$MyArc = 4/3 * (sqrt(2) - 1);
-			
-			$ext1_x = $ext1_x*$this->k; $ext1_y = ($this->h-$ext1_y)*$this->k;
-			$ext2_x = $ext2_x*$this->k; $ext2_y = ($this->h-$ext2_y)*$this->k;
-			$int1_x = $int1_x*$this->k; $int1_y = ($this->h-$int1_y)*$this->k;
-			$int2_x = $int2_x*$this->k; $int2_y = ($this->h-$int2_y)*$this->k;
-			$cen_x	= $cen_x*$this->k;	$cen_y	= ($this->h-$cen_y) *$this->k;
-			
-			$path = '';
-			
-			if ($ext1_x-$cen_x!=0)
-			{
-				$xt1 = $cen_x+($ext1_x-$cen_x);
-				$yt1 = $cen_y+($ext2_y-$cen_y)*$MyArc;
-				$xt2 = $cen_x+($ext1_x-$cen_x)*$MyArc;
-				$yt2 = $cen_y+($ext2_y-$cen_y);
-			}
-			else
-			{
-				$xt1 = $cen_x+($ext2_x-$cen_x)*$MyArc;
-				$yt1 = $cen_y+($ext1_y-$cen_y);
-				$xt2 = $cen_x+($ext2_x-$cen_x);
-				$yt2 = $cen_y+($ext1_y-$cen_y)*$MyArc;
-
-			}
-
-			$path.= sprintf('%.2F %.2F m ', $ext1_x, $ext1_y);
-			$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $ext2_x, $ext2_y);
-
-			if ($int1_x-$cen_x!=0)
-			{
-				$xt1 = $cen_x+($int1_x-$cen_x)*$MyArc;
-				$yt1 = $cen_y+($int2_y-$cen_y);
-				$xt2 = $cen_x+($int1_x-$cen_x);
-				$yt2 = $cen_y+($int2_y-$cen_y)*$MyArc;
-			}
-			else
-			{
-				$xt1 = $cen_x+($int2_x-$cen_x);
-				$yt1 = $cen_y+($int1_y-$cen_y)*$MyArc;
-				$xt2 = $cen_x+($int2_x-$cen_x)*$MyArc;
-				$yt2 = $cen_y+($int1_y-$cen_y);
-
-			}
-			
-			$path.= sprintf('%.2F %.2F l ', $int2_x, $int2_y);
-			$path.= sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', $xt1, $yt1, $xt2, $yt2, $int1_x, $int1_y);
-
-			$this->_out($path . 'f');
-		}
-		
-		function startTransform()
-		{
-			$this->_out('q');
-		}
-		
-		function stopTransform()
-		{
-			$this->_out('Q');
-		}
-
-		function setTranslate($t_x, $t_y)
-		{
-			// matrice de transformation
-			$tm[0]=1;
-			$tm[1]=0;
-			$tm[2]=0;
-			$tm[3]=1;
-			$tm[4]=$t_x*$this->k;
-			$tm[5]=-$t_y*$this->k;
-			
-			$this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F cm', $tm[0],$tm[1],$tm[2],$tm[3],$tm[4],$tm[5]));
-		}
-
-		
-		function setRotation($angle, $x='', $y='')
-		{
-			if($x === '') $x=$this->x;
-			if($y === '') $y=$this->y;
-			
-			$y=($this->h-$y)*$this->k;
-			$x*=$this->k;
-			
-			// matrice de transformation
-			$tm[0]=cos(deg2rad($angle));
-			$tm[1]=sin(deg2rad($angle));
-			$tm[2]=-$tm[1];
-			$tm[3]=$tm[0];
-			$tm[4]=$x+$tm[1]*$y-$tm[0]*$x;
-			$tm[5]=$y-$tm[0]*$y-$tm[1]*$x;
-			
-			$this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F cm', $tm[0],$tm[1],$tm[2],$tm[3],$tm[4],$tm[5]));
-		}
-	
-		function setMyDrawColor($c)
-		{
-			$c = $this->setMyColor($c, true);
-			if (!$c) return false;
-
-			$this->DrawColor=$c;
-			if($this->page>0) $this->_out($this->DrawColor);
-		}
-		
-		function setMyFillColor($c)
-		{
-			$c = $this->setMyColor($c);
-			if (!$c) return false;
-
-			$this->FillColor=$c;
-			$this->ColorFlag=($this->FillColor!=$this->TextColor);
-			if($this->page>0) $this->_out($this->FillColor);
-		}
-			
-		function setMyTextColor($c)
-		{
-			$c = $this->setMyColor($c);
-			if (!$c) return false;
-
-			$this->TextColor=$c;
-			$this->ColorFlag=($this->FillColor!=$this->TextColor);
-		}
-		
-		function setMyColor($c, $mode = false)
-		{
-			if (!is_array($c))		return sprintf('%.3F ',$c).($mode ? 'G' : 'g');
-			elseif (count($c)==3)	return sprintf('%.3F %.3F %.3F ',$c[0],$c[1],$c[2]).($mode ? 'RG' : 'rg');
-			elseif (count($c)==4)	return sprintf('%.3F %.3F %.3F %.3F ',$c[0],$c[1],$c[2],$c[3]).($mode ? 'K' : 'k');
-			return null;
-		}
-		
-		function SetX($x)
-		{
-			$this->x=$x;
-		}
-		
-		function SetY($y)
-		{
-			$this->x=$this->lMargin;
-			$this->y=$y;
-		}
-		
-		function SetXY($x, $y)
-		{
-			$this->x=$x;
-			$this->y=$y;
-		}
-	}
-}

+ 0 - 4999
main/inc/lib/html2pdf/html2pdf.class.php

@@ -1,4999 +0,0 @@
-<?php
-/**
- * Logiciel : HTML2PDF
- * 
- * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
- * Distribué sous la licence LGPL. 
- *
- * @author		Laurent MINGUET <webmaster@spipu.net>
- * @version		3.26 - 16/11/2009
- */
-
-
-/**
-* 	Author: Juan Carlos Raña Trabado
-* 	forced to read first because another similar library (but different version) can be found elsewhere in the system
-*/
-
-$configurationPearPath = $configuration['root_sys'].'/main/inc/lib/html2pdf';
-ini_set('include_path', $configurationPearPath);
-
-
-if (!defined('__CLASS_HTML2PDF__'))
-{
-	define('__CLASS_HTML2PDF__', '3.26');
-
-	require_once(dirname(__FILE__).'/_mypdf/mypdf.class.php');	// classe mypdf dérivé de fpdf de Olivier PLATHEY 
-	require_once(dirname(__FILE__).'/parsingHTML.class.php');	// classe de parsing HTML
-	require_once(dirname(__FILE__).'/styleHTML.class.php');		// classe de gestion des styles
-
-	global $HTML2PDF_TABLEAU;	$HTML2PDF_TABLEAU = array();	// tableau global necessaire à la gestion des tables imbriquées 
-
-	class HTML2PDF
-	{
-		var $langue			= 'fr';		// langue des messages
-		var $sens			= 'P';		// sens d'affichage Portrait ou Landscape
-		var $format			= 'A4';		// format de la page : A4, A3, ...
-		var $background		= array();	// informations sur le background
-		var $testTDin1page	= true;		// activer le test de TD ne devant pas depasser une page
-		var $testIsImage	= true;		// test si les images existes ou non
-		
-		var $style			= null;		// objet de style
-		var $parsing		= null;		// objet de parsing
-		var $parse_pos		= 0;		// position du parsing
-		var $temp_pos		= 0;		// position temporaire pour multi tableau
-		var $page			= 0;		// numero de la page courante
-		
-		var $sub_html		= null;		// sous html
-		var $sub_part		= false;	// indicateur de sous html
-		var $isSubPart		= false;	// indique que le convertisseur courant est un sous html
-		
-		var $pdf			= null;		// objet PDF
-		var $maxX			= 0;		// zone maxi X
-		var $maxY			= 0;		// zone maxi Y
-
-		var $FirstPage		= true;		// premier page
-		
-		var $defaultLeft	= 0;		// marges par default de la page
-		var $defaultTop		= 0;
-		var $defaultRight	= 0;
-		var $defaultBottom	= 0;
-		
-		var $margeLeft		= 0;		//marges réelles de la page
-		var $margeTop		= 0;
-		var $margeRight		= 0;
-		var $margeBottom	= 0;
-		var $marges			= array();
-		var $Maxs			= array();
-		
-		var $maxH			= 0;		// plus grande hauteur dans la ligne, pour saut de ligne à corriger
-		var $inLink			= '';		// indique si on est à l'interieur d'un lien
-		var $lstAncre		= array();	// liste des ancres détectées ou créées
-		var $subHEADER		= array();	// tableau des sous commandes pour faire l'HEADER
-		var $subFOOTER		= array();	// tableau des sous commandes pour faire le FOOTER
-		var $subSTATES		= array();	// tableau de sauvegarde de certains paramètres
-		var $defLIST		= array();	// tableau de sauvegarde de l'etat des UL et OL
-		
-		var $lstChamps		= array();	// liste des champs
-		var $lstSelect		= array();	// options du select en cours
-		var $previousCall	= null;		// dernier appel
-		var $pageMarges		= array();	// marges spécifiques dues aux floats
-		var $isInTfoot		= false;	// indique si on est dans un tfoot
-		var $isInOverflow	= false;	// indique si on est dans une div overflow
-		var $isAfterFloat	= false;	// indique si on est apres un float
-		var $forOneLine		= false;	// indique si on est dans un sous HTML ne servant qu'a calculer la taille de la prochaine ligne
-		var $encoding		= 'ISO-8859-15';		// encodage utilisé pour les entites html
-		
-		var $DEBUG_actif		= false;	// indique si on est en mode debug
-		var $DEBUG_ok_usage		= false;	// indique l'existance de la fonction memory_get_usage
-		var $DEBUG_ok_peak		= false;	// indique l'existance de la fonction memory_get_peak_usage
-		var $DEBUG_level		= 0;		// niveau du debug
-		var $DEBUG_start_time	= 0;		// 
-		var $DEBUG_last_time	= 0;		// 
-		var $defaultFont		= null;		// fonte par défaut si la fonte demandée n'existe pas
-
-		/**
-		 * Constructeur
-		 *
-		 * @param	string		sens portrait ou landscape
-		 * @param	string		format A4, A5, ...
-		 * @param	string		langue : fr, en, it...
-		 * @param	array		marges par defaut, dans l'ordre (left, top, right, bottom)
-		 * @param	boolean		forcer la création de la premiere page, ne pas utiliser, c'est utilisé en interne pour la gestion des tableaux
-		 * @return	null
-		 */
-		function HTML2PDF($sens = 'P', $format = 'A4', $langue='fr', $marges = array(5, 5, 5, 8), $force_page = false)
-		{
-			// sauvegarde des paramètres
-			$this->page 		= 0;
-			$this->sens			= $sens;
-			$this->format		= $format;
-			$this->FirstPage	= true;
-			$this->langue		= strtolower($langue);
-			
-			// chargement du fichier de langue
-			$this->textLOAD($this->langue);
-			
-			// création de l' objet PDF
-			$this->pdf = new MyPDF($sens, 'mm', $format);
-
-			// initialisation des styles
-			$this->style = new styleHTML($this->pdf);
-			$this->style->FontSet();
-			$this->defLIST = array();
-			
-			// initialisations diverses
-			$this->setTestTdInOnePage(true);
-			$this->setTestIsImage(true);
-			$this->setDefaultFont(null);
-			
-			// initialisation du parsing
-			$this->parsing = new parsingHTML();
-			$this->sub_html = null; 
-			$this->sub_part	= false;
-			
-			// initialisation des marges
-			if (!is_array($marges)) $marges = array($marges, $marges, $marges, $marges);	
-			$this->setDefaultMargins($marges[0], $marges[1], $marges[2], $marges[3]);
-			$this->setMargins();
-			$this->marges = array();
-
-			// initialisation des champs de formulaire
-			$this->lstChamps = array();
-
-			// premier page forcée
-			if ($force_page) $this->setNewPage($this->format, $this->sens);
-		}
-		
-		/**
-		* activer le debug mode
-		*
-		* @return	null
-		*/
-		function setModeDebug()
-		{
-			list($usec, $sec) = explode(' ', microtime());
-			
-			$this->DEBUG_actif = true;
-			$this->DEBUG_ok_usage = function_exists('memory_get_usage');
-			$this->DEBUG_ok_peak = function_exists('memory_get_peak_usage');
-			$this->DEBUG_start_time		= (float)$sec + (float)$usec;
-			$this->DEBUG_last_time		= (float)$sec + (float)$usec;
-			
-			$this->DEBUG_stepline('step', 'time', 'delta', 'memory', 'peak');
-			$this->DEBUG_add('Init debug');
-		}
-		
-		/**
-		* rajouter une ligne de debug
-		*
-		* @param	string	nom de l'etape
-		* @param	boolean true=monter d'un niveau, false=descendre d'un niveau, null : ne rien faire
-		* @return	null
-		*/
-		function DEBUG_add($nom, $level=null)
-		{
-			list($usec, $sec) = explode(' ', microtime());
-			if ($level===true) $this->DEBUG_level++;
-
-			$nom	= str_repeat('  ',$this->DEBUG_level). $nom.($level===true ? ' Begin' : ($level===false ? ' End' : ''));
-			$time	= (float)$sec + (float)$usec;
-			$usage	= ($this->DEBUG_ok_usage ? memory_get_usage() : 0);
-			$peak	= ($this->DEBUG_ok_peak ? memory_get_peak_usage() : 0);
-
-			$this->DEBUG_stepline(
-						$nom,
-						number_format(($time - $this->DEBUG_start_time)*1000, 1, '.', ' ').' ms',
-						number_format(($time - $this->DEBUG_last_time)*1000, 1, '.', ' ').' ms',
-						number_format($usage/1024, 1, '.', ' ').' Ko',
-						number_format($peak/1024, 1, '.', ' ').' Ko');
-						
-			$this->DEBUG_last_time = $time;
-			if ($level===false) $this->DEBUG_level--;
-			return true;
-		}
-		
-		/**
-		* affiche une ligne de debug
-		*
-		* @param	string	nom de l'etape
-		* @param	string	valeur 1
-		* @param	string	valeur 2
-		* @param	string	valeur 3
-		* @param	string	valeur 4
-		* @return	null
-		*/
-		function DEBUG_stepline($nom, $val1, $val2, $val3, $val4)
-		{
-			$txt = str_pad($nom, 30, ' ', STR_PAD_RIGHT).
-					str_pad($val1, 12, ' ', STR_PAD_LEFT).
-					str_pad($val2, 12, ' ', STR_PAD_LEFT).
-					str_pad($val3, 15, ' ', STR_PAD_LEFT).
-					str_pad($val4, 15, ' ', STR_PAD_LEFT);
-					
-			echo '<pre style="padding:0; margin:0">'.$txt.'</pre>';
-		}
-		
-		/**
-		* activer ou desactiver le test de TD ne devant pas depasser une page
-		*
-		* @param	boolean	nouvel etat
-		* @return	boolean ancien etat
-		*/
-		function setTestTdInOnePage($mode = true)
-		{
-			$old = $this->testTDin1page;
-			$this->testTDin1page = $mode ? true : false;
-			return $old;
-		}
-		
-		/**
-		* renseigner l'encoding à utiliser
-		*
-		* @param	string	nouvel encoding
-		* @return	string	ancien encoding
-		*/
-		function setEncoding($encoding = 'ISO-8859-15')
-		{
-			$old = $this->encoding;
-			$this->encoding = $encoding;
-			return $old;
-		}
-		
-		/**
-		* activer ou desactiver le test sur la présence des images
-		*
-		* @param	boolean	nouvel etat
-		* @return	boolean ancien etat
-		*/
-		function setTestIsImage($mode = true)
-		{
-			$old = $this->testIsImage;
-			$this->testIsImage = $mode ? true : false;
-			return $old;
-		}
-			
-		/**
-		* définit la fonte par défaut si aucun fonte n'est spécifiée, ou si la fonte demandée n'existe pas
-		*
-		* @param	string	nom de la fonte par defaut. si null : Arial pour fonte non spécifiée, et erreur pour fonte non existante 
-		* @return	string	nom de l'ancienne fonte par defaut
-		*/
-		function setDefaultFont($default = null)
-		{
-			$old = $this->defaultFont;
-			$this->defaultFont = $default;
-			$this->style->setDefaultFont($default);
-			return $old;
-		}
-			
-		/**
-		* définir les marges par défault
-		*
-		* @param	int		en mm, marge left
-		* @param	int		en mm, marge top
-		* @param	int		en mm, marge right. si null, left=right
-		* @param	int		en mm, marge bottom. si null, bottom=8
-		* @return	null
-		*/
-		function setDefaultMargins($left, $top, $right = null, $bottom = null)
-		{
-			if ($right===null)	$right = $left;
-			if ($bottom===null)	$bottom = 8;
-			
-			$this->defaultLeft		= $this->style->ConvertToMM($left.'mm');
-			$this->defaultTop		= $this->style->ConvertToMM($top.'mm');
-			$this->defaultRight		= $this->style->ConvertToMM($right.'mm');
-			$this->defaultBottom	= $this->style->ConvertToMM($bottom.'mm');
-		}
-
-		/**
-		* définir les marges réelles, fonctions de la balise page
-		*
-		* @return	null
-		*/
-		function setMargins()
-		{
-			$this->margeLeft	= $this->defaultLeft	+ (isset($this->background['left'])		? $this->background['left']		: 0);
-			$this->margeRight	= $this->defaultRight	+ (isset($this->background['right'])	? $this->background['right']	: 0);
-			$this->margeTop		= $this->defaultTop 	+ (isset($this->background['top'])		? $this->background['top']		: 0);
-			$this->margeBottom	= $this->defaultBottom	+ (isset($this->background['bottom'])	? $this->background['bottom']	: 0);
-			
-			$this->pdf->SetMargins($this->margeLeft, $this->margeTop, $this->margeRight);
-			$this->pdf->cMargin = 0;
-			$this->pdf->SetAutoPageBreak(false, $this->margeBottom);
-		}
-		
-		/**
-		* recuperer les positions x minimales et maximales en fonction d'une hauteur
-		*
-		* @param	float	y
-		* @return	array(float, float)
-		*/
-		function getMargins($y)
-		{
-			$y = floor($y*100);
-			$x = array($this->pdf->lMargin, $this->pdf->w-$this->pdf->rMargin);
-			
-			foreach($this->pageMarges as $m_y => $m_x)
-				if ($m_y<=$y) $x = $m_x;
-			
-			return $x;
-		}
-		
-		/**
-		* ajouter une marge suite a un float
-		*
-		* @param	string	left ou right
-		* @param	float	x1
-		* @param	float	y1
-		* @param	float	x2
-		* @param	float	y2
-		* @return	null
-		*/
-		function addMargins($float, $x1, $y1, $x2, $y2)
-		{
-			$old1 = $this->getMargins($y1);
-			$old2 = $this->getMargins($y2);
-			if ($float=='left') $old1[0] = $x2;
-			if ($float=='right') $old1[1] = $x1;
-			
-			$y1 = floor($y1*100);
-			$y2 = floor($y2*100);
-
-			foreach($this->pageMarges as $m_y => $m_x)
-			{
-				if ($m_y<$y1) continue;				
-				if ($m_y>$y2) break;	
-				if ($float=='left' && $this->pageMarges[$m_y][0]<$x2) unset($this->pageMarges[$m_y]);
-				if ($float=='right' && $this->pageMarges[$m_y][1]>$x1) unset($this->pageMarges[$m_y]);
-			}
-
-			$this->pageMarges[$y1] = $old1;
-			$this->pageMarges[$y2] = $old2;
-			
-			ksort($this->pageMarges);
-			
-			$this->isAfterFloat = true;
-		}
-	
-		/**
-		* définir des nouvelles marges et sauvegarder les anciennes
-		*
-		* @param	float	marge left
-		* @param	float	marge top
-		* @param	float	marge right
-		* @return	null
-		*/
-		function saveMargin($ml, $mt, $mr)
-		{
-			$this->marges[] = array('l' => $this->pdf->lMargin, 't' => $this->pdf->tMargin, 'r' => $this->pdf->rMargin, 'page' => $this->pageMarges);
-			$this->pdf->SetMargins($ml, $mt, $mr);
-
-			$this->pageMarges = array();
-			$this->pageMarges[floor($mt*100)] = array($ml, $this->pdf->w-$mr);
-		}
-						
-		/**
-		* récuperer les dernières marches sauvées
-		*
-		* @return	null
-		*/
-		function loadMargin()
-		{
-			$old = array_pop($this->marges);
-			if ($old)
-			{
-				$ml = $old['l'];
-				$mt = $old['t'];
-				$mr = $old['r'];
-				$mP = $old['page'];
-			}
-			else
-			{
-				$ml = $this->margeLeft;
-				$mt = 0;
-				$mr = $this->margeRight;
-				$mP = array($mt => array($ml, $this->pdf->w-$mr));
-			}
-			
-			$this->pdf->SetMargins($ml, $mt, $mr);
-			$this->pageMarges = $mP;
-		}
-		
-		/**
-		* permet d'ajouter une fonte.
-		*
-		* @param	string nom de la fonte
-		* @param	string style de la fonte
-		* @param	string fichier de la fonte
-		* @return	null
-		*/
-		function AddFont($family, $style='', $file='')
-		{
-			$this->pdf->AddFont($family, $style, $file);
-		}
-		
-		/**
-		* sauvegarder l'état actuelle des maximums
-		*
-		* @return	null
-		*/
-		function saveMax()
-		{
-			$this->Maxs[] = array($this->maxX, $this->maxY, $this->maxH);
-		}
-				
-		/**
-		* charger le dernier état sauvé des maximums
-		*
-		* @return	null
-		*/
-		function loadMax()
-		{
-			$old = array_pop($this->Maxs);
-
-			if ($old)
-			{
-				$this->maxX = $old[0];
-				$this->maxY = $old[1];
-				$this->maxH = $old[2];
-			}
-			else
-			{
-				$this->maxX = 0;
-				$this->maxY = 0;
-				$this->maxH = 0;
-			}
-		}
-		
-		/**
-		* afficher l'header contenu dans page_header
-		*
-		* @return	null
-		*/
-		function SetPageHeader()
-		{
-			if (!count($this->subHEADER)) return false;
-
-			$OLD_parse_pos = $this->parse_pos;
-			$OLD_parse_code = $this->parsing->code;
-			
-			$this->parse_pos = 0;
-			$this->parsing->code = $this->subHEADER;
-			$this->MakeHTMLcode();
-			
-			$this->parse_pos = 	$OLD_parse_pos;
-			$this->parsing->code = $OLD_parse_code;
-		}
-
-		/**
-		* afficher le footer contenu dans page_footer
-		*
-		* @return	null
-		*/
-		function SetPageFooter()
-		{
-			if (!count($this->subFOOTER)) return false;
-
-			$OLD_parse_pos = $this->parse_pos;
-			$OLD_parse_code = $this->parsing->code;
-			
-			$this->parse_pos = 0;
-			$this->parsing->code = $this->subFOOTER;
-			$this->MakeHTMLcode();
-			
-			$this->parse_pos = 	$OLD_parse_pos;
-			$this->parsing->code = $OLD_parse_code;
-		}
-		
-		/**
-		* saut de ligne avec une hauteur spécifique
-		*
-		* @param	float	hauteur de la ligne
-		* @param	integer	position reelle courante si saut de ligne pendant l'ecriture d'un texte 
-		* @return	null
-		*/
-		function setNewLine($h, $curr = null)
-		{
-			$this->pdf->Ln($h);
-			
-			$this->setNewPositionForNewLine($curr);
-		}
-			
-		/**
-		* création d'une nouvelle page avec le format et l'orientation spécifies
-		*
-		* @param	mixed	format de la page : A5, A4, array(width, height)
-		* @param	string	sens P=portrait ou L=landscape
-		* @param	array	tableau des propriétés du fond de la page
-		* @param	integer	position reelle courante si saut de ligne pendant l'ecriture d'un texte 
-		* @return	null
-		*/
-		function setNewPage($format = null, $orientation = '', $background = null, $curr = null)
-		{
-			$this->FirstPage = false;
-
-			$this->format = $format ? $format : $this->format;
-			$this->sens = $orientation ? $orientation : $this->sens;
-			$this->background = $background!==null ? $background : $this->background;
-			$this->maxY = 0;	
-			$this->maxX = 0;
-			$this->maxH = 0;
-			
-			$this->pdf->lMargin = $this->defaultLeft;
-			$this->pdf->rMargin = $this->defaultRight;
-			$this->pdf->tMargin = $this->defaultTop;
-			$this->pdf->AddPage($this->sens, $this->format);
-			$this->page++;
-			
-			if (!$this->sub_part && !$this->isSubPart)
-			{
-				if (is_array($this->background))
-				{
-					if (isset($this->background['color']) && $this->background['color'])
-					{
-						$this->pdf->setMyFillColor($this->background['color']);
-						$this->pdf->Rect(0, 0, $this->pdf->w, $this->pdf->h, 'F');
-					}
-
-					if (isset($this->background['img']) && $this->background['img'])
-						$this->pdf->Image($this->background['img'], $this->background['posX'], $this->background['posY'], $this->background['width']);
-				}	
-				
-				$this->SetPageHeader();
-				$this->SetPageFooter();
-			}
-			
-			$this->SetMargins();
-			$this->pdf->y = $this->margeTop;
-			
-			$this->setNewPositionForNewLine($curr);
-			$this->maxH = 0;
-		}
-		
-		/**
-		* calcul de la position de debut de la prochaine ligne en fonction de l'alignement voulu
-		*
-		* @param	integer	position reelle courante si saut de ligne pendant l'ecriture d'un texte 
-		* @return	null
-		*/
-		function setNewPositionForNewLine($curr = null)
-		{
-			list($lx, $rx) = $this->getMargins($this->pdf->y);
-			$this->pdf->x=$lx;
-			
-			if (
-				$this->style->value['text-align']!='right' && 
-				$this->style->value['text-align']!='center' && 
-				$this->style->value['text-align']!='justify'
-				)
-				return null;
-
-			$sub = null;
-			$this->CreateSubHTML($sub);
-			$sub->saveMargin(0, 0, $sub->pdf->w-$rx+$lx);
-			$sub->forOneLine = true;
-			$sub->parse_pos = $this->parse_pos;
-			$sub->parsing->code = $this->parsing->code;
-			
-			if ($curr!==null && $sub->parsing->code[$this->parse_pos]['name']=='write')
-				$sub->parsing->code[$this->parse_pos]['param']['txt'] = substr($sub->parsing->code[$this->parse_pos]['param']['txt'], $curr);
-			else
-				$sub->parse_pos++;
-				
-			// pour chaque element identifié par le parsing
-			for($sub->parse_pos; $sub->parse_pos<count($sub->parsing->code); $sub->parse_pos++)
-			{
-				$todo = $sub->parsing->code[$sub->parse_pos];
-				if (!$sub->loadAction($todo)) break;
-			}
-
-			$w = $sub->maxX;
-
-			$this->DestroySubHTML($sub);
-			if ($this->style->value['text-align']=='center')
-				$this->pdf->x+= ($rx-$this->pdf->x-$w)*0.5-0.01;
-			elseif ($this->style->value['text-align']=='right')
-				$this->pdf->x = $rx-$w-0.01;
-			else
-				$this->pdf->x = $lx;
-		}
-		
-		/** 
-		* récupération du PDF 
-		* 
-		* @param	string	nom du fichier PDF 
-		* @param	boolean	destination 
-		* @return	string	contenu éventuel du pdf
-		* 
-		*
-		* Destination où envoyer le document. Le paramètre peut prendre les valeurs suivantes :
-		* true	: equivalent à I
-		* false	: equivalent à S
-		* I : envoyer en inline au navigateur. Le plug-in est utilisé s'il est installé. Le nom indiqué dans name est utilisé lorsque l'on sélectionne "Enregistrer sous" sur le lien générant le PDF.
-		* D : envoyer au navigateur en forçant le téléchargement, avec le nom indiqué dans name.
-		* F : sauver dans un fichier local, avec le nom indiqué dans name (peut inclure un répertoire).
-		* S : renvoyer le document sous forme de chaîne. name est ignoré.
-		*/
-		function Output($name = '', $dest = false)
-		{
-			if ($this->DEBUG_actif)
-			{
-				$this->DEBUG_add('Before output');
-				$this->pdf->Close();
-				exit;
-			}
-			
-			// nettoyage
-			global $HTML2PDF_TABLEAU; $HTML2PDF_TABLEAU = array();
-
-			// interpretation des paramètres
-			if ($dest===false)	$dest = 'I';
-			if ($dest===true)	$dest = 'S';
-			if ($dest==='')		$dest = 'I';
-			if ($name=='')		$name='document.pdf';
-			
-			// verification de la destination
-			$dest = strtoupper($dest);
-			if (!in_array($dest, array('I', 'D', 'F', 'S'))) $dest = 'I';
-	
-			// verification du nom
-			if (strtolower(substr($name, -4))!='.pdf')
-			{
-				echo 'ERROR : The output document name "'.$name.'" is not a PDF name';
-				exit;
-			}
-			
-
-			return $this->pdf->Output($name, $dest);
-		}
-		
-		/**
-		* création d'un sous HTML2PDF pour la gestion des tableaux imbriqués
-		*
-		* @param	HTML2PDF	futur sous HTML2PDF passé en référence pour création
-		* @param	integer		marge eventuelle de l'objet si simulation d'un TD
-		* @return	null
-		*/		
-		function CreateSubHTML(&$sub_html, $cellmargin=0)
-		{
-			// initialisation du sous objet
-			$sub_html = new HTML2PDF(
-										$this->sens,
-										$this->format,
-										$this->langue,
-										array($this->defaultLeft,$this->defaultTop,$this->defaultRight,$this->defaultBottom),
-										true
-									);
-			$sub_html->isSubPart = true;
-			$sub_html->setEncoding($this->encoding);
-			$sub_html->setTestTdInOnePage($this->testTDin1page);
-			$sub_html->setTestIsImage($this->testIsImage);
-			$sub_html->setDefaultFont($this->defaultFont);
-			$sub_html->style->css			= $this->style->css;
-			$sub_html->style->css_keys		= $this->style->css_keys;
-			$sub_html->style->table			= $this->style->table;
-			$sub_html->style->value			= $this->style->value;
-			$sub_html->style->value['text-align'] = 'left';
-			$sub_html->defLIST				= $this->defLIST;
-			$sub_html->style->onlyLeft = true;
-			
-			// initialisation de la largeur
-			if ($this->style->value['width'])
-			{
-				$marge = $cellmargin*2;
-				$marge+= $this->style->value['padding']['l'] + $this->style->value['padding']['r'];
-				$marge+= $this->style->value['border']['l']['width'] + $this->style->value['border']['r']['width'];
-				$marge = $sub_html->pdf->w - $this->style->value['width'] + $marge;
-			}
-			else
-				$marge = $this->margeLeft+$this->margeRight;
-			
-			$sub_html->saveMargin(0, 0, $marge);
-
-			// initialisation des fontes
-			$sub_html->pdf->fonts		= &$this->pdf->fonts;
-			$sub_html->pdf->FontFiles	= &$this->pdf->FontFiles;
-			$sub_html->pdf->diffs		= &$this->pdf->diffs;
-
-			// initialisation des positions et autre
-			$sub_html->page = $this->page;
-			$sub_html->maxX = 0;
-			$sub_html->maxY = 0;
-			$sub_html->maxH = 0;
-			$sub_html->pdf->setXY(0, 0);
-			$sub_html->style->FontSet();
-		}
-		
-		/**
-		* destruction d'un sous HTML2PDF pour la gestion des tableaux imbriqués
-		*
-		* @return	null
-		*/	
-		function DestroySubHTML(&$sub_html)
-		{
-			$sub_html->pdf->Close();
-			unset($sub_html);
-			$sub_html = null;	
-		}
-		
-		/**
-		* Convertir un nombre arabe en nombre romain
-		*
-		* @param	integer	nombre à convertir
-		* @return	string	nombre converti
-		*/
-		function listeArab2Rom($nb_ar)
-		{
-			$nb_b10	= array('I','X','C','M');
-			$nb_b5	= array('V','L','D');
-			$nb_ro	= '';
-
-			if ($nb_ar<1)		return $nb_ar;
-			if ($nb_ar>3999)	return $nb_ar;
-
-			for($i=3; $i>=0 ; $i--)
-			{
-				$chiffre=floor($nb_ar/pow(10,$i));
-				if($chiffre>=1)
-				{
-					$nb_ar=$nb_ar-$chiffre*pow(10,$i);
-					if($chiffre<=3)
-					{
-						for($j=$chiffre; $j>=1; $j--)
-						{
-							$nb_ro=$nb_ro.$nb_b10[$i];
-						}
-					}
-					else if($chiffre==9)
-					{
-						$nb_ro=$nb_ro.$nb_b10[$i].$nb_b10[$i+1];
-					}
-					elseif($chiffre==4)
-					{
-					$nb_ro=$nb_ro.$nb_b10[$i].$nb_b5[$i];
-					}
-					else
-					{
-						$nb_ro=$nb_ro.$nb_b5[$i];
-						for($j=$chiffre-5; $j>=1; $j--)
-						{
-							$nb_ro=$nb_ro.$nb_b10[$i];
-						}
-					}
-				}
-			}
-			return $nb_ro;
-		}
-		
-		/**
-		* Ajouter un LI au niveau actuel
-		*
-		* @return	null
-		*/
-		function listeAddLi()
-		{
-			$this->defLIST[count($this->defLIST)-1]['nb']++;
-		}
-
-		function listeGetWidth()	{ return '7mm'; }
-		function listeGetPadding()	{ return '1mm'; }
-
-		/**
-		* Recuperer le LI du niveau actuel
-		*
-		* @return	string	chaine à afficher
-		*/
-		function listeGetLi()
-		{
-			$im = $this->defLIST[count($this->defLIST)-1]['img'];
-			$st = $this->defLIST[count($this->defLIST)-1]['style'];
-			$nb = $this->defLIST[count($this->defLIST)-1]['nb'];
-			$up = (substr($st, 0, 6)=='upper-');
-			
-			if ($im) return array(false, false, $im);
-			
-			switch($st)
-			{
-				case 'none':
-					return array('arial', true, ' ');
-					
-				case 'upper-alpha':
-				case 'lower-alpha':
-					$str = '';
-					while($nb>26)
-					{
-						$str = chr(96+$nb%26).$str; 
-						$nb = floor($nb/26);	
-					}
-					$str = chr(96+$nb).$str; 
-					
-					return array('arial', false, ($up ? strtoupper($str) : $str).'.');
-
-				case 'upper-roman':
-				case 'lower-roman':
-					$str = $this->listeArab2Rom($nb);
-					
-					return array('arial', false, ($up ? strtoupper($str) : $str).'.');
-					
-				case 'decimal':
-					return array('arial', false, $nb.'.');
-
-				case 'square':
-					return array('zapfdingbats', true, chr(110));
-
-				case 'circle':
-					return array('zapfdingbats', true, chr(109));
-
-				case 'disc':
-				default:
-					return array('zapfdingbats', true, chr(108));
-			}
-		}
-				
-		/**
-		* Ajouter un niveau de liste
-		*
-		* @param	string	type de liste : ul, ol
-		* @param	string	style de la liste
-		* @return	null
-		*/
-		function listeAddLevel($type = 'ul', $style = '', $img = null)
-		{
-			if ($img)
-			{
-				if (preg_match('/^url\(([^)]+)\)$/isU', trim($img), $match))
-					$img = $match[1];
-				else
-					$img = null;
-			}
-			else
-				$img = null;
-			
-			if (!in_array($type, array('ul', 'ol'))) $type = 'ul';
-			if (!in_array($style, array('lower-alpha', 'upper-alpha', 'upper-roman', 'lower-roman', 'decimal', 'square', 'circle', 'disc', 'none'))) $style = '';
-			
-			if (!$style)
-			{
-				if ($type=='ul')	$style = 'disc';
-				else				$style = 'decimal';
-			}
-			$this->defLIST[count($this->defLIST)] = array('style' => $style, 'nb' => 0, 'img' => $img);
-		}
-		
-		/**
-		* Supprimer un niveau de liste
-		*
-		* @return	null
-		*/
-		function listeDelLevel()
-		{
-			if (count($this->defLIST))
-			{
-				unset($this->defLIST[count($this->defLIST)-1]);
-				$this->defLIST = array_values($this->defLIST);
-			}
-		}
-		
-		/**
-		* traitement d'un code HTML
-		*
-		* @param	string	code HTML à convertir
-		* @param	boolean	afficher en pdf (false) ou en html (true)
-		* @return	null
-		*/	
-		function WriteHTML($html, $vue = false)
-		{
-			// si c'est une vrai page HTML, une conversion s'impose
-			if (preg_match('/<body/isU', $html))
-				$html = $this->getHtmlFromPage($html);
-				
-			$html = str_replace('[[page_nb]]',	'{nb}',	 $html);
-			
-			$html = str_replace('[[date_y]]',	date('Y'),	 $html);
-			$html = str_replace('[[date_m]]',	date('m'),	 $html);
-			$html = str_replace('[[date_d]]',	date('d'),	 $html);
-
-			$html = str_replace('[[date_h]]',	date('H'),	 $html);
-			$html = str_replace('[[date_i]]',	date('i'),	 $html);
-			$html = str_replace('[[date_s]]',	date('s'),	 $html);
-			
-			// si on veut voir le résultat en HTML => on appelle la fonction
-			if ($vue)	$this->vueHTML($html);	
-
-			// sinon, traitement pour conversion en PDF :
-			// parsing
-			$this->sub_pdf = false;
-			$this->style->readStyle($html);
-			$this->parsing->setHTML($html);
-			$this->parsing->parse();
-			$this->MakeHTMLcode();
-		}
-			
-		function getHtmlFromPage($html)
-		{
-			$html = str_replace('<BODY', '<body', $html);
-			$html = str_replace('</BODY', '</body', $html);
-			
-			// extraction du contenu
-			$res = explode('<body', $html);
-			if (count($res)<2) return $html;
-			$content = '<page'.$res[1];
-			$content = explode('</body', $content);
-			$content = $content[0].'</page>';
-
-			// extraction des balises link
-			preg_match_all('/<link([^>]*)>/isU', $html, $match);
-			foreach($match[0] as $src)
-				$content = $src.'</link>'.$content;	
-			
-			// extraction des balises style
-			preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
-			foreach($match[0] as $src)
-				$content = $src.$content;	
-						
-			return $content;	
-		}
-		
-		function MakeHTMLcode()
-		{
-			// pour chaque element identifié par le parsing
-			for($this->parse_pos=0; $this->parse_pos<count($this->parsing->code); $this->parse_pos++)
-			{
-				// récupération de l'élément
-				$todo = $this->parsing->code[$this->parse_pos];
-				
-				// si c'est une ouverture de tableau
-				if (in_array($todo['name'], array('table', 'ul', 'ol')) && !$todo['close'])
-				{
-					// on va créer un sous HTML, et on va travailler sur une position temporaire
-					$tag_open = $todo['name'];
-
-					$this->sub_part = true;
-					$this->temp_pos = $this->parse_pos;
-					
-					// pour tous les éléments jusqu'à la fermeture de la table afin de préparer les dimensions
-					while(isset($this->parsing->code[$this->temp_pos]) && !($this->parsing->code[$this->temp_pos]['name']==$tag_open && $this->parsing->code[$this->temp_pos]['close']))
-					{
-						$this->loadAction($this->parsing->code[$this->temp_pos]);
-						$this->temp_pos++;
-					}
-					if (isset($this->parsing->code[$this->temp_pos])) 	$this->loadAction($this->parsing->code[$this->temp_pos]);
-					$this->sub_part = false;
-				}
-				
-				// chargement de l'action correspondant à l'élément
-				$this->loadAction($todo);
-			}			
-		} 
-
-
-	
-		/**
-		* affichage en mode HTML du contenu
-		*
-		* @param	string	contenu
-		* @return	null
-		*/	
-		function vueHTML($content)
-		{
-			$content = preg_replace('/<page_header([^>]*)>/isU',	'<hr>'.@HTML2PDF::textGET('vue01').' : $1<hr><div$1>', $content);
-			$content = preg_replace('/<page_footer([^>]*)>/isU',	'<hr>'.@HTML2PDF::textGET('vue02').' : $1<hr><div$1>', $content);
-			$content = preg_replace('/<page([^>]*)>/isU',			'<hr>'.@HTML2PDF::textGET('vue03').' : $1<hr><div$1>', $content);
-			$content = preg_replace('/<\/page([^>]*)>/isU',			'</div><hr>', $content);
-			$content = preg_replace('/<bookmark([^>]*)>/isU',		'<hr>bookmark : $1<hr>', $content);
-			$content = preg_replace('/<\/bookmark([^>]*)>/isU',		'', $content);
-			$content = preg_replace('/<barcode([^>]*)>/isU',		'<hr>barcode : $1<hr>', $content);
-			$content = preg_replace('/<\/barcode([^>]*)>/isU',		'', $content);
-			$content = preg_replace('/<qrcode([^>]*)>/isU',		'<hr>qrcode : $1<hr>', $content);
-			$content = preg_replace('/<\/qrcode([^>]*)>/isU',		'', $content);
-			
-			echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-	<head>
-		<title>'.@HTML2PDF::textGET('vue04').' HTML</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
-	</head>
-	<body style="padding: 10px; font-size: 10pt;font-family:	Arial;">
-'.$content.'
-	</body>
-</html>';
-			exit;	
-		}
-
-		/**
-		* chargement de l'action correspondante à un element de parsing
-		*
-		* @param	array	élément de parsing
-		* @return	null
-		*/		
-		function loadAction($row)
-		{
-			// nom de l'action
-			$fnc	= ($row['close'] ? 'c_' : 'o_').strtoupper($row['name']);
-			
-			// parametres de l'action
-			$param	= $row['param'];
-			
-			// si aucune page n'est créé, on la créé
-			if ($fnc!='o_PAGE' && $this->FirstPage)
-			{
-				$this->setNewPage();
-			}
-			
-			// lancement de l'action
-			if (is_callable(array(&$this, $fnc)))
-			{
-				$res = $this->{$fnc}($param);
-				$this->previousCall = $fnc;
-				return $res;
-			}
-			else
-			{
-				@HTML2PDF::makeError(1, __FILE__, __LINE__, strtoupper($row['name']), $this->parsing->getHtmlErrorCode($row['html_pos']));
-				return false;
-			}
-		}
-		
-		/**
-		* balise	: PAGE
-		* mode		: OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_PAGE($param)
-		{
-			if ($this->forOneLine) return false;
-			if ($this->DEBUG_actif) $this->DEBUG_add('PAGE n°'.($this->page+1), true);
-
-			$newPageSet= (!isset($param['pageset']) || $param['pageset']!='old');
-			
-			$this->maxH = 0;
-			if ($newPageSet)
-			{
-				$this->subHEADER = array();
-				$this->subFOOTER = array();
-						
-				// identification de l'orientation demandée
-				$orientation = '';
-				if (isset($param['orientation']))
-				{
-					$param['orientation'] = strtolower($param['orientation']);
-					if ($param['orientation']=='p')			$orientation = 'P';
-					if ($param['orientation']=='portrait')	$orientation = 'P';
-	
-					if ($param['orientation']=='l')			$orientation = 'L';
-					if ($param['orientation']=='paysage')	$orientation = 'L';
-					if ($param['orientation']=='landscape')	$orientation = 'L';
-				}
-				
-				// identification de l'orientation demandée
-				$format = null;
-				if (isset($param['format']))
-				{
-					$format = strtolower($param['format']);
-					if (preg_match('/^([0-9]+)x([0-9]+)$/isU', $format, $match))
-					{
-						$format = array(intval($match[1]), intval($match[2]));
-					}
-				}
-					
-				// identification des propriétés du background
-				$background = array();
-				if (isset($param['backimg']))
-				{
-					$background['img']		= isset($param['backimg'])	? $param['backimg']		: '';		// nom de l'image
-					$background['posX']		= isset($param['backimgx'])	? $param['backimgx']	: 'center'; // position horizontale de l'image
-					$background['posY']		= isset($param['backimgy'])	? $param['backimgy']	: 'middle'; // position verticale de l'image
-					$background['width']	= isset($param['backimgw'])	? $param['backimgw']	: '100%';	// taille de l'image (100% = largueur de la feuille)
-					
-					// conversion du nom de l'image, en cas de paramètres en _GET
-					$background['img'] = str_replace('&amp;', '&', $background['img']);
-					// conversion des positions
-					if ($background['posX']=='left')	$background['posX'] = '0%';
-					if ($background['posX']=='center')	$background['posX'] = '50%';
-					if ($background['posX']=='right')	$background['posX'] = '100%';
-					if ($background['posY']=='top')		$background['posY'] = '0%';
-					if ($background['posY']=='middle')	$background['posY'] = '50%';
-					if ($background['posY']=='bottom')	$background['posY'] = '100%';
-	
-	
-					// si il y a une image de précisé
-					if ($background['img'])	
-					{
-						// est-ce que c'est une image ?
-						$infos=@GetImageSize($background['img']);
-						if (count($infos)>1)
-						{
-							// taille de l'image, en fonction de la taille spécifiée. 
-							$Wi = $this->style->ConvertToMM($background['width'], $this->pdf->w);
-							$Hi = $Wi*$infos[1]/$infos[0];
-							
-							// récupération des dimensions et positions de l'image
-							$background['width']	= $Wi;	
-							$background['posX']		= $this->style->ConvertToMM($background['posX'], $this->pdf->w - $Wi);
-							$background['posY']		= $this->style->ConvertToMM($background['posY'], $this->pdf->h - $Hi);
-						}
-						else
-							$background = array();	
-					}
-					else
-						$background = array();
-				}
-				
-				// marges TOP et BOTTOM pour le texte.
-				$background['top']		= isset($param['backtop'])			? $param['backtop'] 		: '0';
-				$background['bottom']	= isset($param['backbottom'])		? $param['backbottom']		: '0';
-				$background['left']		= isset($param['backleft'])			? $param['backleft'] 		: '0';
-				$background['right']	= isset($param['backright'])		? $param['backright']		: '0';
-
-				if (preg_match('/^([0-9]*)$/isU', $background['top']))		$background['top']		.= 'mm';
-				if (preg_match('/^([0-9]*)$/isU', $background['bottom']))	$background['bottom']	.= 'mm';
-				if (preg_match('/^([0-9]*)$/isU', $background['left']))		$background['left']		.= 'mm';
-				if (preg_match('/^([0-9]*)$/isU', $background['right']))	$background['right']	.= 'mm';
-
-				$background['top']		= $this->style->ConvertToMM($background['top'],		$this->pdf->h);
-				$background['bottom']	= $this->style->ConvertToMM($background['bottom'],	$this->pdf->h);
-				$background['left']		= $this->style->ConvertToMM($background['left'],	$this->pdf->w);
-				$background['right']	= $this->style->ConvertToMM($background['right'],	$this->pdf->w);
-
-				$res = false;
-				$background['color']	= isset($param['backcolor'])	? $this->style->ConvertToColor($param['backcolor'], $res) : null;
-				if (!$res) $background['color'] = null;
-
-				$this->style->save();
-				$this->style->analyse('PAGE', $param);
-				$this->style->setPosition($this->pdf->x, $this->pdf->y);
-				$this->style->FontSet();
-				
-				// nouvelle page
-				$this->setNewPage($format, $orientation, $background);
-	
-				// footer automatique
-				if (isset($param['footer']))
-				{
-					$lst = explode(';', $param['footer']);
-					foreach($lst as $key => $val) $lst[$key] = trim(strtolower($val));
-					$page	= in_array('page', $lst);
-					$date	= in_array('date', $lst);
-					$heure	= in_array('heure', $lst);
-					$form	= in_array('form', $lst);
-				}
-				else
-				{
-					$page	= null;
-					$date	= null;
-					$heure	= null;
-					$form	= null;
-				}
-				$this->pdf->SetMyFooter($page, $date, $heure, $form);
-			}
-			else
-			{
-				$this->style->save();
-				$this->style->analyse('PAGE', $param);
-				$this->style->setPosition($this->pdf->x, $this->pdf->y);
-				$this->style->FontSet();
-				
-				$this->setNewPage();
-			}			
-			
-			return true;
-		}
-
-		/**
-		* balise : PAGE
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_PAGE($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-
-			$this->style->load();
-			$this->style->FontSet();
-			
-			if ($this->DEBUG_actif) $this->DEBUG_add('PAGE n°'.$this->page, false);
-			
-			return true;
-		}
-		
-		
-		function o_PAGE_HEADER($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->subHEADER = array();
-			for($this->parse_pos; $this->parse_pos<count($this->parsing->code); $this->parse_pos++)
-			{
-				$todo = $this->parsing->code[$this->parse_pos];
-				if ($todo['name']=='page_header') $todo['name']='page_header_sub';
-				$this->subHEADER[] = $todo;
-				if (strtolower($todo['name'])=='page_header_sub' && $todo['close']) break;
-			}
-
-			$this->SetPageHeader();
-			
-			return true;
-		}
-		
-		function o_PAGE_FOOTER($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->subFOOTER = array();
-			for($this->parse_pos; $this->parse_pos<count($this->parsing->code); $this->parse_pos++)
-			{
-				$todo = $this->parsing->code[$this->parse_pos];
-				if ($todo['name']=='page_footer') $todo['name']='page_footer_sub';
-				$this->subFOOTER[] = $todo;
-				if (strtolower($todo['name'])=='page_footer_sub' && $todo['close']) break;
-			}
-			
-			$this->SetPageFooter();
-			
-			return true;
-		}
-
-		function o_PAGE_HEADER_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			// sauvegarde de l'état
-			$this->subSTATES = array();
-			$this->subSTATES['x']	= $this->pdf->x;
-			$this->subSTATES['y']	= $this->pdf->y;
-			$this->subSTATES['s']	= $this->style->value;
-			$this->subSTATES['t']	= $this->style->table;
-			$this->subSTATES['ml']	= $this->margeLeft;
-			$this->subSTATES['mr']	= $this->margeRight;
-			$this->subSTATES['mt']	= $this->margeTop;
-			$this->subSTATES['mb']	= $this->margeBottom;
-			$this->subSTATES['mp']	= $this->pageMarges;
-	
-			// nouvel etat pour le footer
-			$this->pageMarges = array();
-			$this->margeLeft	= $this->defaultLeft;
-			$this->margeRight	= $this->defaultRight;
-			$this->margeTop		= $this->defaultTop;
-			$this->margeBottom	= $this->defaultBottom;
-			$this->pdf->SetMargins($this->margeLeft, $this->margeTop, $this->margeRight);
-			$this->pdf->bMargin	= $this->margeBottom;
-			$this->pdf->PageBreakTrigger = $this->pdf->h - $this->pdf->bMargin;
-			$this->pdf->x		= $this->defaultLeft;
-			$this->pdf->y		= $this->defaultTop;
-			
-			$this->style->initStyle();
-			$this->style->resetStyle();
-			$this->style->value['width']		= $this->pdf->w - $this->defaultLeft - $this->defaultRight;
-			$this->style->table					= array();
-
-			$this->style->save();
-			$this->style->analyse('page_header_sub', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			$this->setNewPositionForNewLine();				
-			return true;
-		}
-
-		function c_PAGE_HEADER_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-
-			// retablissement de l'etat
-			$this->style->value				= $this->subSTATES['s'];
-			$this->style->table				= $this->subSTATES['t'];
-			$this->pageMarges				= $this->subSTATES['mp'];
-			$this->margeLeft				= $this->subSTATES['ml'];
-			$this->margeRight				= $this->subSTATES['mr'];
-			$this->margeTop					= $this->subSTATES['mt'];
-			$this->margeBottom				= $this->subSTATES['mb'];
-			$this->pdf->SetMargins($this->margeLeft, $this->margeTop, $this->margeRight);
-			$this->pdf->PageBreakTrigger	= $this->pdf->h - $this->pdf->bMargin;
-			$this->pdf->x					= $this->subSTATES['x'];
-			$this->pdf->y					= $this->subSTATES['y'];
-			
-			$this->style->FontSet();			
-			$this->maxH = 0;		
-			
-			return true;
-		}
-				
-		function o_PAGE_FOOTER_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->subSTATES = array();
-			$this->subSTATES['x']	= $this->pdf->x;
-			$this->subSTATES['y']	= $this->pdf->y;
-			$this->subSTATES['s']	= $this->style->value;
-			$this->subSTATES['t']	= $this->style->table;
-			$this->subSTATES['ml']	= $this->margeLeft;
-			$this->subSTATES['mr']	= $this->margeRight;
-			$this->subSTATES['mt']	= $this->margeTop;
-			$this->subSTATES['mb']	= $this->margeBottom;
-			$this->subSTATES['mp']	= $this->pageMarges;
-	
-			// nouvel etat pour le footer
-			$this->pageMarges = array();
-			$this->margeLeft	= $this->defaultLeft;
-			$this->margeRight	= $this->defaultRight;
-			$this->margeTop		= $this->defaultTop;
-			$this->margeBottom	= $this->defaultBottom;
-			$this->pdf->SetMargins($this->margeLeft, $this->margeTop, $this->margeRight);
-			$this->pdf->bMargin	= $this->margeBottom;
-			$this->pdf->PageBreakTrigger = $this->pdf->h - $this->pdf->bMargin;
-			$this->pdf->x		= $this->defaultLeft;
-			$this->pdf->y		= $this->defaultTop;
-			
-	
-			$this->style->initStyle();
-			$this->style->resetStyle();
-			$this->style->value['width']		= $this->pdf->w - $this->defaultLeft - $this->defaultRight;
-			$this->style->table					= array();			
-
-			// on en créé un sous HTML que l'on transforme en PDF
-			// pour récupérer la hauteur
-			// on extrait tout ce qui est contenu dans le FOOTER
-			$sub = null;
-			$res = $this->parsing->getLevel($this->parse_pos);
-			$this->CreateSubHTML($sub);
-			$sub->writeHTML($res[1]);
-			$this->pdf->y = $this->pdf->h - $sub->maxY - $this->defaultBottom - 0.01;
-			$this->DestroySubHTML($sub);
-			
-			$this->style->save();			
-			$this->style->analyse('page_footer_sub', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			$this->setNewPositionForNewLine();		
-			
-			return true;
-		}
-
-		function c_PAGE_FOOTER_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-
-			$this->style->value				= $this->subSTATES['s'];
-			$this->style->table				= $this->subSTATES['t'];
-			$this->pageMarges 				= $this->subSTATES['mp'];
-			$this->margeLeft				= $this->subSTATES['ml'];
-			$this->margeRight				= $this->subSTATES['mr'];
-			$this->margeTop					= $this->subSTATES['mt'];
-			$this->margeBottom				= $this->subSTATES['mb'];
-			$this->pdf->SetMargins($this->margeLeft, $this->margeTop, $this->margeRight);
-			$this->pdf->PageBreakTrigger	= $this->pdf->h - $this->pdf->bMargin;
-			$this->pdf->x					= $this->subSTATES['x'];
-			$this->pdf->y					= $this->subSTATES['y'];
-
-			$this->style->FontSet();	
-			$this->maxH = 0;		
-			
-			return true;
-		}
-		
-		/**
-		* balise : NOBREAK
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/
-		function o_NOBREAK($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			// on extrait tout ce qui est contenu dans le NOBREAK
-			$res = $this->parsing->getLevel($this->parse_pos);
-
-			// on en créé un sous HTML que l'on transforme en PDF
-			// pour analyse les dimensions
-			// et voir si ca rentre
-			$sub = null;
-			$this->CreateSubHTML($sub);
-			$sub->writeHTML($res[1]);
-			
-			$y = $this->pdf->getY();
-			if (
-					$sub->maxY < ($this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin) &&
-					$y + $sub->maxY>=($this->pdf->h - $this->pdf->bMargin)
-				)
-				$this->setNewPage();
-			$this->DestroySubHTML($sub);
-			
-			return true;
-		}
-		
-
-		/**
-		* balise : NOBREAK
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_NOBREAK($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-					
-			return true;
-		}
-		
-		/**
-		* balise : DIV
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_DIV($param, $other = 'div')
-		{
-			if ($this->forOneLine) return false;
-			if ($this->DEBUG_actif) $this->DEBUG_add('DIV', true);
-			
-			$this->style->save();
-			$this->style->analyse($other, $param);
-			$this->style->FontSet();
-			
-			$align_object = null;
-			if ($this->style->value['margin-auto']) $align_object = 'center';
-
-			$marge = array();
-			$marge['l'] = $this->style->value['border']['l']['width'] + $this->style->value['padding']['l']+0.03;
-			$marge['r'] = $this->style->value['border']['r']['width'] + $this->style->value['padding']['r']+0.03;
-			$marge['t'] = $this->style->value['border']['t']['width'] + $this->style->value['padding']['t']+0.03;
-			$marge['b'] = $this->style->value['border']['b']['width'] + $this->style->value['padding']['b']+0.03;
-			
-			// on extrait tout ce qui est contenu dans la DIV
-			$res = $this->parsing->getLevel($this->parse_pos);
-
-			// on en créé un sous HTML que l'on transforme en PDF
-			// pour analyse les dimensions
-			$w = 0; $h = 0;
-			if (trim($res[1]))
-			{
-				$sub = null;
-				$this->CreateSubHTML($sub);
-				$sub->writeHTML($res[1]);				
-				$w = $sub->maxX;
-				$h = $sub->maxY;
-				$this->DestroySubHTML($sub);
-			}
-			$w_reel = $w;
-			$h_reel = $h;
-			
-//			if (($w==0 && $this->style->value['width']==0) || ($w>$this->style->value['width']) || $this->style->value['position']=='absolute')
-				$w+= $marge['l']+$marge['r']+0.001;
-
-			$h+= $marge['t']+$marge['b']+0.001;
-			
-			if ($this->style->value['overflow']=='hidden')
-			{
-				$over_w = max($w, $this->style->value['width']);
-				$over_h = max($h, $this->style->value['height']);
-				$overflow = true;
-				$this->style->value['old_maxX'] = $this->maxX;
-				$this->style->value['old_maxY'] = $this->maxY;
-				$this->style->value['old_maxH'] = $this->maxH;
-				$this->style->value['old_overflow'] = $this->isInOverflow;
-				$this->isInOverflow = true;
-			}
-			else
-			{
-				$over_w = null;
-				$over_h = null;
-				$overflow = false;
-				$this->style->value['width']	= max($w, $this->style->value['width']);
-				$this->style->value['height']	= max($h, $this->style->value['height']);
-			}
-			
-			switch($this->style->value['rotate'])
-			{
-				case 90:
-					$tmp = $over_h; $over_h = $over_w; $over_w = $tmp;
-					$tmp = $h_reel; $h_reel = $w_reel; $w_reel = $tmp;
-					unset($tmp);
-					$w = $this->style->value['height'];
-					$h = $this->style->value['width'];
-					$t_x =-$h;
-					$t_y = 0;
-					break;
-					
-				case 180:
-					$w = $this->style->value['width'];
-					$h = $this->style->value['height'];
-					$t_x = -$w;
-					$t_y = -$h;
-					break;
-					
-				case 270:
-					$tmp = $over_h; $over_h = $over_w; $over_w = $tmp;
-					$tmp = $h_reel; $h_reel = $w_reel; $w_reel = $tmp;
-					unset($tmp);
-					$w = $this->style->value['height'];
-					$h = $this->style->value['width'];
-					$t_x = 0;
-					$t_y =-$w;
-					break;
-					
-				default:
-					$w = $this->style->value['width'];
-					$h = $this->style->value['height'];
-					$t_x = 0;
-					$t_y = 0;
-					break;
-			}
-
-			
-			if (!$this->style->value['position'])
-			{
-				if (
-					$w < ($this->pdf->w - $this->pdf->lMargin-$this->pdf->rMargin) &&
-					$this->pdf->x + $w>=($this->pdf->w - $this->pdf->rMargin)
-					)
-					$this->o_BR(array());
-	
-				if (
-						($h < ($this->pdf->h - $this->pdf->tMargin-$this->pdf->bMargin)) &&
-						($this->pdf->y + $h>=($this->pdf->h - $this->pdf->bMargin)) && 
-						!$this->isInOverflow
-					)
-					$this->setNewPage();
-				
-				// en cas d'alignement => correction
-				$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
-				$parent_w = $old['width'] ? $old['width'] : $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
-				
-				if ($parent_w>$w)
-				{				
-					if ($align_object=='center')		$this->pdf->x = $this->pdf->x + ($parent_w-$w)*0.5;
-					else if ($align_object=='right')	$this->pdf->x = $this->pdf->x + $parent_w-$w;
-				}
-				
-				$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			}
-			else
-			{
-				// en cas d'alignement => correction
-				$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
-				$parent_w = $old['width'] ? $old['width'] : $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
-				
-				if ($parent_w>$w)
-				{				
-					if ($align_object=='center')		$this->pdf->x = $this->pdf->x + ($parent_w-$w)*0.5;
-					else if ($align_object=='right')	$this->pdf->x = $this->pdf->x + $parent_w-$w;
-				}
-				
-				$this->style->setPosition($this->pdf->x, $this->pdf->y);
-				$this->saveMax();
-				$this->saveX = 0;
-				$this->saveY = 0;
-				$this->saveH = 0;
-			}		
-			
-			if ($this->style->value['rotate'])
-			{
-				$this->pdf->startTransform();
-				$this->pdf->setRotation($this->style->value['rotate']);
-				$this->pdf->setTranslate($t_x, $t_y);
-			}
-			
-			// initialisation du style des bordures de la div
-			$this->Rectangle(
-					$this->style->value['x'],
-					$this->style->value['y'],
-					$this->style->value['width'],
-					$this->style->value['height'],
-					$this->style->value['border'],
-					$this->style->value['padding'],
-					0,
-					$this->style->value['background']
-				);
-
-			
-			$marge = array();
-			$marge['l'] = $this->style->value['border']['l']['width'] + $this->style->value['padding']['l']+0.03;
-			$marge['r'] = $this->style->value['border']['r']['width'] + $this->style->value['padding']['r']+0.03;
-			$marge['t'] = $this->style->value['border']['t']['width'] + $this->style->value['padding']['t']+0.03;
-			$marge['b'] = $this->style->value['border']['b']['width'] + $this->style->value['padding']['b']+0.03;
-
-			$this->style->value['width'] -= $marge['l']+$marge['r'];
-			$this->style->value['height']-= $marge['t']+$marge['b'];
-		
-			// positionnement en fonction des alignements
-			$x_corr = 0;
-			$y_corr = 0;
-			if (!$this->sub_part && !$this->isSubPart)
-			{
-				switch($this->style->value['text-align'])
-				{
-					case 'right':	$x_corr = ($this->style->value['width']-$w_reel); break;
-					case 'center':	$x_corr = ($this->style->value['width']-$w_reel)*0.5; break;
-				}
-				if ($x_corr>0) $x_corr=0;
-				switch($this->style->value['vertical-align'])
-				{
-					case 'bottom':	$y_corr = ($this->style->value['height']-$h_reel); break;
-					case 'middle':	$y_corr = ($this->style->value['height']-$h_reel)*0.5; break;
-				}
-			}
-			
-			if ($overflow)
-			{
-				$over_w-= $marge['l']+$marge['r'];
-				$over_h-= $marge['t']+$marge['b'];
-				$this->pdf->clippingPathOpen(
-					$this->style->value['x']+$marge['l'],
-					$this->style->value['y']+$marge['t'],
-					$this->style->value['width'],
-					$this->style->value['height']
-				);		
-
-				$this->style->value['x']+= $x_corr;
-				// limitation des marges aux dimensions du contenu
-				$mL = $this->style->value['x']+$marge['l'];
-				$mR = $this->pdf->w - $mL - $over_w;
-			}
-			else
-			{
-				// limitation des marges aux dimensions de la div
-				$mL = $this->style->value['x']+$marge['l'];
-				$mR = $this->pdf->w - $mL - $this->style->value['width'];
-			}
-			
-			$x = $this->style->value['x']+$marge['l'];
-			$y = $this->style->value['y']+$marge['t']+$y_corr;
-			$this->saveMargin($mL, 0, $mR);
-			$this->pdf->setXY($x, $y);
-			
-			$this->setNewPositionForNewLine();
-			
-			return true;
-		}
-		function o_BLOCKQUOTE($param) { return $this->o_DIV($param, 'blockquote'); }
-		
-		/**
-		* balise : DIV
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_DIV($param)
-		{
-			if ($this->forOneLine) return false;
-
-		
-			if ($this->style->value['overflow']=='hidden')
-			{
-				$this->maxX = $this->style->value['old_maxX'];
-				$this->maxY = $this->style->value['old_maxY'];
-				$this->maxH = $this->style->value['old_maxH'];
-				$this->isInOverflow = $this->style->value['old_overflow'];
-				$this->pdf->clippingPathClose();
-			}
-				
-			if ($this->style->value['rotate'])
-				$this->pdf->stopTransform();
-			
-			$marge = array();
-			$marge['l'] = $this->style->value['border']['l']['width'] + $this->style->value['padding']['l']+0.03;
-			$marge['r'] = $this->style->value['border']['r']['width'] + $this->style->value['padding']['r']+0.03;
-			$marge['t'] = $this->style->value['border']['t']['width'] + $this->style->value['padding']['t']+0.03;
-			$marge['b'] = $this->style->value['border']['b']['width'] + $this->style->value['padding']['b']+0.03;
-			
-			$x = $this->style->value['x'];
-			$y = $this->style->value['y'];
-			$w = $this->style->value['width']+$marge['l']+$marge['r']+$this->style->value['margin']['r'];
-			$h = $this->style->value['height']+$marge['t']+$marge['b']+$this->style->value['margin']['b'];
-			switch($this->style->value['rotate'])
-			{
-				case 90:
-					$t = $w; $w = $h; $h = $t;
-					break;
-					
-				case 270:
-					$t = $w; $w = $h; $h = $t;
-					break;
-					
-				default:
-					break;
-			}
-
-
-			if ($this->style->value['position']!='absolute')
-			{
-				// position
-				$this->pdf->x = $x+$w; 	
-				$this->pdf->y = $y;
-				 	
-				// position MAX
-				$this->maxX = max($this->maxX, $x+$w);
-				$this->maxY = max($this->maxY, $y+$h);
-		 		$this->maxH = max($this->maxH, $h);
-			}
-			else
-			{
-				// position
-				$this->pdf->x = $this->style->value['xc']; 	
-				$this->pdf->y = $this->style->value['yc'];
-				 	
-				$this->loadMax();
-			}
-	 	
-	 		$block = ($this->style->value['display']!='inline' && $this->style->value['position']!='absolute');
-	 		
-	 		$this->style->load();
-			$this->style->FontSet();
-			$this->loadMargin();
-			
-			if ($block) $this->o_BR(array());
-			if ($this->DEBUG_actif) $this->DEBUG_add('DIV', false);
-			
-			return true;
-		}
-		function c_BLOCKQUOTE($param) { return $this->c_DIV($param); }
-		
-		/**
-		* balise : BARCODE
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_BARCODE($param)
-		{
-			
-			$lst_barcode = array(
-								'EAN13'		=> '0.35mm',
-								'UPC_A'		=> '0.35mm',
-								'CODE39'	=> '1.00mm',
-							);
-			if (isset($param['type'])) $param['type'] = strtoupper($param['type']);
-			
-			if (!isset($param['type']) || !isset($lst_barcode[$param['type']])) $param['type']=='CODE39';
-			if (!isset($param['value']))	$param['value']	= 0;
-			if (!isset($param['bar_w']))	$param['bar_w']	= $lst_barcode[$param['type']];
-			if (!isset($param['bar_h']))	$param['bar_h']	= '10mm';
-			
-			if (!isset($param['style']['color'])) $param['style']['color'] = '#000000';
-			$param['style']['background-color'] = $param['style']['color'];
-			
-			$this->style->save();
-			$this->style->analyse('barcode', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			$x = $this->pdf->getX();
-			$y = $this->pdf->getY();
-			$w = $this->style->ConvertToMM($param['bar_w']);
-			$h = $this->style->ConvertToMM($param['bar_h']);
-
-			$infos = $this->pdf->{'BARCODE_'.$param['type']}($x, $y, $param['value'], $h, $w);
-
-			// position maximale globale
-			$this->maxX = max($this->maxX, $x+$infos[0]);
-			$this->maxY = max($this->maxY, $y+$infos[1]);
- 			$this->maxH = max($this->maxH, $infos[1]);
- 			
- 			$this->pdf->setX($x+$infos[0]);
- 			
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : BARCODE
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_BARCODE($param)
-		{
-			// completement inutile
-			
-			return true;
-		}
-		
-			
-		/**
-		* balise : QRCODE
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_QRCODE($param)
-		{
-			if ($this->DEBUG_actif) $this->DEBUG_add('QRCODE', true);
-			if (!isset($param['value']))						$param['value']	= '';
-			if (!isset($param['ec']))							$param['ec']	= 'H';
-			if (!isset($param['size']))							$param['size']	= '0.6mm';
-			if (!isset($param['style']['color']))				$param['style']['color'] = '#000000';
-			if (!isset($param['style']['background-color']))	$param['style']['background-color'] = '#FFFFFF';
-			
-			if ($param['value']==='') return true;
-			
-			$noborder = isset($param['noborder']);
-			
-			$this->style->save();
-			$this->style->analyse('qrcode', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			$x = $this->pdf->getX();
-			$y = $this->pdf->getY();
-			$s = $this->style->ConvertToMM($param['size']);
-			$ec = $param['ec']; if (!in_array($ec, array('L', 'M', 'Q', 'H'))) $ec = 'H';
-			
-			$color = $this->style->value['color'];
-			if (count($color)==4) $color = array(0, 0, 0);
-			$color[0] = floor($color[0]*255.);
-			$color[1] = floor($color[1]*255.);
-			$color[2] = floor($color[2]*255.);
-			
-			$background = $this->style->value['background']['color'];
-			if (count($background)==4) $background = array(0, 0, 0);
-			$background[0] = floor($background[0]*255.);
-			$background[1] = floor($background[1]*255.);
-			$background[2] = floor($background[2]*255.);
-			
-			require_once(dirname(__FILE__).'/qrcode/qrcode.class.php');
-			$qrcode = new QRcode($param['value'], $ec);
-			if ($noborder) $qrcode->disableBorder();
-			if (!$this->sub_part && !$this->isSubPart)
-				$qrcode->displayFPDF($this->pdf, $x, $y, $s, $background, $color);
-			$size = $s*$qrcode->getQrSize();
-			unset($qrcode);
-			
-			// position maximale globale
-			$this->maxX = max($this->maxX, $x+$size);
-			$this->maxY = max($this->maxY, $y+$size);
- 			$this->maxH = max($this->maxH, $size);
- 			
- 			$this->pdf->setX($x+$size);
- 			
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}		
-		/**
-		* balise : QRCODE
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_QRCODE($param)
-		{
-			if ($this->DEBUG_actif) $this->DEBUG_add('QRCODE', false);
-			// completement inutile
-			return true;
-		}
-				
-		/**
-		* balise : BOOKMARK
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_BOOKMARK($param)
-		{
-			$titre = isset($param['title']) ? trim($param['title']) : '';
-			$level = isset($param['level']) ? floor($param['level']) : 0;
-			
-			if ($level<0) $level = 0;
-			if ($titre) $this->pdf->Bookmark($titre, $level, -1);
-			
-			return true;
-		}
-			
-		/**
-		* balise : BOOKMARK
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_BOOKMARK($param)
-		{
-			// completement inutile
-			
-			return true;
-		}
-					
-		/**
-		* balise : WRITE
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_WRITE($param)
-		{
-			$fill = ($this->style->value['background']['color']!==null && $this->style->value['background']['image']===null);
-			if (in_array($this->style->getParentBalise(), array('div', 'table', 'tr', 'td'))) $fill = false;
-			
-			// récupération du texte à écrire, et conversion
-			$txt = $param['txt'];
-			$txt = str_replace('&euro;', '€', $txt);
-
-			if ($this->isAfterFloat)
-			{
-				$txt = preg_replace('/^([\s]*)([^\s])/isU', '$2', $txt);
-				$this->isAfterFloat = false;
-			}
-
-			$txt = html_entity_decode($txt, ENT_QUOTES, $this->encoding);
-
-			$txt = str_replace('[[page_cu]]',	$this->page,	$txt);
-			
-			if ($this->style->value['text-transform']!='none')
-			{
-				if ($this->style->value['text-transform']=='capitalize')
-					$txt = ucwords($txt);
-				else if ($this->style->value['text-transform']=='uppercase')
-					$txt = strtoupper($txt);
-				else if ($this->style->value['text-transform']=='lowercase')
-					$txt = strtolower($txt);
-			}
-			
-			// tailles du texte
-			$h	= 1.08*$this->style->value['font-size'];
-			$dh	= $h*$this->style->value['mini-decal'];
-				
-			$w = $this->pdf->GetStringWidth($txt);
-			// identification de l'alignement
-			$align = 'L';		
-
-			if ($this->style->value['text-align']=='li_right')
-			{
-				$w = $this->style->value['width'];					
-				$align = 'R';
-			}
-
-			$curr_max = strlen($txt);						// taille maxi du texte
-			$maxX = 0;										// plus grande largeur du texte apres retour à la ligne
-			$x = $this->pdf->getX();						// position du texte
-			$y = $this->pdf->getY();
-			$w = $this->pdf->GetStringWidth($txt);			// largeur du texte
-			list($left, $right) = $this->getMargins($y);	// marges autorisees
-			$nb = 0;										// nbr de lignes découpées
-	
-			// tant que ca ne rentre pas sur la ligne et qu'on a du texte => on découpe
-			while($x+$w>$right && $x<$right && strlen($txt))
-			{
-				// liste des mots
-				$lst = explode(' ', $txt);
-				
-				// trouver une phrase qui rentre dans la largeur, en ajoutant les mots 1 à 1
-				$i=0;
-				$old = '';
-				$str = $lst[0];
-				while(($x+$this->pdf->GetStringWidth($str))<$right)
-				{
-					unset($lst[$i]);
-					$old = $str;
-
-					$i++;
-					$str.= ' '.$lst[$i];
-				}
-				$str = $old;
-				
-				// si rien de rentre, et que le premier mot ne rentre de toute facon pas dans une ligne, on le force...
-				if ($i==0 && (($left+$this->pdf->GetStringWidth($lst[0]))>=$right))
-				{
-					$str = $lst[0];
-					unset($lst[0]);
-				}
-				
-				// récupération des mots restant, et calcul de la largeur
-				$txt = implode(' ', $lst);
-				$w = $this->pdf->GetStringWidth($str);
-
-				// ecriture du bout de phrase extrait et qui rentre
-				$wc = ($align=='L' ? $w : $this->style->value['width']);
-				if ($right - $left<$wc) $wc = $right - $left;
-				if (strlen($str)) $this->pdf->Cell($wc, $h+$dh, $str, 0, 0, $align, $fill, $this->inLink);
-				$this->maxH = max($this->maxH, $this->style->getLineHeight());
-				
-				// détermination de la largeur max
-				$maxX = max($maxX, $this->pdf->getX());
-
-				// nouvelle position et nouvelle largeur pour la boucle
-				$w = $this->pdf->GetStringWidth($txt);
-				$y = $this->pdf->getY();
-				$x = $this->pdf->getX();
-
-				// si il reste du text à afficher
-				if (strlen($txt))
-				{
-					if ($this->forOneLine)
-					{
-						$this->maxX = max($this->maxX, $maxX);
-						return false;
-					}
-					
-					// retour à la ligne
-					$this->o_BR(array('style' => ''), $curr_max - strlen($txt));
-
-					$y = $this->pdf->getY();
-					$x = $this->pdf->getX();
-					
-					// si la prochaine ligne ne rentre pas dans la page => nouvelle page 
-					if ($y + $h>$this->pdf->h - $this->pdf->bMargin)
-						if (!$this->isInOverflow)
-							$this->setNewPage(null, '', null, $curr_max - strlen($txt));
-						
-				
-					// ligne suplémentaire. au bout de 1000 : trop long => erreur
-					$nb++;
-					if ($nb>1000) @HTML2PDF::makeError(2, __FILE__, __LINE__, array($txt, $right-$left, $this->pdf->GetStringWidth($txt))); 
-
-					list($left, $right) = $this->getMargins($y);	// marges autorisees
-				}
-			}
-
-			// si il reste du text apres découpe, c'est qu'il rentre direct => on l'affiche
-			if (strlen($txt))
-			{
-				$this->pdf->Cell(($align=='L' ? $w : $this->style->value['width']), $h+$dh, $txt, 0, 0, $align, $fill, $this->inLink);
-				$this->maxH = max($this->maxH, $this->style->getLineHeight());
-			}
-			
-			// détermination des positions MAX
-			$maxX = max($maxX, $this->pdf->getX());
-			$maxY = $this->pdf->getY()+$h;
-
-			// position maximale globale
-			$this->maxX = max($this->maxX, $maxX);
-			$this->maxY = max($this->maxY, $maxY);
-			
-			return true;
-		}
-
-		/**
-		* tracer une image
-		* 
-		* @param	string	nom du fichier source
-		* @return	null
-		*/	
-		function Image($src, $sub_li=false)
-		{
-			// est-ce que c'est une image ?
-			$infos=@GetImageSize($src);
-
-			if (count($infos)<2)
-			{
-				if ($this->testIsImage)
-				{
-					@HTML2PDF::makeError(6, __FILE__, __LINE__, $src);
-					return false;
-				}
-				$src = null;
-				$infos = array(16, 16);
-			}
-			
-			// récupération des dimensions dans l'unité du PDF
-			$wi = $infos[0]/$this->pdf->k;
-			$hi = $infos[1]/$this->pdf->k;
-			
-			// détermination des dimensions d'affichage en fonction du style
-			if ($this->style->value['width'] && $this->style->value['height'])
-			{
-				$w = $this->style->value['width'];
-				$h = $this->style->value['height'];
-			}
-			else if ($this->style->value['width'])
-			{
-				$w = $this->style->value['width'];
-				$h = $hi*$w/$wi;
-				
-			}
-			else if ($this->style->value['height'])
-			{
-				$h = $this->style->value['height'];
-				$w = $wi*$h/$hi;
-			}
-			else
-			{
-				$w = 72./96.*$wi;
-				$h = 72./96.*$hi;					
-			}
-			
-			// detection du float
-			$float = $this->style->getFloat();
-			if ($float && $this->maxH) $this->o_BR(array());
-
-			// position d'affichage
-			$x = $this->pdf->getX();
-			$y = $this->pdf->getY();
-			
-			// si l'image ne rentre pas dans la ligne => nouvelle ligne 
-			if (!$float && ($x + $w>$this->pdf->w - $this->pdf->rMargin) && $this->maxH)
-			{
-				$hnl = $this->style->getLineHeight();
-				$hnl = max($this->maxH, $hnl);
-				$this->setNewLine($hnl);
-				$x = $this->pdf->getX();
-				$y = $this->pdf->getY();
-			}
-			
-			// si l'image ne rentre pas dans la page => nouvelle page 
-			if (
-					($y + $h>$this->pdf->h - $this->pdf->bMargin) && 
-					!$this->isInOverflow
-				)
-			{
-				$this->setNewPage();
-				$x = $this->pdf->getX();
-				$y = $this->pdf->getY();
-			}
-
-			// correction pour l'affichage d'une puce image
-			$hT = 0.80*$this->style->value['font-size'];
-			if ($sub_li && $h<$hT)
-			{
-				$y+=($hT-$h);
-			}
-
-			$yc = $y-$this->style->value['margin']['t'];
-
-			// détermination de la position réelle d'affichage en fonction du text-align du parent
-			$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
-
-			if ( $old['width'])
-			{
-				$parent_w = $old['width'];
-				$parent_x = $x;
-			}
-			else
-			{
- 				$parent_w = $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
-				$parent_x = $this->pdf->lMargin;
-			}
-			
-			if ($float)
-			{
-				list($lx, $rx) = $this->getMargins($yc);
-				$parent_x = $lx;
-				$parent_w = $rx-$lx;
-			}
-
-			if ($parent_w>$w && $float!='left')
-			{
-				if ($float=='right' || $this->style->value['text-align']=='li_right')	$x = $parent_x + $parent_w - $w-$this->style->value['margin']['r']-$this->style->value['margin']['l'];
-			}
-			
-			// affichage de l'image, et positionnement à la suite
-			if (!$this->sub_part && !$this->isSubPart)
-			{
-				if ($src) $this->pdf->Image($src, $x, $y, $w, $h, '', $this->inLink);
-				else
-				{
-					$this->pdf->setMyFillColor(array(0.94, 0.86, 0.86));
-					$this->pdf->Rect($x, $y, $w, $h, 'F');
-				}
-			}
-
-			$x-= $this->style->value['margin']['l'];
-			$y-= $this->style->value['margin']['t'];
-			$w+= $this->style->value['margin']['l'] + $this->style->value['margin']['r'];
-			$h+= $this->style->value['margin']['t'] + $this->style->value['margin']['b'];
-
-			if ($float=='left')
-			{
-				$this->maxX = max($this->maxX, $x+$w);
-				$this->maxY = max($this->maxY, $y+$h);
-
-				$this->addMargins($float, $x, $y, $x+$w, $y+$h);
-
-				list($lx, $rx) = $this->getMargins($yc);
-				$this->pdf->x = $lx;
-				$this->pdf->y = $yc;				
-	 		}
-			else if ($float=='right')
-			{
-//				$this->maxX = max($this->maxX, $x+$w);
-				$this->maxY = max($this->maxY, $y+$h);
-
-				$this->addMargins($float, $x, $y, $x+$w, $y+$h);
-
-				list($lx, $rx) = $this->getMargins($yc);
-				$this->pdf->x = $lx;
-				$this->pdf->y = $yc;
-			}
-			else
-			{
-				$this->pdf->setX($x+$w);
-				$this->maxX = max($this->maxX, $x+$w);
-				$this->maxY = max($this->maxY, $y+$h);
-	 			$this->maxH = max($this->maxH, $h);
-			}
-		}
-		
-		/**
-		* Tracer un rectanble
-		* 
-		* @param	float	position X
-		* @param	float	position Y
-		* @param	float	Largeur
-		* @param	float	Hauteur
-		* @param	array	Tableau de style de définition des borders
-		* @param	float	padding - marge intérieur au rectangle => non utile mais on le passe en paramètre
-		* @param	float	margin - marge exterieur au rectangle
-		* @param	array	Tableau de style de définition du background
-		* @return	null
-		*/	
-		function Rectangle($x, $y, $w, $h, $border, $padding, $margin, $background)
-		{
-			if ($this->sub_part || $this->isSubPart) return false;
-			if ($h===null) return false;
-			
-			$x+= $margin;
-			$y+= $margin;
-			$w-= $margin*2;
-			$h-= $margin*2;
-			
-			// récupération des radius
-			$radius_h = $border['radius'][0];
-			$radius_v = $border['radius'][1];
-			
-			// verification des coins en radius
-			$coin_TL = ($radius_h && $radius_v && $radius_v>$border['t']['width'] && $radius_h>$border['l']['width']) ? array($radius_h, $radius_v) : null;
-			$coin_TR = ($radius_h && $radius_v && $radius_v>$border['t']['width'] && $radius_h>$border['r']['width']) ? array($radius_h, $radius_v) : null;
-			$coin_BL = ($radius_h && $radius_v && $radius_v>$border['b']['width'] && $radius_h>$border['l']['width']) ? array($radius_h, $radius_v) : null;
-			$coin_BR = ($radius_h && $radius_v && $radius_v>$border['b']['width'] && $radius_h>$border['r']['width']) ? array($radius_h, $radius_v) : null;
-			
-
-
-			// traitement de la couleur de fond
-			$STYLE = '';
-			if ($background['color'])
-			{
-				$this->pdf->setMyFillColor($background['color']);
-				$STYLE.= 'F';		
-			}
-			
-			if ($STYLE)
-			{
-				$this->pdf->clippingPathOpen($x, $y, $w, $h, $coin_TL,$coin_TR, $coin_BL, $coin_BR);		
-				$this->pdf->Rect($x, $y, $w, $h, $STYLE);
-				$this->pdf->clippingPathClose();		
-			}
-			
-			// traitement de l'image de fond
-			if ($background['image'])
-			{
-				$i_name		= $background['image'];
-				$i_position	= $background['position']!==null	? $background['position']	: array(0, 0);
-				$i_repeat	= $background['repeat']!==null		? $background['repeat']		: array(true, true);
-				
-				// taile du fond (il faut retirer les borders
-				$b_x = $x;
-				$b_y = $y;
-				$b_w = $w;
-				$b_h = $h;
-				
-				if ($border['b']['width']) { $b_h-= $border['b']['width']; }
-				if ($border['l']['width']) { $b_w-= $border['l']['width']; $b_x+= $border['l']['width']; }
-				if ($border['t']['width']) { $b_h-= $border['t']['width']; $b_y+= $border['t']['width']; }
-				if ($border['r']['width']) { $b_w-= $border['r']['width']; }
-
-				// est-ce que c'est une image ?
-				$i_infos=@GetImageSize($i_name);
-	
-				if (count($i_infos)<2)
-				{
-					if ($this->testIsImage)
-					{
-						@HTML2PDF::makeError(6, __FILE__, __LINE__, $i_name);
-						return false;
-					}
-				}
-				else
-				{
-					// récupération des dimensions dans l'unité du PDF
-					$i_width	= 72./96.*$i_infos[0]/$this->pdf->k;
-					$i_height	= 72./96.*$i_infos[1]/$this->pdf->k;
-					
-					if ($i_repeat[0]) $i_position[0] = $b_x;
-					else if(preg_match('/^([-]?[0-9\.]+)%/isU', $i_position[0], $match)) $i_position[0] = $b_x + $match[1]*($b_w-$i_width)/100;
-					else $i_position[0] = $b_x+$i_position[0];
-				
-					if ($i_repeat[1]) $i_position[1] = $b_y;
-					else if(preg_match('/^([-]?[0-9\.]+)%/isU', $i_position[1], $match)) $i_position[1] = $b_y + $match[1]*($b_h-$i_height)/100;
-					else $i_position[1] = $b_y+$i_position[1];
-					
-					$i_x_min = $b_x;
-					$i_x_max = $b_x+$b_w;
-					$i_y_min = $b_y;
-					$i_y_max = $b_y+$b_h;
-					
-					if (!$i_repeat[0] && !$i_repeat[1])
-					{
-						$i_x_min = 	$i_position[0]; $i_x_max = 	$i_position[0]+$i_width;
-						$i_y_min = 	$i_position[1]; $i_y_max = 	$i_position[1]+$i_height;					
-					}
-					else if ($i_repeat[0] && !$i_repeat[1])
-					{
-						$i_y_min = 	$i_position[1]; $i_y_max = 	$i_position[1]+$i_height;					
-					}
-					elseif (!$i_repeat[0] && $i_repeat[1])
-					{
-						$i_x_min = 	$i_position[0]; $i_x_max = 	$i_position[0]+$i_width;
-					}
-					
-					if (is_array($coin_TL)) { $coin_TL[0]-= $border['l']['width']; $coin_TL[1]-= $border['t']['width']; }
-					if (is_array($coin_TR)) { $coin_TR[0]-= $border['r']['width']; $coin_TR[1]-= $border['t']['width']; }
-					if (is_array($coin_BL)) { $coin_BL[0]-= $border['l']['width']; $coin_BL[1]-= $border['b']['width']; }
-					if (is_array($coin_BR)) { $coin_BR[0]-= $border['r']['width']; $coin_BR[1]-= $border['b']['width']; }
-					
-					$this->pdf->clippingPathOpen($b_x, $b_y, $b_w, $b_h, $coin_TL, $coin_TR, $coin_BL, $coin_BR);		
-					for ($i_y=$i_y_min; $i_y<$i_y_max; $i_y+=$i_height)
-					{
-						for ($i_x=$i_x_min; $i_x<$i_x_max; $i_x+=$i_width)
-						{
-							$c_x = null;
-							$c_y = null;
-							$c_w = $i_width;
-							$c_h = $i_height;
-							if ($i_y_max-$i_y<$i_height)
-							{
-								$c_x = $i_x;
-								$c_y = $i_y;
-								$c_h = $i_y_max-$i_y;
-							}
-							if ($i_x_max-$i_x<$i_width)
-							{
-								$c_x = $i_x;
-								$c_y = $i_y;
-								$c_w = $i_x_max-$i_x;
-							}
-	
-							$this->pdf->Image($i_name, $i_x, $i_y, $i_width, $i_height, '', '');						
-						}
-					}
-					$this->pdf->clippingPathClose();
-				}
-			}
-						
-			$x-= 0.01;
-			$y-= 0.01;
-			$w+= 0.02;
-			$h+= 0.02;
-			if ($border['b']['width']) $border['b']['width']+= 0.02;
-			if ($border['l']['width']) $border['l']['width']+= 0.02;
-			if ($border['t']['width']) $border['t']['width']+= 0.02;
-			if ($border['r']['width']) $border['r']['width']+= 0.02;
-			
-			if ($border['b']['width'] && $border['b']['color'][0]!==null)
-			{
-				$pt = array();
-				$pt[] = $x+$w;							$pt[] = $y+$h;
-				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y+$h;
-				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$h;
-				$pt[] = $x;								$pt[] = $y+$h;
-				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$h-$border['b']['width'];
-				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y+$h-$border['b']['width'];
-				
-				$bord = 3;			
-				if (is_array($coin_BL))
-				{
-					$bord-=2;
-					$pt[4] += $radius_h-$border['l']['width'];
-					$pt[8] += $radius_h-$border['l']['width'];
-					unset($pt[6]);unset($pt[7]);
-				}
-				if (is_array($coin_BR))
-				{
-					$courbe = array();
-					$courbe[] = $x+$w; 							$courbe[] = $y+$h-$radius_v;
-					$courbe[] = $x+$w-$radius_h; 				$courbe[] = $y+$h;
-					$courbe[] = $x+$w-$border['r']['width'];	$courbe[] = $y+$h-$radius_v;
-					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$h-$border['b']['width'];
-					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$h-$radius_v;
-					$this->Courbe($courbe, $border['b']['color']);
-
-					$bord-=1;
-					$pt[2] -= $radius_h-$border['r']['width'];
-					$pt[10]-= $radius_h-$border['r']['width'];
-					unset($pt[0]);unset($pt[1]);
-					
-				}
-
-				$pt = array_values($pt);
-				$this->Line($pt, $border['b']['color'], $border['b']['type'], $border['b']['width'], $bord);
-			}
-
-			if ($border['l']['width'] && $border['l']['color'][0]!==null)
-			{
-				$pt = array();
-				$pt[] = $x;								$pt[] = $y+$h;
-				$pt[] = $x;								$pt[] = $y+$h-$border['b']['width'];
-				$pt[] = $x;								$pt[] = $y+$border['t']['width'];
-				$pt[] = $x;								$pt[] = $y;
-				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$border['t']['width'];
-				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$h-$border['b']['width'];
-
-				$bord = 3;			
-				if (is_array($coin_BL))
-				{
-					$courbe = array();
-					$courbe[] = $x+$radius_h; 				$courbe[] = $y+$h;
-					$courbe[] = $x; 						$courbe[] = $y+$h-$radius_v;
-					$courbe[] = $x+$radius_h;				$courbe[] = $y+$h-$border['b']['width'];
-					$courbe[] = $x+$border['l']['width'];	$courbe[] = $y+$h-$radius_v;
-					$courbe[] = $x+$radius_h;				$courbe[] = $y+$h-$radius_v;
-					$this->Courbe($courbe, $border['l']['color']);
-					
-					$bord-=1;
-					$pt[3] -= $radius_v-$border['b']['width'];
-					$pt[11]-= $radius_v-$border['b']['width'];	
-					unset($pt[0]);unset($pt[1]);
-				}
-				if (is_array($coin_TL))
-				{
-					$bord-=2;
-					$pt[5] += $radius_v-$border['t']['width'];
-					$pt[9] += $radius_v-$border['t']['width'];
-					unset($pt[6]);unset($pt[7]);
-				}
-				
-				$pt = array_values($pt);
-				$this->Line($pt, $border['l']['color'], $border['l']['type'], $border['l']['width'], $bord);
-			}
-			
-			if ($border['t']['width'] && $border['t']['color'][0]!==null)
-			{
-				$pt = array();
-				$pt[] = $x;								$pt[] = $y;
-				$pt[] = $x+$border['l']['width'];		$pt[] = $y;
-				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y;
-				$pt[] = $x+$w;							$pt[] = $y;
-				$pt[] = $x+$w-$border['r']['width'];	$pt[] = $y+$border['t']['width'];
-				$pt[] = $x+$border['l']['width'];		$pt[] = $y+$border['t']['width'];
-
-				$bord = 3;			
-				if (is_array($coin_TL))
-				{
-					$courbe = array();
-					$courbe[] = $x; 						$courbe[] = $y+$radius_v;
-					$courbe[] = $x+$radius_h; 				$courbe[] = $y;
-					$courbe[] = $x+$border['l']['width'];	$courbe[] = $y+$radius_v;
-					$courbe[] = $x+$radius_h;				$courbe[] = $y+$border['t']['width'];
-					$courbe[] = $x+$radius_h;				$courbe[] = $y+$radius_v;
-					$this->Courbe($courbe, $border['t']['color']);
-
-					$bord-=1;
-					$pt[2] += $radius_h-$border['l']['width'];
-					$pt[10]+= $radius_h-$border['l']['width'];
-					unset($pt[0]);unset($pt[1]);
-				}
-				if (is_array($coin_TR))
-				{
-					$bord-=2;
-					$pt[4] -= $radius_h-$border['r']['width'];
-					$pt[8] -= $radius_h-$border['r']['width'];
-					unset($pt[6]);unset($pt[7]);
-				}
-				
-				$pt = array_values($pt);
-				$this->Line($pt, $border['t']['color'], $border['t']['type'], $border['t']['width'], $bord);
-			}
-
-			if ($border['r']['width'] && $border['r']['color'][0]!==null)
-			{
-				$pt = array();
-				$pt[] = $x+$w;								$pt[] = $y;
-				$pt[] = $x+$w;								$pt[] = $y+$border['t']['width'];
-				$pt[] = $x+$w;								$pt[] = $y+$h-$border['b']['width'];
-				$pt[] = $x+$w;								$pt[] = $y+$h;
-				$pt[] = $x+$w-$border['r']['width'];		$pt[] = $y+$h-$border['b']['width'];
-				$pt[] = $x+$w-$border['r']['width'];		$pt[] = $y+$border['t']['width'];
-				
-				$bord = 3;			
-				if (is_array($coin_TR))
-				{
-					$courbe = array();
-					$courbe[] = $x+$w-$radius_h; 				$courbe[] = $y;
-					$courbe[] = $x+$w; 							$courbe[] = $y+$radius_v;
-					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$border['t']['width'];
-					$courbe[] = $x+$w-$border['r']['width'];	$courbe[] = $y+$radius_v;
-					$courbe[] = $x+$w-$radius_h;				$courbe[] = $y+$radius_v;
-					$this->Courbe($courbe, $border['r']['color']);
-
-					$bord-=1;
-					$pt[3] += $radius_v-$border['t']['width'];
-					$pt[11]+= $radius_v-$border['t']['width'];
-					unset($pt[0]);unset($pt[1]);
-				}
-				if (is_array($coin_BR))
-				{
-					$bord-=2;
-					$pt[5] -= $radius_v-$border['b']['width'];
-					$pt[9] -= $radius_v-$border['b']['width'];
-					unset($pt[6]);unset($pt[7]);
-				}
-				
-				$pt = array_values($pt);
-				$this->Line($pt, $border['r']['color'], $border['r']['type'], $border['r']['width'], $bord);
-			}
-
-			if ($background['color'])
-			{
-				$this->pdf->setMyFillColor($background['color']);
-			}
-		}
-		
-		function Courbe($pt, $color)
-		{
-			$this->pdf->setMyFillColor($color);
-			
-			$this->pdf->drawCourbe($pt[0], $pt[1], $pt[2], $pt[3], $pt[4], $pt[5], $pt[6], $pt[7], $pt[8], $pt[9]);
-		}
-		
-		/**
-		* Tracer une ligne epaisse défini par ses points avec des extreminites en biseau
-		* 
-		* @param	array	liste des points definissant le tour de la ligne
-		* @param	float	couleur RVB
-		* @param	string	type de ligne
-		* @param	float	largeur de la ligne
-		* @return	null
-		*/	
-		function Line($pt, $color, $type, $width, $bord=3)
-		{
-			$this->pdf->setMyFillColor($color);
-			if ($type=='dashed' || $type=='dotted')
-			{
-				if ($bord==1)
-				{
-					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
-					$this->pdf->Polygon($tmp, 'F');
-					
-					$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];
-					$pt = $tmp;
-				}
-				else if ($bord==2)
-				{
-					$tmp = array(); $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7];
-					$this->pdf->Polygon($tmp, 'F');
-					
-					$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];
-					$pt = $tmp;					
-				}
-				else if ($bord==3)
-				{
-					$tmp = array(); $tmp[]=$pt[0]; $tmp[]=$pt[1]; $tmp[]=$pt[2]; $tmp[]=$pt[3]; $tmp[]=$pt[10]; $tmp[]=$pt[11];
-					$this->pdf->Polygon($tmp, 'F');
-	
-					$tmp = array(); $tmp[]=$pt[4]; $tmp[]=$pt[5]; $tmp[]=$pt[6]; $tmp[]=$pt[7]; $tmp[]=$pt[8]; $tmp[]=$pt[9];
-					$this->pdf->Polygon($tmp, 'F');
-					
-					$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];
-					$pt = $tmp;
-				}
-				
-				if ($pt[2]==$pt[0])
-				{
-					$l = abs(($pt[3]-$pt[1])*0.5);
-					$px = 0;
-					$py = $width;
-					$x1 = $pt[0]; $y1 = ($pt[3]+$pt[1])*0.5;
-					$x2 = $pt[6]; $y2 = ($pt[7]+$pt[5])*0.5;
-				}
-				else
-				{
-					$l = abs(($pt[2]-$pt[0])*0.5);
-					$px = $width;
-					$py = 0;					
-					$x1 = ($pt[2]+$pt[0])*0.5; $y1 = $pt[1];
-					$x2 = ($pt[6]+$pt[4])*0.5; $y2 = $pt[7];
-				}
-				if ($type=='dashed')
-				{
-					$px = $px*3.;
-					$py = $py*3.;
-				}
-				$mode = ($l/($px+$py)<.5);
-				
-				for($i=0; $l-($px+$py)*($i-0.5)>0; $i++)
-				{
-					if (($i%2)==$mode)
-					{
-						$j = $i-0.5;
-						$lx1 = $px*($j);	if ($lx1<-$l)	$lx1 =-$l;
-						$ly1 = $py*($j);	if ($ly1<-$l)	$ly1 =-$l;
-						$lx2 = $px*($j+1);	if ($lx2>$l)	$lx2 = $l;
-						$ly2 = $py*($j+1);	if ($ly2>$l)	$ly2 = $l;
-						
-						$tmp = array();
-						$tmp[] = $x1+$lx1;	$tmp[] = $y1+$ly1;	
-						$tmp[] = $x1+$lx2; 	$tmp[] = $y1+$ly2;	
-						$tmp[] = $x2+$lx2; 	$tmp[] = $y2+$ly2;	
-						$tmp[] = $x2+$lx1;	$tmp[] = $y2+$ly1;
-						$this->pdf->Polygon($tmp, 'F');	
-
-						if ($j>0)
-						{
-							$tmp = array();
-							$tmp[] = $x1-$lx1;	$tmp[] = $y1-$ly1;	
-							$tmp[] = $x1-$lx2; 	$tmp[] = $y1-$ly2;	
-							$tmp[] = $x2-$lx2; 	$tmp[] = $y2-$ly2;	
-							$tmp[] = $x2-$lx1;	$tmp[] = $y2-$ly1;
-							$this->pdf->Polygon($tmp, 'F');	
-						}
-					}
-				}		
-			}
-			else if ($type=='solid')
-			{
-				$this->pdf->Polygon($pt, 'F');
-			}
-		}
-	
-		/**
-		* balise : BR
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @param	integer	position reelle courante si saut de ligne pendant l'ecriture d'un texte 
-		* @return	null
-		*/	
-		function o_BR($param, $curr = null)
-		{
-			if ($this->forOneLine) return false;
-			
-			$h = $this->style->getLineHeight();
-			$h = max($this->maxH, $h);
-			$y = $this->pdf->getY();
-
-			// si la ligne est vide, la position maximale n'a pas été mise à jour => on la met à jour
-			if ($this->maxH==0) $this->maxY = max($this->maxY, $y+$h);
-			
-			// si le saut de ligne rentre => on le prend en compte, sinon nouvelle page
-			if (($y+$h<$this->pdf->h - $this->pdf->bMargin) || $this->isInOverflow)
-				$this->setNewLine($h, $curr);
-			else
-				$this->setNewPage(null, '', null, $curr);
-			
-			$this->maxH = 0;
-			
-			return true;
-		}
-		
-		/**
-		* balise : HR
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_HR($param)
-		{
-			if ($this->forOneLine) return false;
-			$old_align = $this->style->value['text-align'];
-			$this->style->value['text-align'] = 'left';
-
-			if ($this->maxH) $this->o_BR($param);
-			
-			$f_size = $this->style->value['font-size'];
-			$this->style->value['font-size']=$f_size*0.5; $this->o_BR($param);
-			$this->style->value['font-size']=0;
-			
-			$param['style']['width'] = '100%';
-			
-			$this->style->save();
-			$this->style->value['height']=$this->style->ConvertToMM('1mm');
-
-			$this->style->analyse('hr', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			$h = $this->style->value['height'];
-			if ($h)		$h-= $this->style->value['border']['t']['width']+$this->style->value['border']['b']['width'];
-			if ($h<=0)	$h = $this->style->value['border']['t']['width']+$this->style->value['border']['b']['width'];
-
-			$this->Rectangle($this->pdf->x, $this->pdf->y, $this->style->value['width'], $h, $this->style->value['border'], 0, 0, $this->style->value['background']);
-			$this->maxH = $h;
-
-			$this->style->load();
-			$this->style->FontSet();
-			
-			$this->o_BR($param);
-
-			$this->style->value['font-size']=$f_size*0.5; $this->o_BR($param);
-			$this->style->value['font-size']=$f_size;
-
-			$this->style->value['text-align'] = $old_align;
-			$this->setNewPositionForNewLine();
-						
-			return true;
-		}
-
-		/**
-		* balise : B
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_B($param, $other = 'b')
-		{
-			$this->style->save();
-			$this->style->value['font-bold'] = true;
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function o_STRONG($param) { return $this->o_B($param, 'strong'); }
-				
-		/**
-		* balise : B
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_B($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function c_STRONG($param) { return $this->c_B($param); }
-		
-		/**
-		* balise : I
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_I($param, $other = 'i')
-		{
-			$this->style->save();
-			$this->style->value['font-italic'] = true;
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}	
-		function o_ADDRESS($param)	{ return $this->o_I($param, 'address');	}
-		function o_CITE($param)		{ return $this->o_I($param, 'cite');		}
-		function o_EM($param)		{ return $this->o_I($param, 'em');			}
-		function o_SAMP($param)		{ return $this->o_I($param, 'samp');		}
-
-		/**
-		* balise : I
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_I($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}	
-		function c_ADDRESS($param)	{ return $this->c_I($param); }
-		function c_CITE($param)		{ return $this->c_I($param); }
-		function c_EM($param) 		{ return $this->c_I($param); }
-		function c_SAMP($param)		{ return $this->c_I($param); }
-
-		/**
-		* balise : S
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_S($param, $other = 's')
-		{
-			$this->style->save();
-			$this->style->value['font-linethrough'] = true;
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}	
-		function o_DEL($param) { return $this->o_S($param, 'del'); }
-		
-		/**
-		* balise : S
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_S($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function c_DEL($param) { return $this->c_S($param); }
-		
-		/**
-		* balise : U
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_U($param, $other='u')
-		{
-			$this->style->save();
-			$this->style->value['font-underline'] = true;
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}	
-		function o_INS($param) { return $this->o_U($param, 'ins'); }
-		
-		/**
-		* balise : U
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_U($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function c_INS($param) { return $this->c_U($param); }
-		
-		/**
-		* balise : A
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_A($param)
-		{
-			$this->inLink = str_replace('&amp;', '&', isset($param['href']) ? $param['href'] : '');
-			
-			if (isset($param['name']))
-			{
-				$nom = 	$param['name'];
-				if (!isset($this->lstAncre[$nom])) $this->lstAncre[$nom] = array($this->pdf->AddLink(), false);
-				
-				if (!$this->lstAncre[$nom][1])
-				{
-					$this->lstAncre[$nom][1] = true;
-					$this->pdf->SetLink($this->lstAncre[$nom][0], -1, -1);
-				}
-			}
-			
-			if (preg_match('/^#([^#]+)$/isU', $this->inLink, $match))
-			{
-				$nom = $match[1];
-				if (!isset($this->lstAncre[$nom])) $this->lstAncre[$nom] = array($this->pdf->AddLink(), false);
-				
-				$this->inLink = $this->lstAncre[$nom][0];
-			}
-			
-			$this->style->save();
-			$this->style->value['font-underline'] = true;
-			$this->style->value['color'] = array(0.08, 0.08, 0.98);
-			$this->style->analyse('a', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;		
-		}
-
-		/**
-		* balise : A
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_A($param)
-		{
-			$this->inLink	= '';
-			$this->style->load();
-			$this->style->FontSet();			
-			
-			return true;
-		}
-
-		/**
-		* balise : H1
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_H1($param, $other = 'h1')
-		{
-			if ($this->forOneLine) return false;
-			
-			if ($this->maxH) $this->o_BR(array());
-			$this->style->save();
-			$this->style->value['font-bold'] = true;
-			
-			$size = array('h1' => '28px', 'h2' => '24px', 'h3' => '20px', 'h4' => '16px', 'h5' => '12px', 'h6' => '9px');
-			$this->style->value['margin']['l'] = 0;
-			$this->style->value['margin']['r'] = 0;
-			$this->style->value['margin']['t'] = $this->style->ConvertToMM('16px');
-			$this->style->value['margin']['b'] = $this->style->ConvertToMM('16px');
-			$this->style->value['font-size'] = $this->style->ConvertToMM($size[$other]);
-
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			$this->setNewPositionForNewLine();
-			
-			return true;
-		}
-		function o_H2($param)	{ return $this->o_H1($param, 'h2'); }
-		function o_H3($param)	{ return $this->o_H1($param, 'h3'); }
-		function o_H4($param)	{ return $this->o_H1($param, 'h4'); }
-		function o_H5($param)	{ return $this->o_H1($param, 'h5'); }
-		function o_H6($param)	{ return $this->o_H1($param, 'h6'); }
-		
-		
-		/**
-		* balise : H1
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_H1($param)
-		{
-			if ($this->forOneLine) return false;
-			$this->maxH+= $this->style->value['margin']['b'];
-			$this->o_BR(array());
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function c_H2($param)	{ return $this->c_H1($param); }
-		function c_H3($param)	{ return $this->c_H1($param); }
-		function c_H4($param)	{ return $this->c_H1($param); }
-		function c_H5($param)	{ return $this->c_H1($param); }
-		function c_H6($param)	{ return $this->c_H1($param); }
-		
-		/**
-		* balise : SPAN
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_SPAN($param, $other = 'span')
-		{
-			$this->style->save();
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();		
-			
-			return true;
-		}	
-		function o_FONT($param)		{ return $this->o_SPAN($param, 'font');	}
-
-		/**
-		* balise : SPAN
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_SPAN($param)
-		{
-			$this->style->restorePosition($this->pdf->x, $this->pdf->y);
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function c_FONT($param)		{ return $this->c_SPAN($param); }
-
-
-		/**
-		* balise : P
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_P($param)
-		{
-			if ($this->forOneLine) return false;
-
-			if (!in_array($this->previousCall, array('c_P', 'c_UL')))
-			{
-				if ($this->maxH) $this->o_BR(array());
-				$this->o_BR(array());
-			}
-			
-			$this->style->save();
-			$this->style->analyse('p', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			if ($this->style->value['text-indent']>0) $this->pdf->x+= $this->style->value['text-indent'];
-			
-			return true;
-		}
-		
-		/**
-		* balise : P
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_P($param)
-		{
-			if ($this->forOneLine) return false;
-
-			if ($this->maxH) $this->o_BR(array());
-			$this->o_BR(array());
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		
-		/**
-		* balise : PRE
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_PRE($param, $other = 'pre')
-		{
-			if ($other=='pre' && $this->maxH) $this->o_BR(array());
-			
-			$this->style->save();
-			$this->style->value['font-family']	= 'courier';
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-
-			if ($other=='pre') return $this->o_DIV($param, $other);
-			
-			return true;
-		}
-		function o_CODE($param) { return $this->o_PRE($param, 'code'); }
-		
-		/**
-		* balise : PRE
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_PRE($param, $other = 'pre')
-		{
-			if ($other=='pre')
-			{
-				if ($this->forOneLine) return false;
-
-				$this->c_DIV($param);
-				$this->o_BR(array());
-			}
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		function c_CODE($param) { return $this->c_PRE($param, 'code'); }
-				
-		/**
-		* balise : BIG
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_BIG($param)
-		{
-			$this->style->save();
-			$this->style->value['mini-decal']-= $this->style->value['mini-size']*0.2;
-			$this->style->value['mini-size'] *= 1.2;
-			$this->style->analyse('big', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : BIG
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_BIG($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : SMALL
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_SMALL($param)
-		{
-			$this->style->save();
-			$this->style->value['mini-decal']+= $this->style->value['mini-size']*0.18;
-			$this->style->value['mini-size'] *= 0.82;
-			$this->style->analyse('small', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}
-		 
-		/**
-		* balise : SMALL
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_SMALL($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-
-		/**
-		* balise : SUP
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_SUP($param)
-		{
-			$this->style->save();
-			$this->style->value['mini-decal']-= $this->style->value['mini-size']*0.25;
-			$this->style->value['mini-size'] *= 0.75;
-			$this->style->analyse('sup', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}
-		 
-		/**
-		* balise : SUP
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_SUP($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : SUB
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_SUB($param)
-		{
-			$this->style->save();
-			$this->style->value['mini-decal']+= $this->style->value['mini-size']*0.25;
-			$this->style->value['mini-size'] *= 0.75;
-			$this->style->analyse('sub', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			$this->inSub = 1;
-			
-			return true;
-		}
-		 
-		/**
-		* balise : SUB
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_SUB($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : UL
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_UL($param, $other = 'ul')
-		{
-			if ($this->forOneLine) return false;
-
-			if (!in_array($this->previousCall, array('c_P', 'c_UL')))
-			{
-				if ($this->maxH) $this->o_BR(array());
-				if (!count($this->defLIST)) $this->o_BR(array());
-			}
-			
-			if (!isset($param['style']['width'])) $param['allwidth'] = true;
-			$param['cellspacing'] = 0;
-
-			// une liste est traitée comme un tableau
-			$this->o_TABLE($param, $other);
-
-			// ajouter un niveau de liste
-			$this->listeAddLevel($other, $this->style->value['list-style-type'], $this->style->value['list-style-image']);
-			
-			return true;
-		}
-		function o_OL($param) { return $this->o_UL($param, 'ol'); }	
-		
-		/**
-		* balise : UL
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/
-		function c_UL($param)
-		{
-			if ($this->forOneLine) return false;
-
-			// fin du tableau
-			$this->c_TABLE($param);
-			
-			// enlever un niveau de liste
-			$this->listeDelLevel();
-
-			if (!$this->sub_part)
-			{
-				if (!count($this->defLIST)) $this->o_BR(array());
-			}
-			
-			return true;
-		}
-		function c_OL($param) { return $this->c_UL($param); }
-
-		/**
-		* balise : LI
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/
-		function o_LI($param)
-		{
-			if ($this->forOneLine) return false;
-
-			// ajouter une puce au niveau actuel
-			$this->listeAddLi();
-
-			if (!isset($param['style']['width'])) $param['style']['width'] = '100%';
-
-			// preparation du style de la puce
-			$paramPUCE = $param;
-			
-			$inf = $this->listeGetLi();
-			if ($inf[0])
-			{
-				$paramPUCE['style']['font-family']		= $inf[0];
-				$paramPUCE['style']['text-align']		= 'li_right';
-				$paramPUCE['style']['vertical-align']	= 'top';
-				$paramPUCE['style']['width']			= $this->listeGetWidth();
-				$paramPUCE['style']['padding-right']	= $this->listeGetPadding();
-				$paramPUCE['txt'] = $inf[2];
-			}
-			else
-			{
-				$paramPUCE['style']['text-align']		= 'li_right';
-				$paramPUCE['style']['vertical-align']	= 'top';
-				$paramPUCE['style']['width']			= $this->listeGetWidth();
-				$paramPUCE['style']['padding-right']	= $this->listeGetPadding();
-				$paramPUCE['src'] = $inf[2];
-				$paramPUCE['sub_li'] = true;
-			}
-			
-			// nouvelle ligne
-			$this->o_TR($param, 'li');
-
-			$this->style->save();
-			
-			if ($inf[1])
-			{
-				$this->style->value['mini-decal']+= $this->style->value['mini-size']*0.25;
-				$this->style->value['mini-size'] *= 0.75;
-			}
-			
-			// si on est dans un sub_html => preparation, sinon affichage classique
-			if ($this->sub_part)
-			{
-				// TD pour la puce
-				$tmp_pos = $this->temp_pos;
-				$tmp_lst1 = $this->parsing->code[$tmp_pos+1];
-				$tmp_lst2 = $this->parsing->code[$tmp_pos+2];
-				$this->parsing->code[$tmp_pos+1] = array();
-				$this->parsing->code[$tmp_pos+1]['name']	= (isset($paramPUCE['src'])) ? 'img' : 'write';
-				$this->parsing->code[$tmp_pos+1]['param']	= $paramPUCE; unset($this->parsing->code[$tmp_pos+1]['param']['style']['width']);
-				$this->parsing->code[$tmp_pos+1]['close']	= 0;
-				$this->parsing->code[$tmp_pos+2] = array();
-				$this->parsing->code[$tmp_pos+2]['name']	= 'li';
-				$this->parsing->code[$tmp_pos+2]['param']	= $paramPUCE;
-				$this->parsing->code[$tmp_pos+2]['close']	= 1;
-				$this->o_TD($paramPUCE, 'li_sub');
-				$this->c_TD($param);
-				$this->temp_pos = $tmp_pos;
-				$this->parsing->code[$tmp_pos+1] = $tmp_lst1;
-				$this->parsing->code[$tmp_pos+2] = $tmp_lst2;
-			}
-			else
-			{
-				// TD pour la puce
-				$this->o_TD($paramPUCE, 'li_sub');
-				unset($paramPUCE['style']['width']);
-				if (isset($paramPUCE['src']))	$this->o_IMG($paramPUCE);
-				else							$this->o_WRITE($paramPUCE);
-				$this->c_TD($paramPUCE);
-			}
-			$this->style->load();
-
-				
-			// td pour le contenu
-			$this->o_TD($param, 'li');
-			
-			return true;
-		}
-
-		/**
-		* balise : LI
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/
-		function c_LI($param)
-		{
-			if ($this->forOneLine) return false;
-
-			// fin du contenu
-			$this->c_TD($param, 'li');
-			
-			// fin de la ligne
-			$this->c_TR($param, 'li');
-			
-			return true;
-		}
-		
-		/**
-		* balise : TBODY
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TBODY($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->save();
-			$this->style->analyse('tbody', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}	
-
-		/**
-		* balise : TBODY
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TBODY($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : THEAD
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_THEAD($param)
-		{
-			if ($this->forOneLine) return false;
-
-			global $HTML2PDF_TABLEAU;
-			
-			$this->style->save();
-			$this->style->analyse('thead', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			// si on est en mode sub_html : sauvegarde du numéro du TR 
-			if ($this->sub_part)
-			{
-				$HTML2PDF_TABLEAU[$param['num']]['thead']['tr'][0] = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
-				$HTML2PDF_TABLEAU[$param['num']]['thead']['code'] = array(); 
-				for($pos=$this->temp_pos; $pos<count($this->parsing->code); $pos++)
-				{
-					$todo = $this->parsing->code[$pos];
-					if (strtolower($todo['name'])=='thead') $todo['name'] = 'thead_sub';
-					$HTML2PDF_TABLEAU[$param['num']]['thead']['code'][] = $todo;
-					if (strtolower($todo['name'])=='thead_sub' && $todo['close']) break;
-				}
-			}
-			else
-			{
-				$res = $this->parsing->getLevel($this->parse_pos);
-				$this->parse_pos = $res[0]-1;
-				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']+= count($HTML2PDF_TABLEAU[$param['num']]['thead']['tr']);
-			}
-			
-			return true;
-		}	
-
-		/**
-		* balise : THEAD
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_THEAD($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-			$this->style->FontSet();
-
-			// si on est en mode sub_html : sauvegarde du numéro du TR 
-			if ($this->sub_part)
-			{
-				global $HTML2PDF_TABLEAU;				
-				$min = $HTML2PDF_TABLEAU[$param['num']]['thead']['tr'][0];
-				$max = $HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1;				
-				$HTML2PDF_TABLEAU[$param['num']]['thead']['tr'] = range($min, $max);
-			}
-			
-			return true;
-		}
-
-		/**
-		* balise : TFOOT
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TFOOT($param)
-		{
-			if ($this->forOneLine) return false;
-
-			global $HTML2PDF_TABLEAU; 		
-
-			$this->style->save();
-			$this->style->analyse('tfoot', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			// si on est en mode sub_html : sauvegarde du numéro du TR 
-			if ($this->sub_part)
-			{
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0] = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'] = array(); 
-				for($pos=$this->temp_pos; $pos<count($this->parsing->code); $pos++)
-				{
-					$todo = $this->parsing->code[$pos];
-					if (strtolower($todo['name'])=='tfoot') $todo['name'] = 'tfoot_sub';
-					$HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'][] = $todo;
-					if (strtolower($todo['name'])=='tfoot_sub' && $todo['close']) break;
-				}
-			}
-			else
-			{
-				$res = $this->parsing->getLevel($this->parse_pos+1);
-				$this->parse_pos = $res[0];
-				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']+= count($HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr']);
-			}
-			
-			return true;
-		}	
-
-		/**
-		* balise : TFOOT
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TFOOT($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-			$this->style->FontSet();
-			
-			// si on est en mode sub_html : sauvegarde du numéro du TR 
-			if ($this->sub_part)
-			{
-				global $HTML2PDF_TABLEAU;
-				
-				$min = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0];
-				$max = $HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1;				
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'] = range($min, $max);
-			}
-			
-			return true;
-		}
-
-		/**
-		* balise : THEAD_SUB
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_THEAD_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->save();
-			$this->style->analyse('thead', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}
-		
-		/**
-		* balise : THEAD_SUB
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_THEAD_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-
-		/**
-		* balise : TFOOT_SUB
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TFOOT_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->save();
-			$this->style->analyse('tfoot', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}
-		
-		/**
-		* balise : TFOOT_SUB
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TFOOT_SUB($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-				
-		/**
-		* balise : FORM
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_FORM($param)
-		{
-			$this->style->save();
-			$this->style->analyse('form', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			return true;
-		}	
-
-		/**
-		* balise : FORM
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_FORM($param)
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		
-		/**
-		* balise : TABLE
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TABLE($param, $other = 'table')
-		{
-			if ($this->forOneLine) return false;
-			if ($this->maxH) $this->o_BR(array());
-			
-			$this->maxH = 0;
-			// utilisation du tableau des paramétres des tables
-			global $HTML2PDF_TABLEAU; 
-
-			$align_object = isset($param['align']) ? strtolower($param['align']) : 'left';
-			if (isset($param['align'])) unset($param['align']);
-			if (!in_array($align_object, array('left', 'center', 'right'))) $align_object = 'left';
-			
-			// lecture et initialisation du style
-			$this->style->save();
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-
-			if ($this->style->value['margin-auto']) $align_object = 'center';
-
-			// est-on en collapse
-			$collapse = false;			
-			if ($other=='table')
-				$collapse = isset($this->style->value['border']['collapse']) ? $this->style->value['border']['collapse'] : false;
-
-			// si oui il faut adapté les borders
-			if ($collapse)
-			{
-				$param['style']['border'] = 'none';
-				$param['cellspacing'] = 0;
-				$none = $this->style->readBorder('none');
-				$this->style->value['border']['t'] = $none;
-				$this->style->value['border']['r'] = $none;
-				$this->style->value['border']['b'] = $none;
-				$this->style->value['border']['l'] = $none;
-			}				
-			
-			// si on est en mode sub_html : initialisation des dimensions et autres 
-			if ($this->sub_part)
-			{
-				if ($this->DEBUG_actif) $this->DEBUG_add('Table n°'.$param['num'], true);
-				$HTML2PDF_TABLEAU[$param['num']] = array();
-				$HTML2PDF_TABLEAU[$param['num']]['cellpadding']	= $this->style->ConvertToMM(isset($param['cellpadding']) ? $param['cellpadding'] : '1px'); // cellpadding du tableau
-				$HTML2PDF_TABLEAU[$param['num']]['cellspacing']	= $this->style->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px'); // cellspacing du tableau
-				$HTML2PDF_TABLEAU[$param['num']]['cases']		= array();				// liste des propriétés des cases
-				$HTML2PDF_TABLEAU[$param['num']]['corr']		= array();				// tableau de correlation pour les colspan et rowspan
-				$HTML2PDF_TABLEAU[$param['num']]['corr_x']		= 0;					// position dans le tableau de correlation
-				$HTML2PDF_TABLEAU[$param['num']]['corr_y']		= 0;					// position dans le tableau de correlation
-				$HTML2PDF_TABLEAU[$param['num']]['td_curr']		= 0;					// colonne courante
-				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']		= 0;					// ligne courante
-				$HTML2PDF_TABLEAU[$param['num']]['curr_x']		= $this->pdf->getX();	// position courante X
-				$HTML2PDF_TABLEAU[$param['num']]['curr_y']		= $this->pdf->getY();	// position courante Y
-				$HTML2PDF_TABLEAU[$param['num']]['width']		= 0;					// largeur globale
-				$HTML2PDF_TABLEAU[$param['num']]['height']		= 0;					// hauteur globale
-				$HTML2PDF_TABLEAU[$param['num']]['align']		= $align_object;
-				$HTML2PDF_TABLEAU[$param['num']]['marge']		= array();
-				$HTML2PDF_TABLEAU[$param['num']]['marge']['t']	= $this->style->value['padding']['t']+$this->style->value['border']['t']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
-				$HTML2PDF_TABLEAU[$param['num']]['marge']['r']	= $this->style->value['padding']['r']+$this->style->value['border']['r']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
-				$HTML2PDF_TABLEAU[$param['num']]['marge']['b']	= $this->style->value['padding']['b']+$this->style->value['border']['b']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
-				$HTML2PDF_TABLEAU[$param['num']]['marge']['l']	= $this->style->value['padding']['l']+$this->style->value['border']['l']['width']+$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5;
-				$HTML2PDF_TABLEAU[$param['num']]['page']		= 0;					// nombre de pages
-				$HTML2PDF_TABLEAU[$param['num']]['new_page']	= true;					// nouvelle page pour le TR courant
-				$HTML2PDF_TABLEAU[$param['num']]['style_value'] = null;					// style du tableau
-				$HTML2PDF_TABLEAU[$param['num']]['thead']		= array();				// infos sur le thead
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']		= array();				// infos sur le tfoot
-				$HTML2PDF_TABLEAU[$param['num']]['thead']['tr']	= array();				// tr du thead
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr']	= array();				// tr du tfoot
-				$HTML2PDF_TABLEAU[$param['num']]['thead']['height']	= 0;				// hauteur du thead
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['height']	= 0;				// hauteur du tfoot
-				$HTML2PDF_TABLEAU[$param['num']]['thead']['code'] = array();			// contenu HTML du thead
-				$HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'] = array();			// contenu HTML du tfoot
-				$HTML2PDF_TABLEAU[$param['num']]['cols']		= array();				// definition via les balises col
-				$this->saveMargin($this->pdf->lMargin, $this->pdf->tMargin, $this->pdf->rMargin);
-				
-				// adaptation de la largeur en fonction des marges du tableau
-				$this->style->value['width']-= $HTML2PDF_TABLEAU[$param['num']]['marge']['l'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['r'];
-			}
-			else
-			{
-				// on repart à la premiere page du tableau et à la premiere case
-				$HTML2PDF_TABLEAU[$param['num']]['page'] = 0;
-				$HTML2PDF_TABLEAU[$param['num']]['td_curr']	= 0;
-				$HTML2PDF_TABLEAU[$param['num']]['tr_curr']	= 0;
-				$HTML2PDF_TABLEAU[$param['num']]['td_x']		= $HTML2PDF_TABLEAU[$param['num']]['marge']['l']+$HTML2PDF_TABLEAU[$param['num']]['curr_x'];
-				$HTML2PDF_TABLEAU[$param['num']]['td_y']		= $HTML2PDF_TABLEAU[$param['num']]['marge']['t']+$HTML2PDF_TABLEAU[$param['num']]['curr_y'];				
-
-				// initialisation du style des bordures de la premiere partie de tableau
-				$this->Rectangle(
-						$HTML2PDF_TABLEAU[$param['num']]['curr_x'],
-						$HTML2PDF_TABLEAU[$param['num']]['curr_y'],
-						$HTML2PDF_TABLEAU[$param['num']]['width'],
-						isset($HTML2PDF_TABLEAU[$param['num']]['height'][0]) ? $HTML2PDF_TABLEAU[$param['num']]['height'][0] : null,
-						$this->style->value['border'],
-						$this->style->value['padding'],
-						0,
-						$this->style->value['background']
-					);
-
-				$HTML2PDF_TABLEAU[$param['num']]['style_value'] = $this->style->value;
-			}
-			
-			return true;
-		}
-
-		/**
-		* balise : TABLE
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TABLE($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			global $HTML2PDF_TABLEAU; 
-
-			// restauration du style
-			$this->style->load();
-			$this->style->FontSet();
-
-			// si on est en mode sub_html : initialisation des dimensions et autres 
-			if ($this->sub_part)
-			{
-				// ajustement de la taille des cases
-				$this->calculTailleCases($HTML2PDF_TABLEAU[$param['num']]['cases'], $HTML2PDF_TABLEAU[$param['num']]['corr']);
-
-				// calcul de la hauteur du THEAD et du TFOOT
-				$lst = array('thead', 'tfoot');
-				foreach($lst as $mode)
-				{
-					$HTML2PDF_TABLEAU[$param['num']][$mode]['height'] = 0;
-					foreach($HTML2PDF_TABLEAU[$param['num']][$mode]['tr'] as $tr)
-					{
-						// hauteur de la ligne tr
-						$h = 0;
-						for($i=0; $i<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$tr]); $i++)
-							if ($HTML2PDF_TABLEAU[$param['num']]['cases'][$tr][$i]['rowspan']==1)
-								$h = max($h, $HTML2PDF_TABLEAU[$param['num']]['cases'][$tr][$i]['h']);
-						$HTML2PDF_TABLEAU[$param['num']][$mode]['height']+= $h;	
-					}
-				}
-
-				// calcul des dimensions du tableau - Largeur
-				$HTML2PDF_TABLEAU[$param['num']]['width'] = $HTML2PDF_TABLEAU[$param['num']]['marge']['l'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['r'];
-				if (isset($HTML2PDF_TABLEAU[$param['num']]['cases'][0]))
-					foreach($HTML2PDF_TABLEAU[$param['num']]['cases'][0] as $case)
-						$HTML2PDF_TABLEAU[$param['num']]['width']+= $case['w'];
-
-				// positionnement du tableau horizontalement;
-				$old = isset($this->style->table[count($this->style->table)-1]) ? $this->style->table[count($this->style->table)-1] : $this->style->value;
-				$parent_w = $old['width'] ? $old['width'] : $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
-				$x = $HTML2PDF_TABLEAU[$param['num']]['curr_x'];
-				$w = $HTML2PDF_TABLEAU[$param['num']]['width'];
-				if ($parent_w>$w)
-				{
-					if ($HTML2PDF_TABLEAU[$param['num']]['align']=='center')
-						$x = $x + ($parent_w-$w)*0.5;
-					else if ($HTML2PDF_TABLEAU[$param['num']]['align']=='right')
-						$x = $x + $parent_w-$w;
-
-					$HTML2PDF_TABLEAU[$param['num']]['curr_x'] = $x;
-				}					
-
-
-				// calcul des dimensions du tableau - hauteur du tableau sur chaque page
-				$HTML2PDF_TABLEAU[$param['num']]['height'] = array();
-
-				$h0 = $HTML2PDF_TABLEAU[$param['num']]['marge']['t'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['b'];	// minimum de hauteur à cause des marges
-				$h0+= $HTML2PDF_TABLEAU[$param['num']]['thead']['height'] + $HTML2PDF_TABLEAU[$param['num']]['tfoot']['height']; // et du tfoot et thead
-				$max = $this->pdf->h - $this->pdf->bMargin;			// max de hauteur par page
-				$y = $HTML2PDF_TABLEAU[$param['num']]['curr_y'];	// position Y actuelle
-				$height = $h0;
-				
-				// on va lire les hauteurs de chaque ligne, une à une, et voir si ca rentre sur la page.
-				for($k=0; $k<count($HTML2PDF_TABLEAU[$param['num']]['cases']); $k++)
-				{
-					// si c'est des lignes du thead ou du tfoot : on passe
-					if (in_array($k, $HTML2PDF_TABLEAU[$param['num']]['thead']['tr'])) continue;
-					if (in_array($k, $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'])) continue;
-
-					// hauteur de la ligne $k
-					$th = 0;
-					$h = 0;
-					for($i=0; $i<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$k]); $i++)
-					{
-						$h = max($h, $HTML2PDF_TABLEAU[$param['num']]['cases'][$k][$i]['h']);
-						
-						if ($HTML2PDF_TABLEAU[$param['num']]['cases'][$k][$i]['rowspan']==1)
-							$th = max($th, $HTML2PDF_TABLEAU[$param['num']]['cases'][$k][$i]['h']);
-					}
-			
-					// si la ligne ne rentre pas dans la page
-					// => la hauteur sur cette page est trouvée, et on passe à la page d'apres
-					if ($y+$h+$height>$max)
-					{
-						if ($height==$h0) $height = null;
-						$HTML2PDF_TABLEAU[$param['num']]['height'][] = $height;
-						$height = $h0;						
-						$y = $this->margeTop;
-					}
-					$height+= $th;
-				}
-				// rajout du reste de tableau (si il existe) à la derniere page
-				if ($height!=$h0 || $k==0) $HTML2PDF_TABLEAU[$param['num']]['height'][] = $height;
-			}
-			else
-			{
-				if (count($HTML2PDF_TABLEAU[$param['num']]['tfoot']['code']))
-				{
-					$tmp_tr = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
-					$tmp_td = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
-					$OLD_parse_pos = $this->parse_pos;
-					$OLD_parse_code = $this->parsing->code;
-					
-					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0];
-					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = 0;
-					$this->parse_pos = 0;
-					$this->parsing->code = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'];
-					$this->MakeHTMLcode();
-					
-					$this->parse_pos = 	$OLD_parse_pos;
-					$this->parsing->code = $OLD_parse_code;
-					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $tmp_tr;
-					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = $tmp_td;
-				}
-					
-				// determination des coordonnées de sortie du tableau
-				$x = $HTML2PDF_TABLEAU[$param['num']]['curr_x'] + $HTML2PDF_TABLEAU[$param['num']]['width'];
-				if (count($HTML2PDF_TABLEAU[$param['num']]['height'])>1)
-					$y = $this->margeTop+$HTML2PDF_TABLEAU[$param['num']]['height'][count($HTML2PDF_TABLEAU[$param['num']]['height'])-1];
-				else if (count($HTML2PDF_TABLEAU[$param['num']]['height'])==1)
-					$y = $HTML2PDF_TABLEAU[$param['num']]['curr_y']+$HTML2PDF_TABLEAU[$param['num']]['height'][count($HTML2PDF_TABLEAU[$param['num']]['height'])-1];
-				else
-					$y = $HTML2PDF_TABLEAU[$param['num']]['curr_y'];					
-
-				// taille du tableau
-				$this->maxX = max($this->maxX, $x);
-				$this->maxY = max($this->maxY, $y);
-				
-				
-				// nouvelle position apres le tableau
-				$this->pdf->setXY($this->pdf->lMargin, $y);
-				
-				// restauration des marges
-				$this->loadMargin();
-				
-				if ($this->DEBUG_actif) $this->DEBUG_add('Table n°'.$param['num'], false);
-			}
-			
-			return true;
-		}
-
-				
-		/**
-		* balise : COL
-		* mode : OUVERTURE (pas de fermeture)
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_COL($param)
-		{
-			global $HTML2PDF_TABLEAU;
-			$span = isset($param['span']) ? $param['span'] : 1;
-			for($k=0; $k<$span; $k++)
-				$HTML2PDF_TABLEAU[$param['num']]['cols'][] = $param;
-		}
-		
-		/**
-		* balise : TR
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TR($param, $other = 'tr')
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			global $HTML2PDF_TABLEAU; 
-
-			// analyse du style
-			$this->style->save();
-			$this->style->analyse($other, $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			// positionnement dans le tableau
-			$HTML2PDF_TABLEAU[$param['num']]['tr_curr']++;
-			$HTML2PDF_TABLEAU[$param['num']]['td_curr']= 0;
-			
-			// si on est pas dans un sub_html
-			if (!$this->sub_part)
-			{
-				// Y courant apres la ligne
-				$ty=null;
-				for($ii=0; $ii<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1]); $ii++)
-					$ty = max($ty, $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$ii]['h']);	
-				
-				$hfoot = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['height'];
-				
-				// si la ligne ne rentre pas dans la page => nouvelle page
-				if (!$this->isInTfoot && $HTML2PDF_TABLEAU[$param['num']]['td_y'] + $HTML2PDF_TABLEAU[$param['num']]['marge']['b'] + $ty +$hfoot> $this->pdf->h - $this->pdf->bMargin)
-				{
-					if (count($HTML2PDF_TABLEAU[$param['num']]['tfoot']['code']))
-					{
-						$tmp_tr = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
-						$tmp_td = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
-						$OLD_parse_pos = $this->parse_pos;
-						$OLD_parse_code = $this->parsing->code;
-						
-						$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['tr'][0];
-						$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = 0;
-						$this->parse_pos = 0;
-						$this->parsing->code = $HTML2PDF_TABLEAU[$param['num']]['tfoot']['code'];
-						$this->isInTfoot = true;
-						$this->MakeHTMLcode();
-						$this->isInTfoot = false;
-						
-						$this->parse_pos = 	$OLD_parse_pos;
-						$this->parsing->code = $OLD_parse_code;
-						$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $tmp_tr;
-						$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = $tmp_td;
-					}
-					
-					$HTML2PDF_TABLEAU[$param['num']]['new_page'] = true;
-					$this->setNewPage();
-
-					$HTML2PDF_TABLEAU[$param['num']]['page']++;
-					$HTML2PDF_TABLEAU[$param['num']]['curr_y'] = $this->pdf->getY();
-					$HTML2PDF_TABLEAU[$param['num']]['td_y'] = $HTML2PDF_TABLEAU[$param['num']]['curr_y']+$HTML2PDF_TABLEAU[$param['num']]['marge']['t'];
-
-					// si la hauteur de cette partie a bien été calculée, on trace le cadre
-					if (isset($HTML2PDF_TABLEAU[$param['num']]['height'][$HTML2PDF_TABLEAU[$param['num']]['page']]))
-					{
-						$old = $this->style->value;
-						$this->style->value = $HTML2PDF_TABLEAU[$param['num']]['style_value'];
-
-						// initialisation du style des bordures de la premiere partie de tableau
-						$this->Rectangle(
-								$HTML2PDF_TABLEAU[$param['num']]['curr_x'],
-								$HTML2PDF_TABLEAU[$param['num']]['curr_y'],
-								$HTML2PDF_TABLEAU[$param['num']]['width'],
-								$HTML2PDF_TABLEAU[$param['num']]['height'][$HTML2PDF_TABLEAU[$param['num']]['page']],
-								$this->style->value['border'],
-								$this->style->value['padding'],
-								$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5,
-								$this->style->value['background']
-							);
-											 
-						$this->style->value = $old;
-					}
-				}
-				
-				if ($HTML2PDF_TABLEAU[$param['num']]['new_page'] && count($HTML2PDF_TABLEAU[$param['num']]['thead']['code']))
-				{
-					$HTML2PDF_TABLEAU[$param['num']]['new_page'] = false;
-					$tmp_tr = $HTML2PDF_TABLEAU[$param['num']]['tr_curr'];
-					$tmp_td = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
-					$OLD_parse_pos = $this->parse_pos;
-					$OLD_parse_code = $this->parsing->code;
-					
-					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $HTML2PDF_TABLEAU[$param['num']]['thead']['tr'][0];
-					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = 0;
-					$this->parse_pos = 0;
-					$this->parsing->code = $HTML2PDF_TABLEAU[$param['num']]['thead']['code'];
-					$this->MakeHTMLcode();
-					
-					$this->parse_pos = 	$OLD_parse_pos;
-					$this->parsing->code = $OLD_parse_code;
-					$HTML2PDF_TABLEAU[$param['num']]['tr_curr'] = $tmp_tr;
-					$HTML2PDF_TABLEAU[$param['num']]['td_curr'] = $tmp_td;
-					$HTML2PDF_TABLEAU[$param['num']]['new_page'] = true;
-				}
-			}
-			else
-			{
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1] = array();
-				if (!isset($HTML2PDF_TABLEAU[$param['num']]['corr'][$HTML2PDF_TABLEAU[$param['num']]['corr_y']]))
-					$HTML2PDF_TABLEAU[$param['num']]['corr'][$HTML2PDF_TABLEAU[$param['num']]['corr_y']] = array();
-					
-				$HTML2PDF_TABLEAU[$param['num']]['corr_x']=0;
-				while(isset($HTML2PDF_TABLEAU[$param['num']]['corr'][$HTML2PDF_TABLEAU[$param['num']]['corr_y']][$HTML2PDF_TABLEAU[$param['num']]['corr_x']]))
-					$HTML2PDF_TABLEAU[$param['num']]['corr_x']++;
-			}							
-			
-			return true;
-		}
-
-		/**
-		* balise : TR
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TR($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			global $HTML2PDF_TABLEAU; 
-
-			// restauration du style
-			$this->style->load();
-			$this->style->FontSet();			
-
-			// si on est pas dans un sub_html
-			if (!$this->sub_part)
-			{
-				// Y courant apres la ligne
-				$ty=null;
-				for($ii=0; $ii<count($HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1]); $ii++)
-					if ($HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$ii]['rowspan']==1)
-						$ty = $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$ii]['h'];	
-
-				// mise à jour des coordonnées courantes
-				$HTML2PDF_TABLEAU[$param['num']]['td_x'] = $HTML2PDF_TABLEAU[$param['num']]['curr_x']+$HTML2PDF_TABLEAU[$param['num']]['marge']['l'];
-				$HTML2PDF_TABLEAU[$param['num']]['td_y']+= $ty;
-				$HTML2PDF_TABLEAU[$param['num']]['new_page'] = false;
-			}
-			else
-			{
-				$HTML2PDF_TABLEAU[$param['num']]['corr_y']++;	
-			}
-			
-			return true;
-		}
-
-		/**
-		* balise : TD
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TD($param, $other = 'td')
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			global $HTML2PDF_TABLEAU; 
-
-			$param['cellpadding'] = $HTML2PDF_TABLEAU[$param['num']]['cellpadding'].'mm';
-			$param['cellspacing'] = $HTML2PDF_TABLEAU[$param['num']]['cellspacing'].'mm';
-			
-			if ($other=='li')
-			{
-				$special_li = true;
-			}
-			else
-			{
-				$special_li = false;
-				if ($other=='li_sub')
-				{
-					$param['style']['border'] = 'none';
-					$param['style']['background-color']		= 'transparent';
-					$param['style']['background-image']		= 'none';
-					$param['style']['background-position']	= '';
-					$param['style']['background-repeat']	= '';
-					$other = 'li';
-				}
-			}
-
-			// est-on en collapse, et egalement y-a-t'il des definitions de colonne
-			$x = $HTML2PDF_TABLEAU[$param['num']]['td_curr'];
-			$y = $HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1;
-			$colspan = isset($param['colspan']) ? $param['colspan'] : 1;
-			$rowspan = isset($param['rowspan']) ? $param['rowspan'] : 1;
-			$collapse = false;
-			if (in_array($other, array('td', 'th')))
-			{
-				$num_col = isset($HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['Xr']) ? $HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['Xr'] : $HTML2PDF_TABLEAU[$param['num']]['corr_x'];
-				
-				// si une definition de colonne est presente
-				if (isset($HTML2PDF_TABLEAU[$param['num']]['cols'][$num_col]))
-				{
-					// on la recupere
-					$col_param = $HTML2PDF_TABLEAU[$param['num']]['cols'][$num_col];
-					
-					// pour les colspan, on recupere toutes les largeurs
-					$col_param['style']['width'] = array();
-					for($k=0; $k<$colspan; $k++)
-					{
-						if (isset($HTML2PDF_TABLEAU[$param['num']]['cols'][$num_col+$k]['style']['width']))
-							$col_param['style']['width'][] = $HTML2PDF_TABLEAU[$param['num']]['cols'][$num_col+$k]['style']['width'];
-					}
-					
-					// on les somme
-					$total = '';
-					$last = $this->style->getLastWidth();
-					if (count($col_param['style']['width']))
-					{
-						$total = $col_param['style']['width'][0]; unset($col_param['style']['width'][0]);
-						foreach($col_param['style']['width'] as $width)
-						{
-							if (substr($total, -1)=='%' && substr($width, -1)=='%')
-								$total = (str_replace('%', '', $total)+str_replace('%', '', $width)).'%';
-							else
-								$total = ($this->style->ConvertToMM($total, $last) + $this->style->ConvertToMM($width, $last)).'mm';
-						}
-					}
-					
-					// et on recupere la largeur finale
-					if ($total)
-						$col_param['style']['width'] = $total;
-					else
-						unset($col_param['style']['width']);
-					
-					
-					// on merge les 2 styles (col + td)
-					$param['style'] = array_merge($col_param['style'], $param['style']);
-					
-					// si une classe est définie, on la merge egalement
-					if (isset($col_param['class']))
-						$param['class'] = $col_param['class'].(isset($param['class']) ? ' '.$param['class'] : '');
-				}
-				
-				$collapse = isset($this->style->value['border']['collapse']) ? $this->style->value['border']['collapse'] : false;
-			}
-
-
-			// analyse du style
-			$this->style->save();
-			$this->style->analyse($other, $param);
-
-			if ($special_li)
-			{
-				$this->style->value['width']-= $this->style->ConvertToMM($this->listeGetWidth());
-				$this->style->value['width']-= $this->style->ConvertToMM($this->listeGetPadding());
-			}
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			// si on est en collapse : modification du style
-			if ($collapse)
-			{
-				if (!$this->sub_part)
-				{
-					if ($HTML2PDF_TABLEAU[$param['num']]['tr_curr']>1 && !$HTML2PDF_TABLEAU[$param['num']]['new_page'])
-						$this->style->value['border']['t'] = $this->style->readBorder('none');				
-				}
-			
-				if ($HTML2PDF_TABLEAU[$param['num']]['td_curr']>0)
-					$this->style->value['border']['l'] = $this->style->readBorder('none');	
-			}	
-			
-			$marge = array();
-			$marge['t'] = $this->style->value['padding']['t']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['t']['width'];
-			$marge['r'] = $this->style->value['padding']['r']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['r']['width'];
-			$marge['b'] = $this->style->value['padding']['b']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['b']['width'];
-			$marge['l'] = $this->style->value['padding']['l']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['l']['width'];
-
-			// si on est dans un sub_html
-			if ($this->sub_part)
-			{
-				// on se positionne dans le tableau
-				$HTML2PDF_TABLEAU[$param['num']]['td_curr']++;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x] = array();
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['w'] = 0;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['h'] = 0;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['dw'] = 0;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['colspan'] = $colspan;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['rowspan'] = $rowspan;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['Xr'] = $HTML2PDF_TABLEAU[$param['num']]['corr_x'];
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['Yr'] = $HTML2PDF_TABLEAU[$param['num']]['corr_y'];
-				
-				for($j=0; $j<$rowspan; $j++)
-				{
-					for($i=0; $i<$colspan; $i++)
-					{
-						$HTML2PDF_TABLEAU[$param['num']]['corr']
-							[$HTML2PDF_TABLEAU[$param['num']]['corr_y']+$j]
-							[$HTML2PDF_TABLEAU[$param['num']]['corr_x']+$i] = ($i+$j>0) ? '' : array($x,$y,$colspan,$rowspan);
-					}
-				}
-				$HTML2PDF_TABLEAU[$param['num']]['corr_x']+= $colspan;
-				while(isset($HTML2PDF_TABLEAU[$param['num']]['corr'][$HTML2PDF_TABLEAU[$param['num']]['corr_y']][$HTML2PDF_TABLEAU[$param['num']]['corr_x']]))
-					$HTML2PDF_TABLEAU[$param['num']]['corr_x']++;
-
-				// on extrait tout ce qui est contenu dans le TD				
-				$res = $this->parsing->getLevel($this->temp_pos);
-				
-				// on en créé un sous HTML que l'on transforme en PDF
-				// pour analyse les dimensions
-				// et les récupérer dans le tableau global.
-				$this->CreateSubHTML($this->sub_html);
-				$this->sub_html->writeHTML($res[1]);
-				$this->temp_pos = $res[0]-2;
-			}
-			else
-			{
-				// on se positionne dans le tableau
-				$HTML2PDF_TABLEAU[$param['num']]['td_curr']++;
-				$HTML2PDF_TABLEAU[$param['num']]['td_x']+= $HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['dw'];
-				
-				// initialisation du style des bordures de la premiere partie de tableau
-				$this->Rectangle(
-						$HTML2PDF_TABLEAU[$param['num']]['td_x'],
-						$HTML2PDF_TABLEAU[$param['num']]['td_y'],
-						$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['w'],
-						$HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['h'],
-						$this->style->value['border'],
-						$this->style->value['padding'],
-						$HTML2PDF_TABLEAU[$param['num']]['cellspacing']*0.5,
-						$this->style->value['background']
-					);
-				
-
-				$this->style->value['width'] = $HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['w'] - $marge['l'] - $marge['r'];
-
-				// limitation des marges aux dimensions de la case
-				$mL = $HTML2PDF_TABLEAU[$param['num']]['td_x']+$marge['l'];
-				$mR = $this->pdf->w - $mL - $this->style->value['width'];
-				$this->saveMargin($mL, 0, $mR);
-				
-				// positionnement en fonction
-				$h_corr = $HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['h'];
-				$h_reel = $HTML2PDF_TABLEAU[$param['num']]['cases'][$y][$x]['real_h'];
-				switch($this->style->value['vertical-align'])
-				{
-					case 'bottom':
-						$y_corr = $h_corr-$h_reel;
-						break;
-						
-					case 'middle':
-						$y_corr = ($h_corr-$h_reel)*0.5;
-						break;
-						
-					case 'top':
-					default:
-						$y_corr = 0;
-						break;	
-				}
-
-				$x = $HTML2PDF_TABLEAU[$param['num']]['td_x']+$marge['l'];
-				$y = $HTML2PDF_TABLEAU[$param['num']]['td_y']+$marge['t']+$y_corr;
-				$this->pdf->setXY($x, $y);
-				$this->setNewPositionForNewLine();
-			}
-			
-			return true;
-		}
-
-		/**
-		* balise : TD
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TD($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			global $HTML2PDF_TABLEAU; 
-
-			// récupération de la marge
-			$marge = array();
-			$marge['t'] = $this->style->value['padding']['t']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['t']['width'];
-			$marge['r'] = $this->style->value['padding']['r']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['r']['width'];
-			$marge['b'] = $this->style->value['padding']['b']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['b']['width'];
-			$marge['l'] = $this->style->value['padding']['l']+0.5*$HTML2PDF_TABLEAU[$param['num']]['cellspacing']+$this->style->value['border']['l']['width'];
-			$marge['t']+= 0.01;
-			$marge['r']+= 0.01;
-			$marge['b']+= 0.01;
-			$marge['l']+= 0.01;
-
-			// si on est dans un sub_html
-			if ($this->sub_part)
-			{
-				if ($this->testTDin1page && $this->sub_html->pdf->page>1) @HTML2PDF::makeError(7, __FILE__, __LINE__); 
-				
-				// dimentions de cette case
-				$w0 = $this->sub_html->maxX + $marge['l'] + $marge['r'];
-				$h0 = $this->sub_html->maxY + $marge['t'] + $marge['b'];
-	
-				// dimensions imposées par le style
-				$w2 = $this->style->value['width'] + $marge['l'] + $marge['r'];
-				$h2 = $this->style->value['height'] + $marge['t'] + $marge['b'];
-	
-				// dimension finale de la case = max des 2 ci-dessus
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'] = max(array($w0, $w2));
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['h'] = max(array($h0, $h2));
-
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['real_w'] = $w0;
-				$HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['real_h'] = $h0;
-
-				// suppresion du sous_html
-				$this->DestroySubHTML($this->sub_html);
-			}
-			else
-			{
-				$this->loadMargin();
-				//positionnement
-				$HTML2PDF_TABLEAU[$param['num']]['td_x']+= $HTML2PDF_TABLEAU[$param['num']]['cases'][$HTML2PDF_TABLEAU[$param['num']]['tr_curr']-1][$HTML2PDF_TABLEAU[$param['num']]['td_curr']-1]['w'];
-			}
-
-			// restauration du style
-			$this->style->load();
-			$this->style->FontSet();	
-			
-			return true;
-		}
-		
-		function calculTailleCases(&$cases, &$corr)
-		{
-/*			// construction d'un tableau de correlation
-			$corr = array();
-
-			// on fait correspondre chaque case d'un tableau normé aux cases réelles, en prennant en compte les colspan et rowspan
-			$Yr=0;
-			for($y=0; $y<count($cases); $y++)
-			{
-				$Xr=0; 	while(isset($corr[$Yr][$Xr])) $Xr++;
-				
-				for($x=0; $x<count($cases[$y]); $x++)
-				{
-					for($j=0; $j<$cases[$y][$x]['rowspan']; $j++)
-					{
-						for($i=0; $i<$cases[$y][$x]['colspan']; $i++)
-						{
-							$corr[$Yr+$j][$Xr+$i] = ($i+$j>0) ? '' : array($x, $y, $cases[$y][$x]['colspan'], $cases[$y][$x]['rowspan']);
-						}
-					}
-					$Xr+= $cases[$y][$x]['colspan'];
-					while(isset($corr[$Yr][$Xr])) $Xr++;
-				}
-				$Yr++;
-			}
-*/			
-			if (!isset($corr[0])) return true;
-			
-			// on détermine, pour les cases sans colspan, la largeur maximale de chaque colone
-			$sw = array();
-			for($x=0; $x<count($corr[0]); $x++)
-			{
-				$m=0;
-				for($y=0; $y<count($corr); $y++)
-					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]==1)
-						$m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w']);				
-				$sw[$x] = $m;	
-			}
-
-			// on vérifie que cette taille est valide avec les colones en colspan
-			for($x=0; $x<count($corr[0]); $x++)
-			{
-				for($y=0; $y<count($corr); $y++)
-				{
-					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][2]>1)
-					{
-						// somme des colonnes correspondant au colspan
-						$s = 0; for($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
-						
-						// si la somme est inférieure à la taille necessaire => règle de 3 pour adapter
-						if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'])
-							for($i=0; $i<$corr[$y][$x][2]; $i++)
-								$sw[$x+$i] = $sw[$x+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
-					}
-				}
-			}
-
-			// on applique les nouvelles largeurs
-			for($x=0; $x<count($corr[0]); $x++)
-			{
-				for($y=0; $y<count($corr); $y++)
-				{
-					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]))
-					{
-						if ($corr[$y][$x][2]==1)
-						{
-							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $sw[$x];
-						}
-						else
-						{
-							// somme des colonnes correspondant au colspan
-							$s = 0; for($i=0; $i<$corr[$y][$x][2]; $i++) $s+= $sw[$x+$i];
-							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'] = $s;
-						}
-					}
-				}
-			}
-
-			// on détermine, pour les cases sans rowspan, la hauteur maximale de chaque colone
-			$sh = array();
-			for($y=0; $y<count($corr); $y++)
-			{
-				$m=0;
-				for($x=0; $x<count($corr[0]); $x++)
-					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]==1)
-						$m = max($m, $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h']);
-				$sh[$y] = $m;	
-			}
-
-
-			// on vérifie que cette taille est valide avec les lignes en rowspan
-			for($y=0; $y<count($corr); $y++)
-			{
-				for($x=0; $x<count($corr[0]); $x++)
-				{
-					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]) && $corr[$y][$x][3]>1)
-					{
-						// somme des colonnes correspondant au colspan
-						$s = 0; for($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
-						
-						// si la somme est inférieure à la taille necessaire => règle de 3 pour adapter
-						if ($s>0 && $s<$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'])
-							for($i=0; $i<$corr[$y][$x][3]; $i++)
-								$sh[$y+$i] = $sh[$y+$i]/$s*$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'];
-					}
-				}
-			}
-			
-
-			// on applique les nouvelles hauteurs
-			for($y=0; $y<count($corr); $y++)
-			{
-				for($x=0; $x<count($corr[0]); $x++)
-				{
-					if (isset($corr[$y][$x]) && is_array($corr[$y][$x]))
-					{
-						if ($corr[$y][$x][3]==1)
-						{
-							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $sh[$y];
-						}
-						else
-						{
-							// somme des lignes correspondant au rowspan
-							$s = 0; for($i=0; $i<$corr[$y][$x][3]; $i++) $s+= $sh[$y+$i];
-							$cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['h'] = $s;
-							
-							for($j=1; $j<$corr[$y][$x][3]; $j++)
-							{
-								$tx = $x+1;
-								$ty = $y+$j;
-								for(true; isset($corr[$ty][$tx]) && !is_array($corr[$ty][$tx]); $tx++);
-								if (isset($corr[$ty][$tx])) $cases[$corr[$ty][$tx][1]][$corr[$ty][$tx][0]]['dw']+= $cases[$corr[$y][$x][1]][$corr[$y][$x][0]]['w'];
-																	
-							}
-						}
-					}
-				}
-			}		
-		}
-
-		/**
-		* balise : TH
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TH($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			// identique à TD mais en gras
-			if (!isset($param['style']['font-weight'])) $param['style']['font-weight'] = 'bold';
-			$this->o_TD($param, 'th');
-			
-			return true;
-		}	
-
-		/**
-		* balise : TH
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TH($param)
-		{
-			if ($this->forOneLine) return false;
-
-			$this->maxH = 0;
-			// identique à TD
-			$this->c_TD($param);			
-			
-			return true;
-		}
-
-		/**
-		* balise : IMG
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_IMG($param)
-		{
-			// analyse du style
-			$src	= str_replace('&amp;', '&', $param['src']);	
-
-			$this->style->save();
-			$this->style->value['width']	= 0;
-			$this->style->value['height']	= 0;
-			$this->style->value['border']	= array(
-													'type'	=> 'none',
-													'width'	=> 0,
-													'color'	=> array(0, 0, 0),
-												);
-			$this->style->value['background'] = array(
-													'color'		=> null,
-													'image'		=> null,
-													'position'	=> null,
-													'repeat'	=> null
-												);
-			$this->style->analyse('img', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-
-			// affichage de l'image			
-			$this->Image($src, isset($param['sub_li']));
-
-			// restauration du style
-			$this->style->load();
-			$this->style->FontSet();	
-			
-			return true;
-		}
-		
-		/**
-		* balise : SELECT
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_SELECT($param)
-		{
-			// preparation du champs
-			if (!isset($param['name']))		$param['name']	= 'champs_pdf_'.(count($this->lstChamps)+1);
-			
-			$param['name'] = strtolower($param['name']);
-			
-			if (isset($this->champs[$param['name']]))
-				$this->champs[$param['name']]++;
-			else
-				$this->champs[$param['name']] = 1;
-				
-			$this->style->save();
-			$this->style->analyse('select', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			$this->lstSelect = array();
-			$this->lstSelect['name']	= $param['name'];
-			$this->lstSelect['multi']	= isset($param['multiple']) ? true : false;
-			$this->lstSelect['size']	= isset($param['size']) ? $param['size'] : 1;
-			$this->lstSelect['options']	= array();
-
-			if ($this->lstSelect['multi'] && $this->lstSelect['size']<3) $this->lstSelect['size'] = 3;
-			
-			return true;
-		}
-		
-		/**
-		* balise : OPTION
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_OPTION($param)
-		{
-			// on extrait tout ce qui est contenu dans l'option
-			$res = $this->parsing->getLevel($this->parse_pos);
-			$this->parse_pos = $res[0]-2;
-			$texte = $res[1];
-			$value = isset($param['value']) ? $param['value'] : 'auto_opt_'.(count($this->lstSelect)+1);
-			
-			$this->lstSelect['options'][$value] = $texte;
-			
-			return true;
-		}
-		
-		/**
-		* balise : OPTION
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_OPTION($param) { return true; }
-				
-		/**
-		* balise : SELECT
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_SELECT()
-		{
-			// position d'affichage
-			$x = $this->pdf->getX();
-			$y = $this->pdf->getY();
-			$f = 1.08*$this->style->value['font-size'];
-
-			$w = $this->style->value['width']; if (!$w) $w = 50; 
-			$h = ($f*1.07*$this->lstSelect['size'] + 1);
-			$prop = array();
-			if ($this->lstSelect['multi']) $prop['multipleSelection'] = true;
-			$this->pdf->form_Select($this->lstSelect['name'], $x, $y, $w, $h, $this->lstSelect['options'], $this->lstSelect['size']>1, $prop);
-							
-			$this->maxX = max($this->maxX, $x+$w);
-			$this->maxY = max($this->maxY, $y+$h);
- 			$this->maxH = max($this->maxH, $h);
-			$this->pdf->setX($x+$w);
-			
-			$this->style->load();
-			$this->style->FontSet();
-			
-			$this->lstSelect = array();
-			
-			return true;
-		}
-
-		/**
-		* balise : TEXTAREA
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_TEXTAREA($param)
-		{
-			// preparation du champs
-			if (!isset($param['name']))		$param['name']	= 'champs_pdf_'.(count($this->lstChamps)+1);
-			
-			$param['name'] = strtolower($param['name']);
-			
-			if (isset($this->champs[$param['name']]))
-				$this->champs[$param['name']]++;
-			else
-				$this->champs[$param['name']] = 1;
-				
-			$this->style->save();
-			$this->style->analyse('textarea', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-
-			// position d'affichage
-			$x = $this->pdf->getX();
-			$y = $this->pdf->getY();
-			$fx = 0.65*$this->style->value['font-size'];
-			$fy = 1.08*$this->style->value['font-size'];
-
-			// on extrait tout ce qui est contenu dans le textarea
-			$res = $this->parsing->getLevel($this->parse_pos);
-			$this->parse_pos = $res[0]-2;
-			$texte = $res[1];
-
-			$w = $fx*(isset($param['cols']) ? $param['cols'] : 22)+1; 
-			$h = $fy*1.07*(isset($param['rows']) ? $param['rows'] : 3)+3;
-			
-//			if ($this->style->value['width']) $w = $this->style->value['width'];
-//			if ($this->style->value['height']) $h = $this->style->value['height'];
-			
-			$prop = array();
-			$prop['value'] = $texte;
-			$prop['multiline'] = true;
-			
-			$this->pdf->form_InputText($param['name'], $x, $y, $w, $h, $prop);
-					
-			$this->maxX = max($this->maxX, $x+$w);
-			$this->maxY = max($this->maxY, $y+$h);
- 			$this->maxH = max($this->maxH, $h);
-			$this->pdf->setX($x+$w);
-					
-			return true;
-		}
-		
-		/**
-		* balise : TEXTAREA
-		* mode : FERMETURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function c_TEXTAREA()
-		{
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-						
-		/**
-		* balise : INPUT
-		* mode : OUVERTURE
-		* 
-		* @param	array	paramètres de l'élément de parsing
-		* @return	null
-		*/	
-		function o_INPUT($param)
-		{
-			// preparation du champs
-			if (!isset($param['name']))		$param['name']	= 'champs_pdf_'.(count($this->lstChamps)+1);
-			if (!isset($param['value']))	$param['value']	= '';
-			if (!isset($param['type']))		$param['type']	= 'text';
-			
-			$param['name'] = strtolower($param['name']);
-			$param['type'] = strtolower($param['type']);
-
-			if (!in_array($param['type'], array('text', 'checkbox', 'radio', 'hidden', 'submit', 'reset', 'button'))) $param['type'] = 'text';
-
-			if (isset($this->champs[$param['name']]))
-				$this->champs[$param['name']]++;
-			else
-				$this->champs[$param['name']] = 1;
-
-			$this->style->save();
-			$this->style->analyse('input', $param);
-			$this->style->setPosition($this->pdf->x, $this->pdf->y);
-			$this->style->FontSet();
-			
-			$name = $param['name'];
-		
-			// position d'affichage
-			$x = $this->pdf->getX();
-			$y = $this->pdf->getY();
-			$f = 1.08*$this->style->value['font-size'];
-			
-			switch($param['type'])
-			{
-				case 'checkbox':
-					$w = 3;
-					$h = $w;
-					if ($h<$f) $y+= ($f-$h)*0.5;
-					$this->pdf->form_InputCheckBox($name, $x, $y, $w, isset($param['checked']));
-					break;
-				
-				case 'radio':
-					$w = 3;
-					$h = $w;
-					if ($h<$f) $y+= ($f-$h)*0.5;
-					$this->pdf->form_InputRadio($name, $x, $y, $w);
-					break;
-					
-				case 'hidden':
-					$w = 0;
-					$h = 0;
-					$this->pdf->form_InputHidden($name, $param['value']);
-					break;
-					
-				case 'text':
-					$w = $this->style->value['width']; if (!$w) $w = 40; 
-					$h = $f*1.3;
-					$prop = array();
-					$prop['value'] = $param['value'];
-					$this->pdf->form_InputText($name, $x, $y, $w, $h, $prop);
-					break;
-
-				case 'submit':
-				case 'reset':
-				case 'button':
-					$action = isset($param['onclick']) ? $param['onclick'] : '';
-					$w = $this->style->value['width'];	if (!$w) $w = 40; 
-					$h = $this->style->value['height'];	if (!$h) $h = $f*1.3;
-					$prop = array();
-					$this->pdf->form_InputButton($name, $x, $y, $w, $h, $param['value'], $action, $prop);
-					break;
-					
-				default:
-					$w = 0;
-					$h = 0;
-					break;
-			}
-			
-			$this->maxX = max($this->maxX, $x+$w);
-			$this->maxY = max($this->maxY, $y+$h);
- 			$this->maxH = max($this->maxH, $h);
-			$this->pdf->setX($x+$w);
-			
-			$this->style->load();
-			$this->style->FontSet();
-			
-			return true;
-		}
-		
-		function CreateIndex($titre = 'Index', $size_title = 20, $size_bookmark = 15, $bookmark_title = true, $display_page = true)
-		{
-			$this->pdf->CreateIndex($this, $titre, $size_title, $size_bookmark, $bookmark_title, $display_page);
-		}
-		
-		function textLOAD($langue)
-		{
-			if (!preg_match('/^([a-z0-9]+)$/isU', $langue))
-			{
-				echo 'ERROR : language code <b>'.$langue.'</b> incorrect.';
-				exit;
-			}
-			
-			$file = dirname(__FILE__).'/langues/'.strtolower($langue).'.txt';
-			if (!is_file($file))
-			{
-				echo 'ERROR : language code <b>'.$langue.'</b> unknown.<br>';
-				echo 'You can create the translation file <b>'.$file.'</b> and send it to me in order to integrate it into a future version.';
-				exit;				
-			}
-			
-			$texte = array();
-			$infos = file($file);
-			foreach($infos as $val)
-			{
-				$val = trim($val);
-				$val = explode("\t", $val);
-				if (count($val)<2) continue;
-				
-				$t_k = trim($val[0]); unset($val[0]);
-				$t_v = trim(implode(' ', $val));
-				if ($t_k && $t_v) $texte[$t_k] = $t_v;
-			}
-			global $HTML2PDF_TEXTE_FILE;
-			$HTML2PDF_TEXTE_FILE = $texte;	
-		}
-		
-		function textGET($key)
-		{
-			global $HTML2PDF_TEXTE_FILE;
-			if (!isset($HTML2PDF_TEXTE_FILE[$key])) return '######';
-			
-			return $HTML2PDF_TEXTE_FILE[$key];
-		}
-		
-		function makeError($err, $file, $line, $other = null, $html = '')
-		{
-			$msg = '';
-			switch($err)
-			{
-				case 1:
-					$msg = (@HTML2PDF::textGET('err01'));
-					$msg = str_replace('[[OTHER]]', $other, $msg); 
-					break;
-					
-				case 2:
-					$msg = (@HTML2PDF::textGET('err02'));
-					$msg = str_replace('[[OTHER_0]]', $other[0], $msg); 
-					$msg = str_replace('[[OTHER_1]]', $other[1], $msg); 
-					$msg = str_replace('[[OTHER_2]]', $other[2], $msg); 
-					break;
-					
-				case 3:
-					$msg = (@HTML2PDF::textGET('err03'));
-					$msg = str_replace('[[OTHER]]', $other, $msg); 
-					break;
-					
-				case 4:
-					$msg = (@HTML2PDF::textGET('err04'));
-					$msg = str_replace('[[OTHER]]', print_r($other, true), $msg); 
-					break;
-					
-				case 5:
-					$msg = (@HTML2PDF::textGET('err05'));
-					$msg = str_replace('[[OTHER]]', print_r($other, true), $msg); 
-					break;
-					
-				case 6:
-					$msg = (@HTML2PDF::textGET('err06'));
-					$msg = str_replace('[[OTHER]]', $other, $msg); 
-					break;	
-					
-				case 7:
-					$msg = (@HTML2PDF::textGET('err07'));
-					break;	
-			}
-			
-			$Dokeosmsg = '<div style="position: relative; margin-top: 10px; margin-bottom: 10px; border-width: 1px; border-style: solid; padding: 5px; border: 1px solid #FF0000; color: #000; background-color: #FFD1D1; min-height: 30px;"><b>'.get_lang("ConversionFailled").'</b></br>'.get_lang("CommentErrorExportDocument").'</div>';
-			echo $Dokeosmsg;
-			
-			/*
-			////uncomment for debug
-			echo '<span style="color: #AA0000; font-weight: bold;">'.(@HTML2PDF::textGET('txt01')).$err.'</span><br>';
-			echo (@HTML2PDF::textGET('txt02')).' '.$file.'<br>';
-			echo (@HTML2PDF::textGET('txt03')).' '.$line.'<br>';
-			echo '<br>';
-			echo $msg;
-			echo '<br>';
-			if ($html) echo '<br>HTML : ...'.htmlentities($html).'...';
-			*/
-			exit;	
-		}
-	}
-}

+ 0 - 0
main/inc/lib/html2pdf/index.html


+ 0 - 19
main/inc/lib/html2pdf/langues/ca.txt

@@ -1,19 +0,0 @@
-err01	L'etiqueta <b>&lt;[[OTHER]]&gt;</b> encara no existeix.<br><br>Si voleu afegir-la, heu de crear els mètodes <b>o_[[OTHER]]</b> (per l'obertura) i <b>c_[[OTHER]]</b> (pel tancament) seguint el model de les etiquetes existents.<br><br>A més, si creeu nous mètodes, envieu-ho a webmaster@spipu.net per tal d'afegir-los a les següents versions d'HTML2PDF, i que tothom en pugui gaudir.
-err02	Frase de 1000 línies => massa llarga<br><b>Frase :</b> [[OTHER_0]]<br><b>Mida casella :</b> [[OTHER_1]]<br><b>Mida text :</b> [[OTHER_2]]<br>
-err03	Codi HTML no vàlid, una etiqueta té un tancament de més : <b>&lt;[[OTHER]]&gt;</b>
-err04	Codi HTML no vàlid, les etiquetes no estan tancades en l'ordre correcte.<br>Estat : <pre>[[OTHER]]</pre>
-err05	Codi HTML no vàlid, totes les etiquetes han de tenir el seu tancament.<br>Estat : <pre>[[OTHER]]</pre>
-err06	Impossible carregar la imatge <b>[[OTHER]]</b>
-err07	El contingut d'una etiqueta TD no quep en una sola pàgina
-txt01	ERROR n°
-txt02	Fitxer :
-txt03	Línia :
-pdf01	Document generat el [[date_d]]/[[date_m]]/[[date_y]]
-pdf02	Document generat a les [[date_h]]:[[date_i]]
-pdf03	Document generat el [[date_d]]/[[date_m]]/[[date_y]] a les [[date_h]]:[[date_i]]
-pdf04	Pàgina [[current]]/[[nb]]
-pdf05	Els formularis requereixen l'ús de l'Adobe Reader 9
-vue01	CAPÇALERA
-vue02	PEU DE PÀGINA
-vue03	PÀGINA
-vue04	Visualització

+ 0 - 19
main/inc/lib/html2pdf/langues/da.txt

@@ -1,19 +0,0 @@
-err01	Tag <b>&lt;[[OTHER]]&gt;</b> endnu ikke eksisterer.<br><br>Hvis du ønsker at tilføje det, skal du oprette de metoder <b>o_[[OTHER]]</b> (for åbning) og <b>c_[[OTHER]]</b> (for lukning) ved at følge den model af eksisterende tags.<br><br>Hvis du opretter disse metoder, så tøv ikke med at send mig en e-mail til webmaster@spipu.net til indsat dem i den næste version af HTML2PDF.
-err02	Sætning af 1000 lines => er for lang<br><b>sætning :</b> [[OTHER_0]]<br><b>Bredde boksen :</b> [[OTHER_1]]<br><b>Længde tekst :</b> [[OTHER_2]]<br>
-err03	HTML-kode er ugyldig, et tag er lukket for mange gange: <b>&lt;[[OTHER]]&gt;</b>
-err04	HTML-kode er ugyldig, tags er ikke afsluttet på en ordentlig måde.<br>Status : <pre>[[OTHER]]</pre>
-err05	HTML-kode er ugyldig, alle tags skal lukkes. <br>Status : <pre>[[OTHER]]</pre>
-err06	Umuligt at indlæse billedet <b>[[OTHER]]</b>
-err07	Indholdet af en TD tag ikke passer på én side
-txt01	FEJL n°
-txt02	File :
-txt03	Linje :
-pdf01	Siden oprettet d. [[date_y]]-[[date_m]]-[[date_d]]
-pdf02	Siden oprettet d. [[date_h]]:[[date_i]]
-pdf03	Siden oprettet d. [[date_y]]-[[date_m]]-[[date_d]] at [[date_h]]:[[date_i]]
-pdf04	Side [[current]]/[[nb]]
-pdf05	De formularer kræver brug af Adobe Reader 9
-vue01	HEADER
-vue02	FOOTER
-vue03	PAGE
-vue04	View

+ 0 - 19
main/inc/lib/html2pdf/langues/de.txt

@@ -1,19 +0,0 @@
-err01	Das Tag <b>&lt;[[OTHER]]&gt;</b> existiert noch nicht.<br><br>Wenn Sie es hinzufügen möchten, sollen Sie die Methoden<b>o_[[OTHER]]</b> (zu öffnen) und <b>c_[[OTHER]]</b> (zu schließen) nach dem Modell den existierenden Tags.<br><br>Wenn Sie diese Methoden außerdem aufbauen, bitte teilen Sie sie duch eine E-Mail an meine Adresse : webmaster@spipu.net, so daß sie künftig in die nächste Version von HTML2PDF erscheinen.
-err02	1000-Linien Satz => zu lang<br><b>Satz :</b> [[OTHER_0]]<br><b>Breite des Eingabefelds :</b> [[OTHER_1]]<br><b>Länge des Texts :</b> [[OTHER_2]]<br>
-err03	Falsches HTML Code, überzähliges geschloßene Tag : <b>&lt;[[OTHER]]&gt;</b>
-err04	Falsches HTML Code, die Tags sind nicht in richtiger Ordnung geschloßen.<br>Status : <pre>[[OTHER]]</pre>
-err05	Falsches HTML Code, alle Tags sollen geschloßen sein.<br>Status : <pre>[[OTHER]]</pre>
-err06	Ladung des Bilds unmöglich <b>[[OTHER]]</b>
-err07	Er Inhalt eines TD-Tag passt nicht nur auf einer Seite
-txt01	Fehler n°
-txt02	Datei :
-txt03	Linie :
-pdf01	Datei aufgebaut am [[date_d]]/[[date_m]]/[[date_y]]
-pdf02	Datei aufgebaut um [[date_h]]:[[date_m]]
-pdf03	Datei aufgebaut am [[date_d]]/[[date_m]]/[[date_y]] um [[date_h]]:[[date_i]]
-pdf04	Seite [[current]]/[[nb]]
-pdf05	Die Formulare benötigen Sie den Adobe Reader 9
-vue01	Seite-Header
-vue02	Fußzeile
-vue03	Seite
-vue04	Visualisierung

+ 0 - 19
main/inc/lib/html2pdf/langues/en.txt

@@ -1,19 +0,0 @@
-err01	The tag <b>&lt;[[OTHER]]&gt;</b> does not yet exist.<br><br>If you want to add it, you must create the methods <b>o_[[OTHER]]</b> (for opening) and <b>c_[[OTHER]]</b> (for closure) by following the model of existing tags.<br><br>If you create these methods, do not hesitate to send me an email to webmaster@spipu.net to included them in the next version of HTML2PDF.
-err02	Sentence of 1000 lines => too long<br><b>Sentence :</b> [[OTHER_0]]<br><b>Width box :</b> [[OTHER_1]]<br><b>Length text :</b> [[OTHER_2]]<br>
-err03	HTML code invalid, a tag is closed too many times: <b>&lt;[[OTHER]]&gt;</b>
-err04	HTML code invalid, the tags are not closed in an orderly fashion.<br>Status : <pre>[[OTHER]]</pre>
-err05	HTML code invalid, all tags must be closed.<br>Status : <pre>[[OTHER]]</pre>
-err06	Impossible to load the image <b>[[OTHER]]</b>
-err07	The content of a TD tag does not fit on only one page
-txt01	ERROR n°
-txt02	File :
-txt03	Line :
-pdf01	Document generated on [[date_y]]-[[date_m]]-[[date_d]]
-pdf02	Document generated at [[date_h]]:[[date_i]]
-pdf03	Document generated on [[date_y]]-[[date_m]]-[[date_d]] at [[date_h]]:[[date_i]]
-pdf04	Page [[current]]/[[nb]]
-pdf05	The forms require the use of Adobe Reader 9
-vue01	HEADER
-vue02	FOOTER
-vue03	PAGE
-vue04	View

+ 0 - 19
main/inc/lib/html2pdf/langues/es.txt

@@ -1,19 +0,0 @@
-err01	La etiqueta <b>&lt;[[OTHER]]&gt;</b> todavía no existe.<br><br>Si quiere añadirla, debe crear los métodos <b>o_[[OTHER]]</b> (para la apertura) y <b>c_[[OTHER]]</b> (para el cierre) siguiendo el modelo de las etiquetas existentes.<br><br>Si crea nuevos métodos, envíelos a webmaster@spipu.net para añadirlos a las siguientes versiones de HTML2PDF, y que todo el mundo se pueda beneficiar.
-err02	Frase de 1000 líneas => demasiado larga<br><b>Frase :</b> [[OTHER_0]]<br><b>Tamaño casilla :</b> [[OTHER_1]]<br><b>Tamaño texto :</b> [[OTHER_2]]<br>
-err03	Código HTML no válido, una etiqueta tiene un cierre de más : <b>&lt;[[OTHER]]&gt;</b>
-err04	Código HTML no válido, las etiquetas no estan cerradas en el orden correcto.<br>Estado : <pre>[[OTHER]]</pre>
-err05	Código HTML no válido, todas las etiquetas deben tener su cierre.<br>Estado : <pre>[[OTHER]]</pre>
-err06	Imposible cargar la imagen <b>[[OTHER]]</b>
-err07	El contenido de una etiqueta TD no encaja en una sola página
-txt01	ERROR n°
-txt02	Fichero :
-txt03	Línea :
-pdf01	Documento generado el [[date_d]]/[[date_m]]/[[date_y]]
-pdf02	Documento generado a las [[date_h]]:[[date_i]]
-pdf03	Documento generado el [[date_d]]/[[date_m]]/[[date_y]] a las [[date_h]]:[[date_i]]
-pdf04	Página [[current]]/[[nb]]
-pdf05	Los formularios requieren el uso de Adobe Reader 9
-vue01	ENCABEZADO
-vue02	PIE DE PÁGINA
-vue03	PÁGINA
-vue04	Visualización

+ 0 - 19
main/inc/lib/html2pdf/langues/fr.txt

@@ -1,19 +0,0 @@
-err01	La balise <b>&lt;[[OTHER]]&gt;</b> n'existe pas encore.<br><br>Si vous voulez la rajouter, vous devez créer les méthodes <b>o_[[OTHER]]</b> (pour l'ouverture) et <b>c_[[OTHER]]</b> (pour la fermeture) en suivant le modèle des balises existantes.<br><br>De plus, si vous créez ces méthodes, n'hésitez pas à en faire profiter tout le monde en m'écrivant sur webmaster@spipu.net afin qu'elles se retrouvent dans la prochaine version d'HTML2PDF.
-err02	Phrase de 1000 lignes => trop long<br><b>Phrase :</b> [[OTHER_0]]<br><b>Largeur case :</b> [[OTHER_1]]<br><b>Longueur text :</b> [[OTHER_2]]<br>
-err03	Code HTML non valide, une balise est fermée en trop : <b>&lt;[[OTHER]]&gt;</b>
-err04	Code HTML non valide, les balises ne sont pas fermées dans le bon ordre.<br>Etat : <pre>[[OTHER]]</pre>
-err05	Code HTML non valide, toutes les balises doivent être fermées.<br>Etat : <pre>[[OTHER]]</pre>
-err06	Impossible de charger l'image <b>[[OTHER]]</b>
-err07	le contenu d'une balise TD ne rentre pas sur une seule page
-txt01	ERREUR n°
-txt02	Fichier :
-txt03	Ligne :
-pdf01	Document généré le [[date_d]]/[[date_m]]/[[date_y]]
-pdf02	Document généré à [[date_h]]:[[date_i]]
-pdf03	Document généré le [[date_d]]/[[date_m]]/[[date_y]] à [[date_h]]:[[date_i]]
-pdf04	Page [[current]]/[[nb]]
-pdf05	Les formulaires nécessitent  l'utilisation de Adobe Reader 9
-vue01	HEADER
-vue02	FOOTER
-vue03	PAGE
-vue04	Restitution

+ 0 - 0
main/inc/lib/html2pdf/langues/index.html


+ 0 - 19
main/inc/lib/html2pdf/langues/it.txt

@@ -1,19 +0,0 @@
-err01	Il tag <b>&lt;[[OTHER]]&gt;</b> non esiste ancora.<br><br>Se si desidera aggiungere, è necessario creare metodi <b>o_[[OTHER]]</b> (di apertura) e <b>C_[[OTHER]]</b> (per la chiusura) secondo il modello esistente di tag.<br><br>Inoltre, se si creare questi metodi, non esitate a portare il mondo intero ha scritto su webmaster@spipu.net in modo che alla fine nella prossima versione di HTML2PDF.
-err02	Citazione di 1000 linee => troppo lungo<br><b>frase :</b> [[OTHER_0]]<br><b>casella Larghezza :</b> [[OTHER_1]]<br><b>Lunghezza testo :</b> [[OTHER_2]]<br>
-err03	HTML non valido, un tag è chiusa troppo <b>&lt;[[OTHER]]&gt;</ b>
-err04	HTML non validi, i tag non sono chiusi nel corretto ordine.<br>Stato :<pre>[[OTHER]]</pre>
-err05	HTML non valido, tutte le tag deve essere chiuso.<br>Stato :<pre>[[OTHER]]</pre>
-err06	Impossibile caricare l'immagine <b>[[OTHER]]</b>
-err07	il contenuto di un tag TD non rientra in una sola pagina
-txt01	ERRORE n°
-txt02	File :
-txt03	Linea :
-pdf01	Documento generato il [[date_d]]/[[date_m]]/[[date_y]]
-pdf02	Documento generato [[date_h]]:[[date_i]]
-pdf03	Documento generato il [[date_d]]/[[date_m]]/[[date_y]] nel [[date_h]]:[[date_i]]
-pdf04	Pagina [[current]]/[[nb]]
-pdf05	I moduli richiedono l'uso di Adobe Reader 9
-vue01	HEADER
-vue02	FOOTER
-vue03	PAGINA
-vue04	Visualization

+ 0 - 19
main/inc/lib/html2pdf/langues/nl.txt

@@ -1,19 +0,0 @@
-err01	De tag <b>&lt;[[OTHER]]&gt;</b> bestaat nog niet.<br><br>Om deze toe te voegen, gebruik de methods <b>o_[[OTHER]]</b> (om te openen) en <b>c_[[OTHER]]</b> (om te sluiten) volgens het model van de bestaande tags.<br><br>Als u deze methods maakt, stuur deze dan a.u.b. via e-mail naar webmaster@spipu.net voor opname in de volgende versie van HTML2PDF.
-err02	Zin van 1000 regels => te lang<br><b>Zin :</b> [[OTHER_0]]<br><b>Kaderbreedte :</b> [[OTHER_1]]<br><b>Tekstlengte :</b> [[OTHER_2]]<br>
-err03	Ongeldige HTML code, overvloedig afgesloten tag : <b>&lt;[[OTHER]]&gt;</b>
-err04	Ongeldige HTML code, de tags zijn niet correct afgesloten.<br>Status : <pre>[[OTHER]]</pre>
-err05	Ongeldige HTML code, alle tags dienen te zijn gesloten.<br>Status : <pre>[[OTHER]]</pre>
-err06	Kan afbeelding niet laden: <b>[[OTHER]]</b>
-err07	De inhoud van de cel (<TD>) past niet op een pagina
-txt01	Fout nr
-txt02	Bestand :
-txt03	Regel :
-pdf01	Document gemaakt op [[date_d]]-[[date_m]]-[[date_y]]
-pdf02	Document gemaakt om [[date_h]]:[[date_i]]
-pdf03	Document gemaakt op [[date_d]]-[[date_m]]-[[date_y]] om [[date_h]]:[[date_i]]
-pdf04	Pagina [[current]] van [[nb]]
-pdf05	De formulieren vereisen het gebruik van Adobe Reader 9
-vue01	Paginakop
-vue02	Paginavoet
-vue03	Pagina
-vue04	Bekijken

+ 0 - 19
main/inc/lib/html2pdf/langues/pt.txt

@@ -1,19 +0,0 @@
-err01	A tag <b>&lt;[[OTHER]]&gt;</b> ainda não existe.<br><br>Se você quer inserí-la, deve criar os métodos <b>o_[[OTHER]]</b> (para abrí-la) e <b>c_[[OTHER]]</b> (para fechá-la) seguindo o modelo das tags existentes.<br><br>Se você criar novos métodos, os envie para webmaster@spipu.net para que as próximas versões de HTML2PDF, e o restante do mundo se beneficie com isso.
-err02	Frase de 1000 linhas => muito grande<br><b>Frase :</b> [[OTHER_0]]<br><b>Tamanho do quadro :</b> [[OTHER_1]]<br><b>Tamanho do texto :</b> [[OTHER_2]]<br>
-err03	Código HTML não válido, uma tag está com fechamento sobrando : <b>&lt;[[OTHER]]&gt;</b>
-err04	Código HTML não válido, as tags não estão fechadas na ordem correta.<br>Estado : <pre>[[OTHER]]</pre>
-err05	Código HTML não válido, todas as tags devem ser fechadas.<br>Estado : <pre>[[OTHER]]</pre>
-err06	Impossível carregar imagem <b>[[OTHER]]</b>
-err07	O conteúdo de uma tag TD não se encaixa em apenas uma página
-txt01	ERRO n°
-txt02	Arquivo :
-txt03	Linha :
-pdf01	Documento generado em [[date_d]]/[[date_m]]/[[date_y]]
-pdf02	Documento generado às [[date_h]]:[[date_i]]
-pdf03	Documento generado em [[date_d]]/[[date_m]]/[[date_y]] às [[date_h]]:[[date_i]]
-pdf04	Página [[current]]/[[nb]]
-pdf05	Os formulários exigem a utilização do Adobe Reader 9
-vue01	CABEÇALHO
-vue02	RODAPÉ
-vue03	PÁGINA
-vue04	Visualização

+ 0 - 19
main/inc/lib/html2pdf/langues/tr.txt

@@ -1,19 +0,0 @@
-err01	<b>&lt;[[OTHER]]&gt;</b> etiketi bulunamadı.<br><br>Eklemek isterseniz, <b>o_[[OTHER]]</b> şeklinde açıp, <b>c_[[OTHER]]</b> şeklinde kapatabilirsiniz.<br><br> Bu şekilde etiketler üretirseniz lütfen daha sonraki HTML2PDF versiyonuna eklenmek üzere bana gönderin. ( webmaster@spipu.net ).
-err02	İçerik 1000 satırdan fazla ve gerekenden uzun <br><b>Konu :</b> [[OTHER_0]]<br><b>Genişlik :</b> [[OTHER_1]]<br><b>Yazı boyutu :</b> [[OTHER_2]]<br>
-err03	HTML kodu hatalı, etiket birden fazla defa kapatılmış: <b>&lt;[[OTHER]]&gt;</b>
-err04	HTML kodu hatalı, etiketler gereken düzen içinde kapatılmamış.<br>Durum : <pre>[[OTHER]]</pre>
-err05	HTML kodu hatalı, bütün etiketler kapatılmalı.<br>Durum : <pre>[[OTHER]]</pre>
-err06	Resim dosyası okunamıyor <b>[[OTHER]]</b>
-err07	TD içeriği bir sayfaya sığmıyor
-txt01	HATA n°
-txt02	Dosya :
-txt03	Satır :
-pdf01	Doküman üretilme tarihi [[date_y]]-[[date_m]]-[[date_d]]
-pdf02	Doküman üretilme tarihi [[date_h]]:[[date_i]]
-pdf03	Doküman üretilme tarihi [[date_y]]-[[date_m]]-[[date_d]] saati [[date_h]]:[[date_i]]
-pdf04	Sayfa [[current]]/[[nb]]
-pdf05	Adobe Reader 9 gerektirir
-vue01	DOSYA ÜSTÜ
-vue02	DOSYA ALTI
-vue03	SAYFA
-vue04	Görünüm

+ 0 - 440
main/inc/lib/html2pdf/parsingHTML.class.php

@@ -1,440 +0,0 @@
-<?php
-/**
- * Logiciel : HTML2PDF - classe ParsingHTML
- * 
- * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
- * Distribué sous la licence LGPL. 
- *
- * @author		Laurent MINGUET <webmaster@spipu.net>
- * @version		3.26 - 16/11/2009
- */
- 
-if (!defined('__CLASS_PARSINGHTML__'))
-{
-	define('__CLASS_PARSINGHTML__', true);
-	
-	class parsingHTML
-	{
-		var $html	= '';			// code HTML à parser
-		var $code	= array();		// code HTML parsé
-		var $num	= 0;			// numéro de table
-		var $level	= 0;			// niveaux de table
-		
-		/**
-		 * Constructeur
-		 *
-		 * @return	null
-		 */
-		function parsingHTML()
-		{
-			$this->num		= 0;
-			$this->level	= array($this->num);
-			$this->html		= '';
-			$this->code		= array();	
-		}
-		
-		/**
-		 * Définir le code HTML à parser
-		 *
-		 * @param	string code html
-		 * @return	null
-		 */
-		function setHTML($html)
-		{
-			$html = preg_replace('/<!--(.*)-->/isU', '', $html);
-			$this->html = $html;	
-		}
-		
-		/**
-		 * parser le code HTML
-		 *
-		 * @return	null
-		 */
-		function parse()
-		{
-			$parents = array();
-
-			// chercher les balises HTML du code
-			$tmp = array();
-			$this->searchCode($tmp);
-			
-			// identifier les balises une à une
-			$pre_in = false;
-			$pre_br = array(
-						'name' => 'br',
-						'close' => false,
-						'param' => array(
-							'style' => array(),
-							'num'	=> 0
-						)
-					);
-
-			$balises_no_closed = array('br', 'hr', 'img', 'input', 'link', 'option', 'col');
-			$todos = array();
-			foreach($tmp as $part)
-			{
-				// si c'est un texte
-				if ($part[0]=='txt')
-				{
-					// enregistrer l'action correspondante
-					if (!$pre_in)
-					{
-//						if (trim($part[1])!=='')
-//						{
-							// remplacer tous les espaces, tabulations, saufs de ligne multiples par de simples espaces
-							$part[1] = preg_replace('/([\s]+)/is', ' ', $part[1]);
-					
-							$todos[] = array(
-											'name'	=> 'write',
-											'close'	=> false,
-											'param' => array('txt' => $part[1]),
-										);
-//						}
-					}
-					else
-					{
-						$part[1] = str_replace("\r", '', $part[1]);
-						$part[1] = explode("\n", $part[1]);
-						
-						foreach($part[1] as $k => $txt)
-						{
-							$txt = str_replace("\t", '        ', $txt);
-							$txt = str_replace(' ', '&nbsp;', $txt);
-							if ($k>0) $todos[] = $pre_br;
-
-								$todos[] = array(
-											'name'	=> 'write',
-											'close'	=> false,
-											'param' => array('txt' => $txt),
-										);
-						}
-					}
-				}
-				// sinon, analyser le code
-				else
-				{
-					$res = $this->analiseCode($part[1]);
-					if ($res)
-					{
-						$res['html_pos'] = $part[2];
-						if (!in_array($res['name'], $balises_no_closed))
-						{
-							if ($res['close'])
-							{
-								if (count($parents)<1)
-									@HTML2PDF::makeError(3, __FILE__, __LINE__, $res['name'], $this->getHtmlErrorCode($res['html_pos']));
-								else if ($parents[count($parents)-1]!=$res['name'])
-									@HTML2PDF::makeError(4, __FILE__, __LINE__, $parents, $this->getHtmlErrorCode($res['html_pos']));
-								else
-									unset($parents[count($parents)-1]);
-							}
-							else
-							{
-								if ($res['autoclose'])
-								{
-									$todos[] = $res;
-									$res['params'] = array();
-									$res['close'] = true;
-								}
-								else
-									$parents[count($parents)] = $res['name'];
-														
-							}
-							if (($res['name']=='pre' || $res['name']=='code') && !$res['autoclose'])
-									$pre_in = !$res['close'];
-						}
-						
-						$todos[] = $res;
-					}
-				}	
-			}
-
-			// pour chaque action identifiée, il faut nettoyer le début et la fin des textes
-			// en fonction des balises qui l'entourent.
-			$balises_clean = array('page', 'page_header', 'page_footer', 'form',
-									'table', 'thead', 'tfoot', 'tr', 'td', 'th', 'br',
-									'div', 'hr', 'p', 'ul', 'ol', 'li',
-									'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
-									'bookmark');
-			$nb = count($todos);
-			for($k=0; $k<$nb; $k++)
-			{
-				//si c'est un texte
-				if ($todos[$k]['name']=='write')
-				{
-					// et qu'une balise spécifique le précède => on nettoye les espaces du début du texte
-					if ($k>0 && in_array($todos[$k-1]['name'], $balises_clean))
-						$todos[$k]['param']['txt'] = ltrim($todos[$k]['param']['txt']);
-
-					// et qu'une balise spécifique le suit => on nettoye les espaces de la fin du texte
-					if ($k<count($todos)-1 && in_array($todos[$k+1]['name'], $balises_clean))
-						$todos[$k]['param']['txt'] = rtrim($todos[$k]['param']['txt']);
-						
-					if (!strlen($todos[$k]['param']['txt']))
-						unset($todos[$k]);
-				}
-			}
-			if (count($parents)) @HTML2PDF::makeError(5, __FILE__, __LINE__, $parents);
-
-			// liste des actions sauvée
-			$this->code = array_values($todos);;
-		}
-		
-		/**
-		 * parser le code HTML
-		 *
-		 * @param	&array	tableau de retour des données
-		 * @return	null
-		 */
-		function searchCode(&$tmp)
-		{
-			// séparer les balises du texte
-			$tmp = array();
-			$reg = '/(<[^>]+>)|([^<]+)+/isU';
-
-			// pour chaque élément trouvé :
-			$str = '';
-			$offset = 0;
-			while(preg_match($reg, $this->html, $parse, PREG_OFFSET_CAPTURE, $offset))
-			{
-				// si une balise a été détectée
-				if ($parse[1][0])
-				{
-					// sauvegarde du texte précédent si il existe
-					if ($str!=='')	$tmp[] = array('txt',$str);
-		
-					// sauvegarde de la balise
-					$tmp[] = array('code',trim($parse[1][0]), $offset);
-					
-					// initialisation du texte suivant
-					$str = ''; 	
-				}
-				else
-				{
-					// ajout du texte à la fin de celui qui est déjà détecté
-					$str.= $parse[2][0];
-				}
-				// Update offset to the end of the match
-				$offset = $parse[0][1] + strlen($parse[0][0]);
-				unset($parse);
-			}
-			// si un texte est présent à la fin, on l'enregistre
-			if ($str!='') $tmp[] = array('txt',$str);
-			unset($str);
-		}
-		
-		/**
-		 * analyse une balise HTML
-		 *
-		 * @param	string	code HTML à identifier
-		 * @return	array	action correspondante
-		 */
-		function analiseCode($code)
-		{
-			// nom de la balise et ouverture ou fermeture
-			$balise = '<([\/]{0,1})([_a-z0-9]+)([\/>\s]+)';
-			preg_match('/'.$balise.'/isU', $code, $match);
-			$close	= ($match[1]=='/' ? true : false);
-			$autoclose = preg_match('/\/>$/isU', $code);
-			$name	= strtolower($match[2]);
-			
-			// paramètres obligatoires en fonction du nom de la balise
-			$param	= array();
-			$param['style'] = '';
-			if ($name=='img')	{ $param['alt'] = '';	$param['src'] = ''; }
-			if ($name=='a')		{ $param['href'] = '';	}
-			
-			// lecture des paramétres du type nom=valeur
-			$prop = '([a-zA-Z0-9_]+)=([^"\'\s>]+)';
-			preg_match_all('/'.$prop.'/is', $code, $match);
-			for($k=0; $k<count($match[0]); $k++)
-				$param[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
-
-			// lecture des paramétres du type nom="valeur"
-			$prop = '([a-zA-Z0-9_]+)=["]([^"]*)["]';
-			preg_match_all('/'.$prop.'/is', $code, $match);
-			for($k=0; $k<count($match[0]); $k++)
-				$param[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
-
-			// lecture des paramétres du type nom='valeur'
-			$prop = "([a-zA-Z0-9_]+)=[']([^']*)[']";
-			preg_match_all('/'.$prop.'/is', $code, $match);
-			for($k=0; $k<count($match[0]); $k++)
-				$param[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
-		
-			// mise en conformité en style de chaque paramètre
-			$color	= "#000000";
-			$border	= null;
-			foreach($param as $key => $val)
-			{
-				$key = strtolower($key);
-				switch($key)
-				{
-					case 'width':
-						unset($param[$key]);
-						$param['style'] = 'width: '.$val.'px; '.$param['style'];
-						break;	
-
-					case 'align':
-						if ($name!=='table')
-						{
-							unset($param[$key]);
-							$param['style'] = 'text-align: '.$val.'; '.$param['style'];
-						}
-						break;
-						
-					case 'valign':
-						unset($param[$key]);
-						$param['style'] = 'vertical-align: '.$val.'; '.$param['style'];
-						break;
-						
-					case 'height':
-						unset($param[$key]);
-						$param['style'] = 'height: '.$val.'px; '.$param['style'];	
-						break;	
-
-					case 'bgcolor':
-						unset($param[$key]);
-						$param['style'] = 'background: '.$val.'; '.$param['style'];					
-						break;	
-
-					case 'bordercolor':
-						unset($param[$key]);
-						$color = $val;
-						break;	
-
-					case 'border':
-						unset($param[$key]);
-						if (preg_match('/^[0-9]$/isU', $val)) $val = $val.'px';
-						$border = $val;
-						break;
-					
-					case 'cellpadding':
-					case 'cellspacing':
-						if (preg_match('/^([0-9]+)$/isU', $val)) $param[$key] = $val.'px';
-						break;
-						
-					case 'colspan':
-					case 'rowspan':
-						$val = preg_replace('/[^0-9]/isU', '', $val);
-						if (!$val) $val = 1;
-						$param[$key] = $val;
-						break;
-				}
-			}
-			if ($border!==null)
-			{
-				if ($border)	$param['style'] = 'border: solid '.$border.' '.$color.'; '.$param['style'];
-				else			$param['style'] = 'border: none'.$param['style']; 
-			}
-			
-			// lecture des styles - décomposition
-			$styles = explode(';', $param['style']);
-			$param['style'] = array();
-			foreach($styles as $style)
-			{
-				$tmp = explode(':', $style);
-				if (count($tmp)>1)
-				{
-					$cod = $tmp[0]; unset($tmp[0]); $tmp = implode(':', $tmp); 
-					$param['style'][trim(strtolower($cod))] = preg_replace('/[\s]+/isU', ' ', trim($tmp));
-				}
-			}
-			
-			// détermination du niveau de table pour les ouverture, avec ajout d'un level
-			if (in_array($name, array('ul', 'ol', 'table')) && !$close)
-			{
-				$this->num++;
-				$this->level[count($this->level)] = $this->num;
-			} 
-			
-			// attribution du niveau de table où se trouve l'élément
-			if (!isset($param['num'])) $param['num'] = $this->level[count($this->level)-1];
-
-			// pour les fins de table : suppression d'un level
-			if (in_array($name, array('ul', 'ol', 'table')) && $close)
-			{
-				unset($this->level[count($this->level)-1]);			
-			} 
-
-			// retour de l'action identifiée
-			return array('name' => $name, 'close' => $close ? 1 : 0, 'autoclose' => $autoclose, 'param' => $param);
-		}
-		
-		// récupérer un niveau complet d'HTML entre une ouverture de balise et la fermeture correspondante
-		function getLevel($k)
-		{
-			// si le code n'existe pas : fin
-			if (!isset($this->code[$k])) return '';
-			
-			// quelle balise faudra-t-il détecter
-			$detect = $this->code[$k]['name'];
-			
-			$level = 0;		// niveau de profondeur
-			$end = false;	// etat de fin de recherche
-			$code = '';		// code extrait
-			
-			// tant que c'est pas fini, on boucle
-			while (!$end)
-			{
-				// action courante
-				$row = $this->code[$k];
-				
-				// si write => on ajoute le texte
-				if ($row['name']=='write')
-				{
-					$code.= $row['param']['txt'];	
-				}
-				// sinon, c'est une balise html
-				else
-				{
-					$not = false; // indicateur de non prise en compte de la balise courante
-					
-					// si c'est la balise que l'on cherche
-					if ($row['name']==$detect)
-					{
-						if ($level==0) { $not = true; }					// si on est à la premiere balise : on l'ignore
-						$level+= ($row['close'] ? -1 : 1);				// modification du niveau en cours en fonction de l'ouvertre / fermeture
-						if ($level==0) { $not = true; $end = true; }	// si on est au niveau 0 : on a fini
-					}
-					
-					// si on doit prendre en compte la balise courante
-					if (!$not)
-					{
-						// ecriture du code HTML de la balise
-						$code.= '<'.($row['close'] ? '/' : '').$row['name'];
-						foreach($row['param'] as $key => $val)
-						{
-							if ($key=='style')
-							{
-								$tmp = '';
-								if (isset($val['text-align'])) unset($val['text-align']);
-								foreach($val as $ks => $vs) $tmp.= $ks.':'.$vs.'; ';
-								if (trim($tmp)) $code.= ' '.$key.'="'.$tmp.'"';
-							}
-							else
-							{
-								$code.= ' '.$key.'="'.$val.'"';
-							}	
-						}
-						$code.= '>';
-					}
-				}
-				
-				// on continue tant qu'il y a du code à analyser...
-				if (isset($this->code[$k+1]))
-					$k++;
-				else
-					$end = true;	
-			}
-			
-			// retourne la position finale et le code HTML extrait
-			return array($k, $code);
-		}
-		
-		function getHtmlErrorCode($pos)
-		{
-			return substr($this->html, $pos-30, 70);
-		}
-	}
-}

+ 0 - 47
main/inc/lib/html2pdf/qrcode/qrcode.class.php

@@ -1,47 +0,0 @@
-<?php
-/*
- * ATTENTION : 
- * Vous devez télécharger la librairie "QR-code generator >=0.97" (sous licence LGPL)
- * a cette adresse : http://prgm.spipu.net/php_qrcode
- * et mettre tout son contenu dans ce repertoire (qrcode)
- * en remplacant également ce fichier (qrcode.class.php)
- * 
- * WARNING: 
- * You have to download the librairy "QR-code generator >=0.97" (under LGPL licence)
- * at this url : http://prgm.spipu.net/php_qrcode
- * and to put all his content in this folder (qrcode)
- * and to replace also this file (qrcode.class.php)
- */
-
-if (!defined('__CLASS_QRCODE__'))
-{
-	define('__CLASS_QRCODE__', true);
-	
-	class QRcode
-	{
-		public function __construct($value, $level='L')
-		{
-			echo '
-<pre>
-	<b>ATTENTION :</b> 
-		Vous devez télécharger la librairie "QR-code generator >=0.97" (sous licence LGPL)
- 		a cette adresse : <a href="http://prgm.spipu.net/php_qrcode" target="_blank">http://prgm.spipu.net/php_qrcode</a>
- 		et mettre tout son contenu dans ce repertoire : '.dirname(__FILE__).'
- 		en remplacant également ce fichier : '.basename(__FILE__).'
- 		
- 	<b>WARNING:</b> 
- 		You have to download the librairy "QR-code generator >=0.97" (under LGPL licence)
- 		at this url : <a href="http://prgm.spipu.net/php_qrcode" target="_blank">http://prgm.spipu.net/php_qrcode</a>
- 		and to put all his contents in this folder '.dirname(__FILE__).'
- 		and to replace also this file : '.basename(__FILE__).'
- </pre>';
-			exit;
-		}
-
-		public function getQrSize() { return 0; }
-		public function disableBorder() { }
-		public function displayFPDF(&$fpdf, $x, $y, $s, $background=array(255,255,255), $color=array(0,0,0)) { return true; }
-		public function displayHTML() { return true; }
-		public function displayPNG($s=4, $background=array(255,255,255), $color=array(0,0,0), $filename = null, $quality = 0) { return true; }
-	}
-}

+ 0 - 1536
main/inc/lib/html2pdf/styleHTML.class.php

@@ -1,1536 +0,0 @@
-<?php
-/**
- * Logiciel : HTML2PDF - classe styleHTML
- * 
- * Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY 
- * Distribué sous la licence LGPL. 
- *
- * @author		Laurent MINGUET <webmaster@spipu.net>
- * @version		3.26 - 16/11/2009
- */
- 
-if (!defined('__CLASS_STYLEHTML__'))
-{
-	define('__CLASS_STYLEHTML__', true);
-	
-	class styleHTML
-	{
-		var $css		= array();		// tableau des CSS
-		var $css_keys	= array();		// tableau des clefs CSS, pour l'ordre d'execution
-		var $value		= array();		// valeurs actuelles
-		var $table		= array();		// tableau d'empilement pour historisation des niveaux
-		var $pdf		= null;			// référence au PDF parent
-		var $htmlColor	= array();		// liste des couleurs HTML
-		var $onlyLeft	= false;		// indique si on est dans un sous HTML et qu'on bloque ŕ gauche
-		var $defaultFont = null;		// fonte par défaut si la fonte demandée n'existe pas
-		
-		/**
-		 * Constructeur
-		 *
-		 * @param	&pdf		référence ŕ l'objet HTML2PDF parent
-		 * @return	null
-		 */
-		function styleHTML(&$pdf)
-		{
-			$this->init();		// initialisation
-			$this->pdf = &$pdf;
-		}
-			
-		/**
-		* définit la fonte par défaut si aucun fonte n'est spécifiée, ou si la fonte demandée n'existe pas
-		*
-		* @param	string	nom de la fonte par defaut. si null : Arial pour fonte non spécifiée, et erreur pour fonte non existante 
-		* @return	string	nom de l'ancienne fonte par defaut
-		*/
-		function setDefaultFont($default = null)
-		{
-			$old = $this->defaultFont;
-			$this->defaultFont = $default;
-			if ($default) $this->value['font-family'] = $default;
-			return $old;
-		}
-		
- 		/**
-		 * Initialisation du style
-		 *
-		 * @return	null
-		 */
-		function init()
-		{
-			$color = array();
-			$color['AliceBlue']			= '#F0F8FF';
-			$color['AntiqueWhite']		= '#FAEBD7';
-			$color['Aqua']				= '#00FFFF';
-			$color['Aquamarine']		= '#7FFFD4';
-			$color['Azure']				= '#F0FFFF';
-			$color['Beige']				= '#F5F5DC';
-			$color['Bisque']			= '#FFE4C4';
-			$color['Black']				= '#000000';
-			$color['BlanchedAlmond']	= '#FFEBCD';
-			$color['Blue']				= '#0000FF';
-			$color['BlueViolet']		= '#8A2BE2';
-			$color['Brown']				= '#A52A2A';
-			$color['BurlyWood']			= '#DEB887';
-			$color['CadetBlue']			= '#5F9EA0';
-			$color['Chartreuse']		= '#7FFF00';
-			$color['Chocolate']			= '#D2691E';
-			$color['Coral']				= '#FF7F50';
-			$color['CornflowerBlue']	= '#6495ED';
-			$color['Cornsilk']			= '#FFF8DC';
-			$color['Crimson']			= '#DC143C';
-			$color['Cyan']				= '#00FFFF';
-			$color['DarkBlue']			= '#00008B';
-			$color['DarkCyan']			= '#008B8B';
-			$color['DarkGoldenRod']		= '#B8860B';
-			$color['DarkGray']			= '#A9A9A9';
-			$color['DarkGrey']			= '#A9A9A9';
-			$color['DarkGreen']			= '#006400';
-			$color['DarkKhaki']			= '#BDB76B';
-			$color['DarkMagenta']		= '#8B008B';
-			$color['DarkOliveGreen']	= '#556B2F';
-			$color['Darkorange']		= '#FF8C00';
-			$color['DarkOrchid']		= '#9932CC';
-			$color['DarkRed']			= '#8B0000';
-			$color['DarkSalmon']		= '#E9967A';
-			$color['DarkSeaGreen']		= '#8FBC8F';
-			$color['DarkSlateBlue']		= '#483D8B';
-			$color['DarkSlateGray']		= '#2F4F4F';
-			$color['DarkSlateGrey']		= '#2F4F4F';
-			$color['DarkTurquoise']		= '#00CED1';
-			$color['DarkViolet']		= '#9400D3';
-			$color['DeepPink']			= '#FF1493';
-			$color['DeepSkyBlue']		= '#00BFFF';
-			$color['DimGray']			= '#696969';
-			$color['DimGrey']			= '#696969';
-			$color['DodgerBlue']		= '#1E90FF';
-			$color['FireBrick']			= '#B22222';
-			$color['FloralWhite']		= '#FFFAF0';
-			$color['ForestGreen']		= '#228B22';
-			$color['Fuchsia']			= '#FF00FF';
-			$color['Gainsboro']			= '#DCDCDC';
-			$color['GhostWhite']		= '#F8F8FF';
-			$color['Gold']				= '#FFD700';
-			$color['GoldenRod']			= '#DAA520';
-			$color['Gray']				= '#808080';
-			$color['Grey']				= '#808080';
-			$color['Green']				= '#008000';
-			$color['GreenYellow']		= '#ADFF2F';
-			$color['HoneyDew']			= '#F0FFF0';
-			$color['HotPink']			= '#FF69B4';
-			$color['IndianRed']			= '#CD5C5C';
-			$color['Indigo']			= '#4B0082';
-			$color['Ivory']				= '#FFFFF0';
-			$color['Khaki']				= '#F0E68C';
-			$color['Lavender']			= '#E6E6FA';
-			$color['LavenderBlush']		= '#FFF0F5';
-			$color['LawnGreen']			= '#7CFC00';
-			$color['LemonChiffon']		= '#FFFACD';
-			$color['LightBlue']			= '#ADD8E6';
-			$color['LightCoral']		= '#F08080';
-			$color['LightCyan']			= '#E0FFFF';
-			$color['LightGoldenRodYellow']	= '#FAFAD2';
-			$color['LightGray']			= '#D3D3D3';
-			$color['LightGrey']			= '#D3D3D3';
-			$color['LightGreen']		= '#90EE90';
-			$color['LightPink']			= '#FFB6C1';
-			$color['LightSalmon']		= '#FFA07A';
-			$color['LightSeaGreen']		= '#20B2AA';
-			$color['LightSkyBlue']		= '#87CEFA';
-			$color['LightSlateGray']	= '#778899';
-			$color['LightSlateGrey']	= '#778899';
-			$color['LightSteelBlue']	= '#B0C4DE';
-			$color['LightYellow']		= '#FFFFE0';
-			$color['Lime']				= '#00FF00';
-			$color['LimeGreen']			= '#32CD32';
-			$color['Linen']				= '#FAF0E6';
-			$color['Magenta']			= '#FF00FF';
-			$color['Maroon']			= '#800000';
-			$color['MediumAquaMarine']	= '#66CDAA';
-			$color['MediumBlue']		= '#0000CD';
-			$color['MediumOrchid']		= '#BA55D3';
-			$color['MediumPurple']		= '#9370D8';
-			$color['MediumSeaGreen']	= '#3CB371';
-			$color['MediumSlateBlue']	= '#7B68EE';
-			$color['MediumSpringGreen']	= '#00FA9A';
-			$color['MediumTurquoise']	= '#48D1CC';
-			$color['MediumVioletRed']	= '#C71585';
-			$color['MidnightBlue']		= '#191970';
-			$color['MintCream']			= '#F5FFFA';
-			$color['MistyRose']			= '#FFE4E1';
-			$color['Moccasin']			= '#FFE4B5';
-			$color['NavajoWhite']		= '#FFDEAD';
-			$color['Navy']				= '#000080';
-			$color['OldLace']			= '#FDF5E6';
-			$color['Olive']				= '#808000';
-			$color['OliveDrab']			= '#6B8E23';
-			$color['Orange']			= '#FFA500';
-			$color['OrangeRed']			= '#FF4500';
-			$color['Orchid']			= '#DA70D6';
-			$color['PaleGoldenRod']		= '#EEE8AA';
-			$color['PaleGreen']			= '#98FB98';
-			$color['PaleTurquoise']		= '#AFEEEE';
-			$color['PaleVioletRed']		= '#D87093';
-			$color['PapayaWhip']		= '#FFEFD5';
-			$color['PeachPuff']			= '#FFDAB9';
-			$color['Peru']				= '#CD853F';
-			$color['Pink']				= '#FFC0CB';
-			$color['Plum']				= '#DDA0DD';
-			$color['PowderBlue']		= '#B0E0E6';
-			$color['Purple']			= '#800080';
-			$color['Red']				= '#FF0000';
-			$color['RosyBrown']			= '#BC8F8F';
-			$color['RoyalBlue']			= '#4169E1';
-			$color['SaddleBrown']		= '#8B4513';
-			$color['Salmon']			= '#FA8072';
-			$color['SandyBrown']		= '#F4A460';
-			$color['SeaGreen']			= '#2E8B57';
-			$color['SeaShell']			= '#FFF5EE';
-			$color['Sienna']			= '#A0522D';
-			$color['Silver']			= '#C0C0C0';
-			$color['SkyBlue']			= '#87CEEB';
-			$color['SlateBlue']			= '#6A5ACD';
-			$color['SlateGray']			= '#708090';
-			$color['SlateGrey']			= '#708090';
-			$color['Snow']				= '#FFFAFA';
-			$color['SpringGreen']		= '#00FF7F';
-			$color['SteelBlue']			= '#4682B4';
-			$color['Tan']				= '#D2B48C';
-			$color['Teal']				= '#008080';
-			$color['Thistle']			= '#D8BFD8';
-			$color['Tomato']			= '#FF6347';
-			$color['Turquoise']			= '#40E0D0';
-			$color['Violet']			= '#EE82EE';
-			$color['Wheat']				= '#F5DEB3';
-			$color['White']				= '#FFFFFF';
-			$color['WhiteSmoke']		= '#F5F5F5';
-			$color['Yellow']			= '#FFFF00';
-			$color['YellowGreen']		= '#9ACD32';
-			
-			$this->htmlColor = array();
-			foreach($color as $key => $val) $this->htmlColor[strtolower($key)] = $val;			
-			unset($color);
-			
-			$this->table = array();
-			
-			$this->value = array();
-			$this->initStyle();
-			
-			// initialisation des styles sans héritages
-			$this->resetStyle();
-		}
-		
-		function initStyle()
-		{
-	 		$this->value['id_balise']			= 'body';		// balise
-			$this->value['id_name']				= null;			// name
-			$this->value['id_id']				= null;			// id
-			$this->value['id_class']			= null;			// class
-			$this->value['id_lst']				= array('*');	// lst de dependance
-			$this->value['mini-size']			= 1.;			// rapport de taille	spécifique aux sup, sub
-			$this->value['mini-decal']			= 0;			// rapport de position	spécifique aux sup, sub
-			$this->value['font-family']			= 'Arial';
-			$this->value['font-bold']			= false;
-			$this->value['font-italic']			= false;
-			$this->value['font-underline']		= false;
-			$this->value['font-overline']		= false;
-			$this->value['font-linethrough']	= false;
-			$this->value['text-transform']		= 'none';
-			$this->value['font-size']			= $this->ConvertToMM('10pt');
-			$this->value['text-indent']			= 0;
-			$this->value['text-align']			= 'left';
-			$this->value['vertical-align']		= 'middle';
-			$this->value['line-height']			= 'normal';
-
-			$this->value['position']			= null;
-			$this->value['x']					= null;
-			$this->value['y']					= null;
-			$this->value['width']				= 0;
-			$this->value['height']				= 0;
-			$this->value['top']					= null;
-			$this->value['right']				= null;
-			$this->value['bottom']				= null;
-			$this->value['left']				= null;
-			$this->value['float']				= null;
-			$this->value['display']				= null;
-			$this->value['rotate']				= null;
-			$this->value['overflow']			= 'visible';
-			
-			$this->value['color']				= array(0, 0, 0);
-			$this->value['background']			= array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
-			$this->value['border']				= array();
-			$this->value['padding']				= array();
-			$this->value['margin']				= array();
-			$this->value['margin-auto']			= false;
-
-			$this->value['list-style-type']		= '';
-			$this->value['list-style-image']	= '';
-
-			$this->value['xc']					= null;
-			$this->value['yc']					= null;
-		}
-		
-		/**
-		 * Initialisation des styles sans héritages
-		 *
-		 * @param	string	balise HTML
-		 * @return	null
-		 */
-		function resetStyle($balise = '')
-		{
-			$collapse = isset($this->value['border']['collapse']) ? $this->value['border']['collapse'] : false;
-			if (!in_array($balise, array('tr', 'td', 'th'))) $collapse = false;
-			
-			$this->value['position']			= null;
-			$this->value['x']					= null;
-			$this->value['y']					= null;
-			$this->value['width']				= 0;
-			$this->value['height']				= 0;
-			$this->value['top']					= null;
-			$this->value['right']				= null;
-			$this->value['bottom']				= null;
-			$this->value['left']				= null;
-			$this->value['float']				= null;
-			$this->value['display']				= null;
-			$this->value['rotate']				= null;
-			$this->value['overflow']			= 'visible';
-			$this->value['background']			= array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
-			$this->value['border']	= array(
-										't' => $this->readBorder('none'),
-										'r' => $this->readBorder('none'),
-										'b' => $this->readBorder('none'),
-										'l' => $this->readBorder('none'),
-										'radius' => array(0, 0),
-										'collapse' => $collapse,
-									);
-
-			if (!in_array($balise, array('h1', 'h2', 'h3', 'h4', 'h5', 'h6')))
-			$this->value['margin']	= array(
-									't' => 0,
-									'r' => 0,
-									'b' => 0,
-									'l' => 0
-								);
-			$this->value['margin-auto'] = false;
-			
-			if (in_array($balise, array('div')))
-				$this->value['vertical-align']	 = 'top';
-
-			if (in_array($balise, array('ul', 'li')))
-			{
-				$this->value['list-style-type']		= '';
-				$this->value['list-style-image']	= '';
-			}
-
-			if (!in_array($balise, array('tr', 'td')))
-			{
-				$this->value['padding']	= array(
-										't' => 0,
-										'r' => 0,
-										'b' => 0,
-										'l' => 0
-									);
-			}
-			else
-			{
-				$this->value['padding']	= array(
-										't' => $this->ConvertToMM('1px'),
-										'r' => $this->ConvertToMM('1px'),
-										'b' => $this->ConvertToMM('1px'),
-										'l' => $this->ConvertToMM('1px')
-									);
-			}
-			
-			if ($balise=='hr')
-			{
-				$this->value['border']	= array(
-										't' => $this->readBorder('solid 1px #000000'),
-										'r' => $this->readBorder('solid 1px #000000'),
-										'b' => $this->readBorder('solid 1px #000000'),
-										'l' => $this->readBorder('solid 1px #000000'),
-										'radius' => array(0, 0),
-										'collapse' => false,
-									);
-				$this->ConvertBackground('#FFFFFF', $this->value['background']);
-			}
-
-			$this->value['xc']					= null;
-			$this->value['yc']					= null;
-		}
-		
-		/**
-		 * Initialisation de la font PDF
-		 *
-		 * @return	null
-		 */
-		function FontSet()
-		{
-			$family = strtolower($this->value['font-family']);
-			$b = ($this->value['font-bold']			? 'B' : '');
-			$i = ($this->value['font-italic']		? 'I' : '');
-			$u = ($this->value['font-underline']	? 'U' : '');
-
-			if ($this->defaultFont)
-			{
-				$style = $b.$i;
-				if($family=='arial')
-					$family='helvetica';
-				elseif($family=='symbol' || $family=='zapfdingbats')
-					$style='';
-					
-				$fontkey = $family.$style;
-				if (!isset($this->pdf->fonts[$fontkey]))
-					if (!isset($this->pdf->CoreFonts[$fontkey]))
-						$family = $this->defaultFont;
-			}
-					
-			// taille en mm, ŕ ramener en pt
-			$size = $this->value['font-size'];
-			$size = 72 * $size / 25.4;
-			
-			$this->pdf->setOverline($this->value['font-overline']);
-			$this->pdf->setLinethrough($this->value['font-linethrough']);
-			
-			// application de la fonte 
-			$this->pdf->SetFont($family, $b.$i.$u, $this->value['mini-size']*$size);
-			$this->pdf->setMyTextColor($this->value['color']);
-			if ($this->value['background']['color'])
-				$this->pdf->setMyFillColor($this->value['background']['color']);
-			else
-				$this->pdf->setMyFillColor(1.);				
-		}
-
- 		/**
-		 * Monter d'un niveau dans l'historisation
-		 *
-		 * @return	null
-		 */		
-		function save()
-		{
-			$this->table[count($this->table)] = $this->value;
-		}
-		
- 		/**
-		 * Descendre d'un niveau dans l'historisation
-		 *
-		 * @return	null
-		 */		
-		function load()
-		{
-			if (count($this->table))
-			{
-				$this->value = $this->table[count($this->table)-1];
-				unset($this->table[count($this->table)-1]);
-			}
-		}
-
-		function restorePosition(&$current_x, &$current_y)
-		{
-			if ($this->value['y']==$current_y) $current_y = $this->value['yc'];
-		}
-		
-		function setPosition(&$current_x, &$current_y)
-		{
-			$this->value['xc'] = $current_x;
-			$this->value['yc'] = $current_y;
-			
-			if ($this->value['position']=='relative' || $this->value['position']=='absolute')
-			{
-				if ($this->value['right']!==null)
-				{
-					$x = $this->getLastWidth(true) - $this->value['right'] - $this->value['width'];
-					if ($this->value['margin']['r']) $x-= $this->value['margin']['r'];
-				} 
-				else
-				{
-					$x = $this->value['left'];
-					if ($this->value['margin']['l']) $x+= $this->value['margin']['l'];
-				}
-				
-				if ($this->value['bottom']!==null)
-				{
-					$y = $this->getLastHeight(true) - $this->value['bottom'] - $this->value['height'];
-					if ($this->value['margin']['b']) $y-= $this->value['margin']['b'];
-				} 	
-				else
-				{
-					$y = $this->value['top'];
-					if ($this->value['margin']['t']) $y+= $this->value['margin']['t'];
-				}
-								
-				if ($this->value['position']=='relative')
-				{
-					$this->value['x'] = $current_x + $x;
-					$this->value['y'] = $current_y + $y;
-				}
-				else
-				{
-					$this->value['x'] = $this->getLastAbsoluteX()+$x;
-					$this->value['y'] = $this->getLastAbsoluteY()+$y;					
-				}
-			}
-			else
-			{
-				$this->value['x'] = $current_x;
-				$this->value['y'] = $current_y;	
-				if ($this->value['margin']['l'])	$this->value['x']+= $this->value['margin']['l'];
-				if ($this->value['margin']['t'])	$this->value['y']+= $this->value['margin']['t'];
-			}
-			
-			$current_x = $this->value['x'];
-			$current_y = $this->value['y'];
-		}
-
- 		/**
-		 * Analyse un tableau de style provenant du parseurHTML
-		 *
-		 * @param	string	nom de la balise
-		 * @param	array	tableau de style
-		 * @return	null
-		 */			
-		function analyse($balise, &$param)
-		{
-			// preparation
-			$balise = strtolower($balise);
-			$id		= isset($param['id'])		? strtolower(trim($param['id']))	: null; if (!$id)	$id		= null;
-			$name	= isset($param['name'])		? strtolower(trim($param['name']))	: null; if (!$name)	$name	= null;
-
-			// lecture de la propriete classe
-			$class = array();
-			$tmp	= isset($param['class'])	? preg_replace('/[\s]+/', ' ', strtolower($param['class']))	: '';
-			$tmp = explode(' ', $tmp);
-			foreach($tmp as $k => $v)
-			{
-				$v = trim($v);
-				if ($v) $class[] = $v;
-			}
-
-			// identification de la balise et des styles direct qui pourraient lui ętre appliqués
-			$this->value['id_balise']	= $balise;
-			$this->value['id_name']		= $name;
-			$this->value['id_id']		= $id;
-			$this->value['id_class']	= $class;
-			$this->value['id_lst']		= array();
-			$this->value['id_lst'][] = '*';
-			$this->value['id_lst'][] = $balise;
-			if (count($class))
-			{
-				foreach($class as $v)
-				{ 
-					$this->value['id_lst'][] = '*.'.$v;
-					$this->value['id_lst'][] = '.'.$v;
-					$this->value['id_lst'][] = $balise.'.'.$v;
-				}
-			}
-			if ($id)
-			{
-				$this->value['id_lst'][] = '*#'.$id;
-				$this->value['id_lst'][] = '#'.$id;
-				$this->value['id_lst'][] = $balise.'#'.$id;
-			}
-			
-			// style CSS
-			$styles = $this->getFromCSS();
-
-			// on ajoute le style propre ŕ la balise
-			$styles = array_merge($styles, $param['style']);
-			if (isset($param['allwidth']) && !isset($styles['width'])) $styles['width'] = '100%';
-
-			// mise ŕ zero des styles non hérités
-			$this->resetStyle($balise);
-					
-			// interpreration des nouvelles valeurs
-			$correct_width = false;
-			$no_width = true;
-
-			foreach($styles as $nom => $val)
-			{
-				switch($nom)
-				{
-					case 'font-family':
-						$val = explode(',', $val);
-						$val = trim($val[0]);
-
-						if ($val) $this->value['font-family'] = $val;
-						break;
-						
-					case 'font-weight':
-						$this->value['font-bold'] = ($val=='bold');
-						break;
-					
-					case 'font-style':
-						$this->value['font-italic'] = ($val=='italic');
-						break;
-					
-					case 'text-decoration':
-						$val = explode(' ', $val);
-						$this->value['font-underline']		= (in_array('underline',	$val));
-						$this->value['font-overline']		= (in_array('overline',		$val));
-						$this->value['font-linethrough']	= (in_array('line-through',	$val));
-						break;
-					
-					case 'text-indent':
-						$this->value['text-indent']			= $this->ConvertToMM($val);
-						break;
-					
-					case 'text-transform':
-						if (!in_array($val, array('none', 'capitalize', 'uppercase', 'lowercase'))) $val = 'none';
-						$this->value['text-transform']		= $val;
-						break;
-						
-					case 'font-size':
-						$val = $this->ConvertToMM($val, $this->value['font-size']);
-						if ($val) $this->value['font-size'] = $val;
-						break;
-					
-					case 'color':
-						$res = null;
-						$this->value['color'] = $this->ConvertToColor($val, $res);
-						
-						if ($balise=='hr')
-						{
-							$this->value['border']['l']['color'] = $this->value['color'];
-							$this->value['border']['t']['color'] = $this->value['color'];
-							$this->value['border']['r']['color'] = $this->value['color'];
-							$this->value['border']['b']['color'] = $this->value['color'];
-						}
-						break;
-					
-					case 'text-align':
-						$this->value['text-align'] = $val;
-						break;
-						
-					case 'vertical-align':
-						$this->value['vertical-align'] = $val;
-						break;
-					
-					case 'width':
-						$this->value['width'] = $this->ConvertToMM($val, $this->getLastWidth());
-						if ($this->value['width'] && substr($val, -1)=='%') $correct_width=true;
-						$no_width = false;
-						break;
-					
-					case 'height':
-						$this->value['height'] = $this->ConvertToMM($val, $this->getLastHeight());
-						break;
-				
-					case 'line-height':
-						if (preg_match('/^[0-9\.]+$/isU', $val)) $val = floor($val*100).'%';
-						$this->value['line-height'] = $val;
-						break;
-						
-					case 'rotate':
-						if (!in_array($val, array(0, -90, 90, 180, 270, -180, -270))) $val = null;
-						if ($val<0) $val+= 360;
-						$this->value['rotate'] = $val;
-						break;
-						
-					case 'overflow':
-						if (!in_array($val, array('visible', 'hidden'))) $val = 'visible';
-						$this->value['overflow'] = $val;
-						break;
-						
-					case 'padding':
-						$val = explode(' ', $val);
-						foreach($val as $k => $v)
-						{
-							$v = trim($v);
-							if ($v!='') $val[$k] = $v;
-							else	unset($val[$k]);
-						}
-						$val = array_values($val);
-						if (count($val)!=4)
-						{
-							$val = $this->ConvertToMM($val[0], 0);
-							$this->value['padding']['t'] = $val;
-							$this->value['padding']['r'] = $val;
-							$this->value['padding']['b'] = $val;
-							$this->value['padding']['l'] = $val;
-						}
-						else
-						{
-							$this->value['padding']['t'] = $this->ConvertToMM($val[0], 0);
-							$this->value['padding']['r'] = $this->ConvertToMM($val[1], 0);
-							$this->value['padding']['b'] = $this->ConvertToMM($val[2], 0);
-							$this->value['padding']['l'] = $this->ConvertToMM($val[3], 0);							
-						}
-						break;
-						
-					case 'padding-top':
-						$this->value['padding']['t'] = $this->ConvertToMM($val, 0);
-						break;
-
-					case 'padding-right':
-						$this->value['padding']['r'] = $this->ConvertToMM($val, 0);
-						break;
-
-					case 'padding-bottom':
-						$this->value['padding']['b'] = $this->ConvertToMM($val, 0);
-						break;
-
-					case 'padding-left':
-						$this->value['padding']['l'] = $this->ConvertToMM($val, 0);
-						break;
-												
-					case 'margin':
-						if ($val=='auto')
-						{
-							$this->value['margin-auto'] = true;
-							break;	
-						}
-						$val = explode(' ', $val);
-						foreach($val as $k => $v)
-						{
-							$v = trim($v);
-							if ($v!='') $val[$k] = $v;
-							else	unset($val[$k]);
-						}
-						$val = array_values($val);
-						if (count($val)!=4)
-						{
-							$val = $this->ConvertToMM($val[0], 0);
-							$this->value['margin']['t'] = $val;
-							$this->value['margin']['r'] = $val;
-							$this->value['margin']['b'] = $val;
-							$this->value['margin']['l'] = $val;
-						}
-						else
-						{
-							$this->value['margin']['t'] = $this->ConvertToMM($val[0], 0);
-							$this->value['margin']['r'] = $this->ConvertToMM($val[1], 0);
-							$this->value['margin']['b'] = $this->ConvertToMM($val[2], 0);
-							$this->value['margin']['l'] = $this->ConvertToMM($val[3], 0);							
-						}
-						break;
-						
-					case 'margin-top':
-						$this->value['margin']['t'] = $this->ConvertToMM($val, 0);
-						break;
-
-					case 'margin-right':
-						$this->value['margin']['r'] = $this->ConvertToMM($val, 0);
-						break;
-
-					case 'margin-bottom':
-						$this->value['margin']['b'] = $this->ConvertToMM($val, 0);
-						break;
-
-					case 'margin-left':
-						$this->value['margin']['l'] = $this->ConvertToMM($val, 0);
-						break;
-	
-					case 'border':
-						$val = $this->readBorder($val);
-						$this->value['border']['t'] = $val;
-						$this->value['border']['r'] = $val;
-						$this->value['border']['b'] = $val;
-						$this->value['border']['l'] = $val;
-						break;
-						
-					case 'border-style':
-						$val = explode(' ', $val);
-						foreach($val as $val_k => $val_v)
-							if (!in_array($val_v, array('solid', 'dotted', 'dashed')))
-								$val[$val_k] = null; 
-						$this->duplicateBorder($val);
-						
-						if ($val[0]) $this->value['border']['t']['type'] = $val[0];
-						if ($val[1]) $this->value['border']['r']['type'] = $val[1];
-						if ($val[2]) $this->value['border']['b']['type'] = $val[2];
-						if ($val[3]) $this->value['border']['l']['type'] = $val[3];
-						break;
-
-					case 'border-top-style':
-						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
-							$this->value['border']['t']['type'] = $val;
-						break;
-
-					case 'border-right-style':
-						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
-							$this->value['border']['r']['type'] = $val;
-						break;
-
-					case 'border-bottom-style':
-						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
-							$this->value['border']['b']['type'] = $val;
-						break;
-
-					case 'border-left-style':
-						if (in_array($val, array('solid', 'dotted', 'dashed'))) 
-							$this->value['border']['l']['type'] = $val;
-						break;
-
-					case 'border-color':
-						$res = false;
-						$val = preg_replace('/,[\s]+/', ',', $val); 
-						$val = explode(' ', $val);
-
-						foreach($val as $val_k => $val_v)
-						{
-								$val[$val_k] = $this->ConvertToColor($val_v, $res);
-								if (!$res) $val[$val_k] = null;
-						}
-						$this->duplicateBorder($val);
-
-						if (is_array($val[0])) $this->value['border']['t']['color'] = $val[0];
-						if (is_array($val[1])) $this->value['border']['r']['color'] = $val[1];
-						if (is_array($val[2])) $this->value['border']['b']['color'] = $val[2];
-						if (is_array($val[3])) $this->value['border']['l']['color'] = $val[3];
-						
-						break;
-
-					case 'border-top-color':
-						$res = false;
-						$val = $this->ConvertToColor($val, $res); 
-						if ($res) $this->value['border']['t']['color'] = $val;
-						break;
-
-					case 'border-right-color':
-						$res = false;
-						$val = $this->ConvertToColor($val, $res); 
-						if ($res) $this->value['border']['r']['color'] = $val;
-						break;
-
-					case 'border-bottom-color':
-						$res = false;
-						$val = $this->ConvertToColor($val, $res); 
-						if ($res) $this->value['border']['b']['color'] = $val;
-						break;
-
-					case 'border-left-color':
-						$res = false;
-						$val = $this->ConvertToColor($val, $res); 
-						if ($res) $this->value['border']['l']['color'] = $val;
-						break;
-						
-					case 'border-width':
-						$val = explode(' ', $val);
-						foreach($val as $val_k => $val_v)
-						{
-								$val[$val_k] = $this->ConvertToMM($val_v, 0);
-						}
-						$this->duplicateBorder($val);
-						
-						if ($val[0]) $this->value['border']['t']['width'] = $val[0];
-						if ($val[1]) $this->value['border']['r']['width'] = $val[1];
-						if ($val[2]) $this->value['border']['b']['width'] = $val[2];
-						if ($val[3]) $this->value['border']['l']['width'] = $val[3];
-						break;
-
-					case 'border-top-width':
-						$val = $this->ConvertToMM($val, 0);; 
-						if ($val) $this->value['border']['t']['width'] = $val;
-						break;
-
-					case 'border-right-width':
-						$val = $this->ConvertToMM($val, 0);; 
-						if ($val) $this->value['border']['r']['width'] = $val;
-						break;
-
-					case 'border-bottom-width':
-						$val = $this->ConvertToMM($val, 0);; 
-						if ($val) $this->value['border']['b']['width'] = $val;
-						break;
-
-					case 'border-left-width':
-						$val = $this->ConvertToMM($val, 0);; 
-						if ($val) $this->value['border']['l']['width'] = $val;
-						break;
-											
-					case 'border-collapse':
-						if ($balise=='table') $this->value['border']['collapse'] = ($val=='collapse');
-						break;
-						
-					case 'border-radius':
-						// nettoyage des valeurs
-						$val = explode(' ', $val);
-						foreach($val as $k => $v)
-						{
-							$v = trim($v);
-							if ($v)
-							{
-								$v = $this->ConvertToMM($v, 0);
-								if ($v) $val[$k] = $v;
-								else	unset($val[$k]);
-							}
-							else	unset($val[$k]);	
-						}
-						$val = array_values($val);
-						
-						if (!isset($val[1]) && isset($val[0])) $val[1] = $val[0];
-						if (count($val)==2)
-							$this->value['border']['radius'] = array($val[0], $val[1]);
-
-						break;
-						
-					case 'border-top':
-						$this->value['border']['t'] = $this->readBorder($val);
-						break;
-
-					case 'border-right':
-						$this->value['border']['r'] = $this->readBorder($val);
-						break;
-
-					case 'border-bottom':
-						$this->value['border']['b'] = $this->readBorder($val);
-						break;
-
-					case 'border-left':
-						$this->value['border']['l'] = $this->readBorder($val);
-						break;
-					
-					case 'background-color':
-						$this->value['background']['color'] = $this->ConvertBackgroundColor($val);
-						break;
-
-					case 'background-image':
-						$this->value['background']['image'] = $this->ConvertBackgroundImage($val);
-						break;
-
-					case 'background-position':
-						$res = null;
-						$this->value['background']['position'] = $this->ConvertBackgroundPosition($val, $res);
-						break;
-
-					case 'background-repeat':
-						$this->value['background']['repeat'] = $this->ConvertBackgroundRepeat($val);
-						break;
-
-					case 'background':
-						$this->ConvertBackground($val, $this->value['background']);
-						break;
-
-					case 'position':
-						if ($val=='absolute')		$this->value['position'] = 'absolute';
-						else if ($val=='relative')	$this->value['position'] = 'relative';
-						else						$this->value['position'] = null;
-						break;
-
-					case 'float':
-						if ($val=='left')			$this->value['float'] = 'left';
-						else if ($val=='right')		$this->value['float'] = 'right';
-						else						$this->value['float'] = null;
-						break;
-
-					case 'display':
-						if ($val=='inline')			$this->value['display'] = 'inline';
-						else if ($val=='block')		$this->value['display'] = 'block';
-						else if ($val=='none')		$this->value['display'] = 'none';
-						else						$this->value['display'] = null;
-						break;
-											
-					case 'top':
-					case 'bottom':
-					case 'left':
-					case 'right':
-						$this->value[$nom] = $val;
-						break;
-
-					case 'list-style':
-					case 'list-style-type':
-					case 'list-style-image':
-						if ($nom=='list-style') $nom = 'list-style-type';
-						$this->value[$nom] = $val;
-						break;
-				
-					default:
-						break;	
-				}				
-			}
-
-			if ($this->onlyLeft) $this->value['text-align'] = 'left';
-			
-			// correction de la largeur pour correspondre au modčle de boite quick
-			if ($no_width && in_array($balise, array('div')) && $this->value['position']!='absolute')
-			{
-				$this->value['width'] = $this->getLastWidth();
-				$this->value['width']-= $this->value['margin']['l'] + $this->value['margin']['r'];
-			}
-			else
-			{
-				if ($correct_width)
-				{
-					if (!in_array($balise, array('table', 'div', 'hr')))
-					{
-						$this->value['width']-= $this->value['padding']['l'] + $this->value['padding']['r'];
-						$this->value['width']-= $this->value['border']['l']['width'] + $this->value['border']['r']['width'];
-					}
-					if (in_array($balise, array('th', 'td')))
-					{
-						$this->value['width']-= $this->ConvertToMM(isset($param['cellspacing']) ? $param['cellspacing'] : '2px');
-					}
-					if ($this->value['width']<0) $this->value['width']=0;
-				}
-				else
-				{
-					if ($this->value['width'])
-					{
-						if ($this->value['border']['l']['width'])	$this->value['width']	+= $this->value['border']['l']['width'];
-						if ($this->value['border']['r']['width'])	$this->value['width']	+= $this->value['border']['r']['width'];			
-						if ($this->value['padding']['l'])			$this->value['width']	+= $this->value['padding']['l'];
-						if ($this->value['padding']['r'])			$this->value['width']	+= $this->value['padding']['r'];
-					}		
-				}
-			}
-			if ($this->value['height'])
-			{
-				if ($this->value['border']['b']['width']) { $this->value['height']	+= $this->value['border']['b']['width']; }
-				if ($this->value['border']['t']['width']) { $this->value['height']	+= $this->value['border']['t']['width']; }
-				if ($this->value['padding']['b'])			$this->value['height']	+= $this->value['padding']['b'];
-				if ($this->value['padding']['t'])			$this->value['height']	+= $this->value['padding']['t'];		
-			}			
-			
-			if ($this->value['top']!=null)		$this->value['top']		= $this->ConvertToMM($this->value['top'],		$this->getLastHeight(true));
-			if ($this->value['bottom']!=null)	$this->value['bottom']	= $this->ConvertToMM($this->value['bottom'],	$this->getLastHeight(true));
-			if ($this->value['left']!=null)		$this->value['left']	= $this->ConvertToMM($this->value['left'],		$this->getLastWidth(true));
-			if ($this->value['right']!=null)	$this->value['right']	= $this->ConvertToMM($this->value['right'],		$this->getLastWidth(true));
-			
-			if ($this->value['top'] && $this->value['bottom'] && $this->value['height'])	$this->value['bottom']	= null;
-			if ($this->value['left'] && $this->value['right'] && $this->value['width'])		$this->value['right']	= null;
-		}
-		
- 		/**
-		 * Récupération de la hauteur de ligne courante
-		 *
-		 * @return	float	hauteur en mm
-		 */
-		function getLineHeight()
-		{
-			$val = $this->value['line-height'];
-			if ($val=='normal') $val = '108%';
-			return $this->ConvertToMM($val, $this->value['font-size']);
-		}
-		
- 		/**
-		 * Récupération de la largeur de l'objet parent
-		 *
-		 * @return	float	largeur
-		 */
-		function getLastWidth($mode = false)
-		{
-			for($k=count($this->table); $k>0; $k--)
-			{
-				if ($this->table[$k-1]['width'])
-				{
-					$w = $this->table[$k-1]['width'];
-					if ($mode)
-					{
-						$w+= $this->table[$k-1]['border']['l']['width'] + $this->table[$k-1]['padding']['l']+0.02;
-						$w+= $this->table[$k-1]['border']['r']['width'] + $this->table[$k-1]['padding']['r']+0.02;
-					}
-					return $w;
-				}
-			}
-			return $this->pdf->w - $this->pdf->lMargin - $this->pdf->rMargin;
-		}
-
- 		/**
-		 * Récupération de la hauteur de l'objet parent
-		 *
-		 * @return	float	hauteur
-		 */
-		function getLastHeight($mode = false)
-		{
-			for($k=count($this->table); $k>0; $k--)
-			{
-				if ($this->table[$k-1]['height'])
-				{
-					$h = $this->table[$k-1]['height'];
-					if ($mode)
-					{
-						$h+= $this->table[$k-1]['border']['t']['width'] + $this->table[$k-1]['padding']['t']+0.02;
-						$h+= $this->table[$k-1]['border']['b']['width'] + $this->table[$k-1]['padding']['b']+0.02;
-					}
-					return $h;
-				}
-			}
-			return $this->pdf->h - $this->pdf->tMargin - $this->pdf->bMargin;
-		}
-		
-		function getFloat()
-		{
-			if ($this->value['float']=='left')	return 'left';
-			if ($this->value['float']=='right')	return 'right';
-			return null;
-		}
-		
-		function getParentBalise()
-		{
-			$nb = count($this->table);
-			if ($nb>0)
-				return $this->table[$nb-1]['id_balise'];
-			return null;
-		}
-		
-		function getLastAbsoluteX()
-		{
-			for($k=count($this->table); $k>0; $k--)
-			{
-				if ($this->table[$k-1]['x'] && $this->table[$k-1]['position']) return $this->table[$k-1]['x'];
-			}
-			return $this->pdf->lMargin;
-		}
-		
-		function getLastAbsoluteY()
-		{
-			for($k=count($this->table); $k>0; $k--)
-			{
-				if ($this->table[$k-1]['y'] && $this->table[$k-1]['position']) return $this->table[$k-1]['y'];
-			}
-			return $this->pdf->tMargin;
-		}
-		
-		/**
-		 * Récupération des propriétés CSS de la balise en cours
-		 *
-		 * @return	array()		tableau des propriétés CSS
-		 */		
-		function getFromCSS()
-		{
-			$styles	= array();	// style ŕ appliquer
-			$getit	= array();	// styles ŕ récuperer
-
-			// identification des styles direct, et ceux des parents
-			$lst = array();
-			$lst[] = $this->value['id_lst'];
-			for($i=count($this->table)-1; $i>=0; $i--) $lst[] = $this->table[$i]['id_lst'];
-
-			// identification des styles ŕ récuperer
-			foreach($this->css_keys as $key => $num)
-				if ($this->getReccursiveStyle($key, $lst))
-					$getit[$key] = $num;
-
-			// si des styles sont ŕ recuperer
-			if (count($getit))
-			{
-				// on les récupčre, mais dans l'odre de définition, afin de garder les priorités
-				asort($getit);
-				foreach($getit as $key => $val) $styles = array_merge($styles, $this->css[$key]);				
-			}
-			
-			return $styles;	
-		}
-		
-		/**
-		 * Identification des styles ŕ récuperer, en fonction de la balise et de ses parents
-		 *
-		 * @param	string		clef CSS ŕ analyser
-		 * @param	array()		tableau des styles direct, et ceux des parents
-		 * @param	string		prochaine etape
-		 * @return	boolean		clef autorisée ou non
-		 */
-		function getReccursiveStyle($key, $lst, $next = null)
-		{
-			// si propchaine etape, on construit les valeurs
-			if ($next!==null)
-			{
-				if ($next) $key = trim(substr($key, 0, -strlen($next))); // on elčve cette etape
-				unset($lst[0]);
-				if (!count($lst)) return false; // pas d'etape possible
-				$lst = array_values($lst);
-			}
-			
-			// pour chaque style direct possible de l'etape en cours
-			foreach($lst[0] as $nom)
-			{
-				if ($key==$nom) return true; // si la clef conrrespond => ok
-				if (substr($key, -strlen(' '.$nom))==' '.$nom && $this->getReccursiveStyle($key, $lst, $nom)) return true; // si la clef est la fin, on analyse ce qui précčde
-			}
-
-			// si on est pas ŕ la premiere etape, on doit analyse toutes les sous etapes			
-			if ($next!==null && $this->getReccursiveStyle($key, $lst, '')) return true;
-		
-			// aucun style trouvé	
-			return false;	
-		}
-		
-		/**
-		 * Analyse d'une propriété Border
-		 *
-		 * @param	string		propriété border
-		 * @return	array()		propriété décodée
-		 */
-		function readBorder($val)
-		{
-			$none = array('type' => 'none', 'width' => 0, 'color' => array(0, 0, 0));
-
-			// valeurs par défault
-			$type	= 'solid';
-			$width	= $this->ConvertToMM('1pt');
-			$color	= array(0, 0, 0);
-
-			// nettoyage des valeurs
-			$val = explode(' ', $val);
-			foreach($val as $k => $v)
-			{
-				$v = trim($v);
-				if ($v)	$val[$k] = $v;
-				else	unset($val[$k]);	
-			}
-			$val = array_values($val);
-			// identification des valeurs
-			$res = null;
-			foreach($val as $key)
-			{
-				if ($key=='none' || $key=='hidden') return $none;
-				
-				if ($this->ConvertToMM($key)!==null)							$width = $this->ConvertToMM($key);	
-				else if (in_array($key, array('solid', 'dotted', 'dashed')))	$type = $key;	
-				else
-				{
-					$tmp = $this->ConvertToColor($key, $res);
-					if ($res) $color = $tmp;
-				}
-			}
-			if (!$width) return $none;
-			return array('type' => $type, 'width' => $width, 'color' => $color);
-		}
-		
-		function duplicateBorder(&$val)
-		{
-			if (count($val)==1)
-			{
-				$val[1] = $val[0];
-				$val[2] = $val[0];
-				$val[3] = $val[0];
-			}
-			else if (count($val)==2)
-			{
-				$val[2] = $val[0];
-				$val[3] = $val[1];
-			}
-			else if (count($val)==3)
-			{
-				$val[3] = $val[1];
-			}
-		}
-
-		function ConvertBackground($stl, &$res)
-		{
-			// Image
-			$text = '/url\(([^)]*)\)/isU';
-			if (preg_match($text, $stl, $match))
-			{
-				$res['image'] = $this->ConvertBackgroundImage($match[0]);				
-				$stl = preg_replace($text, '', $stl);
-				$stl = preg_replace('/[\s]+/', ' ', $stl);
-			}
-			
-			// protection des espaces 
-			$stl = preg_replace('/,[\s]+/', ',', $stl); 
-			$lst = explode(' ', $stl);
-			
-			$pos = '';
-			foreach($lst as $val)
-			{
-				$ok = false;
-				$color = $this->ConvertToColor($val, $ok);
-				
-				if ($ok)
-				{
-					$res['color'] = $color;
-				}
-				else if ($val=='transparent')
-				{
-					$res['color'] = null;
-				}
-				else
-				{
-					$repeat = $this->ConvertBackgroundRepeat($val);
-					if ($repeat)
-					{
-						$res['repeat'] = $repeat;
-					}
-					else
-					{
-						$pos.= ($pos ? ' ' : '').$val;
-					}
-				}
-			}
-			if ($pos)
-			{
-				$pos = $this->ConvertBackgroundPosition($pos, $ok);
-				if ($ok) $res['position'] = $pos;
-			}
-		}
-
-		function ConvertBackgroundColor($val)
-		{
-			$res = null;
-			if ($val=='transparent')	return null;
-			else						return $this->ConvertToColor($val, $res);
-		}
-
-		function ConvertBackgroundImage($val)
-		{
-			if ($val=='none')
-				return null;
-			else if (preg_match('/^url\(([^)]*)\)$/isU', $val, $match))
-				return $match[1];
-			else
-				return null;
-		}
-		
-		function ConvertBackgroundPosition($val, &$res)
-		{
-			$val = explode(' ', $val);
-			if (count($val)<2)
-			{
-				if (!$val[0]) return null;
-				$val[1] = 'center';
-			}
-			if (count($val)>2) return null;
-
-			$x = 0;
-			$y = 0;
-			$res = true;
-			
-			if ($val[0]=='left')		$x = '0%';
-			else if ($val[0]=='center')	$x = '50%';
-			else if ($val[0]=='right')	$x = '100%';
-			else if ($val[0]=='top')	$y = '0%';
-			else if ($val[0]=='bottom')	$y = '100%';
-			else if (preg_match('/^[-]?[0-9\.]+%$/isU',	$val[0])) $x = $val[0];
-			else if ($this->ConvertToMM($val[0])) $x = $this->ConvertToMM($val[0]);
-			else $res = false;
-			
-			if ($val[1]=='left')		$x = '0%';
-			else if ($val[1]=='right')	$x = '100%';
-			else if ($val[1]=='top')	$y = '0%';
-			else if ($val[1]=='center')	$y = '50%';
-			else if ($val[1]=='bottom')	$y = '100%';
-			else if (preg_match('/^[-]?[0-9\.]+%$/isU',	$val[1])) $y = $val[1];
-			else if ($this->ConvertToMM($val[1])) $y = $this->ConvertToMM($val[1]);
-			else $res = false;
-
-			$val[0] = $x;
-			$val[1] = $y;
-			
-			return $val;	
-		}
-		
- 		function ConvertBackgroundRepeat($val)
-		{
-			switch($val)
-			{
-				case 'repeat':
-					return array(true, true);
-				case 'repeat-x':
-					return array(true, false);
-				case 'repeat-y':
-					return array(false, true);
-				case 'no-repeat':
-					return array(false, false);
-			}
-			return null;
-		}
- 		/**
-		 * Convertir une longueur en mm
-		 *
-		 * @param	string			longueur, avec unité, ŕ convertir
-		 * @param	float			longueur du parent
-		 * @return	float			longueur exprimée en mm
-		 */	
-		function ConvertToMM($val, $old=0.)
-		{
-			$val = trim($val);
-			if (preg_match('/^[0-9\.\-]+$/isU', $val))			$val.= 'px';
-			if (preg_match('/^[0-9\.\-]+px$/isU', $val))		$val = 25.4/96. * str_replace('px', '', $val);
-			else if (preg_match('/^[0-9\.\-]+pt$/isU', $val))	$val = 25.4/72. * str_replace('pt', '', $val);
-			else if (preg_match('/^[0-9\.\-]+in$/isU', $val))	$val = 25.4 * str_replace('in', '', $val);
-			else if (preg_match('/^[0-9\.\-]+mm$/isU', $val))	$val = 1.*str_replace('mm', '', $val);
-			else if (preg_match('/^[0-9\.\-]+%$/isU', $val))	$val = 1.*$old*str_replace('%', '', $val)/100.;
-			else												$val = null;	
-
-			return $val;
-		}
-		
- 		/**
-		 * Décomposition d'un code couleur HTML
-		 *
-		 * @param	string			couleur au format CSS
-		 * @return	array(r, v, b)	couleur exprimé par ses comporantes R, V, B, de 0 ŕ 255.
-		 */	
-		function ConvertToColor($val, &$res)
-		{
-			$val = trim($val);
-			$res = true;
-				
-			if (strtolower($val)=='transparent') return array(null, null, null);
-			if (isset($this->htmlColor[strtolower($val)])) $val = $this->htmlColor[strtolower($val)];
-			
-			if (preg_match('/^#[0-9A-Fa-f]{6}$/isU', $val))
-			{
-				$r = floatVal(hexdec(substr($val, 1, 2)))/255.;
-				$v = floatVal(hexdec(substr($val, 3, 2)))/255.;
-				$b = floatVal(hexdec(substr($val, 5, 2)))/255.;
-				$col = array($r, $v, $b);
-			}
-			elseif (preg_match('/^#[0-9A-F]{3}$/isU', $val))
-			{
-				$r = floatVal(hexdec(substr($val, 1, 1).substr($val, 1, 1)))/255.;
-				$v = floatVal(hexdec(substr($val, 2, 1).substr($val, 2, 1)))/255.;
-				$b = floatVal(hexdec(substr($val, 3, 1).substr($val, 3, 1)))/255.;
-				$col = array($r, $v, $b);
-			}
-			elseif (preg_match('/rgb\([\s]*([0-9%\.]+)[\s]*,[\s]*([0-9%\.]+)[\s]*,[\s]*([0-9%\.]+)[\s]*\)/isU', $val, $match))
-			{
-				$r = $this->ConvertSubColor($match[1]);
-				$v = $this->ConvertSubColor($match[2]);
-				$b = $this->ConvertSubColor($match[3]);
-				$col = array($r, $v, $b);
-			}
-			elseif (preg_match('/cmyk\([\s]*([0-9%\.]+)[\s]*,[\s]*([0-9%\.]+)[\s]*,[\s]*([0-9%\.]+)[\s]*,[\s]*([0-9%\.]+)[\s]*\)/isU', $val, $match))
-			{
-				$c = $this->ConvertSubColor($match[1]);
-				$m = $this->ConvertSubColor($match[2]);
-				$y = $this->ConvertSubColor($match[3]);
-				$k = $this->ConvertSubColor($match[4]);
-				$col = array($c, $m, $y, $k);
-			}
-			else
-			{
-				$col = array(0., 0., 0.);
-				$res = false;
-			}
-			
-			return $col;	
-		}
-		
-		function ConvertSubColor($c)
-		{
-			if (substr($c, -1)=='%') $c = floatVal(substr($c, 0, -1))/100.;
-			else
-			{
-				$c = floatVal($c);
-				if ($c>1) $c = $c/255.;
-			}
-			return $c;
-		}
-		
-		/**
-		 * Analyser une feuille de style
-		 *
-		 * @param	string			code CSS
-		 * @return	null
-		 */	
-		function analyseStyle(&$code)
-		{
-			// on remplace tous les espaces, tab, \r, \n, par des espaces uniques
-			$code = preg_replace('/[\s]+/', ' ', $code);
-
-			// on enlčve les commentaires
-			$code = preg_replace('/\/\*.*?\*\//s', '', $code);
-
-			// on analyse chaque style
-			preg_match_all('/([^{}]+){([^}]*)}/isU', $code, $match);
-			for($k=0; $k<count($match[0]); $k++)
-			{
-				// noms
-				$noms	= strtolower(trim($match[1][$k]));
-				
-				// style, séparé par des; => on remplie le tableau correspondant
-				$styles	= trim($match[2][$k]);
-				$styles = explode(';', $styles);
-				$stl = array();
-				foreach($styles as $style)
-				{
-					$tmp = explode(':', $style);
-					if (count($tmp)>1)
-					{
-						$cod = $tmp[0]; unset($tmp[0]); $tmp = implode(':', $tmp); 
-						$stl[trim(strtolower($cod))] = trim($tmp);
-					}
-				}
-				
-				// décomposition des noms par les ,
-				$noms = explode(',', $noms);
-				foreach($noms as $nom)
-				{
-					$nom = trim($nom);
-					// Si il a une fonction spécifique, comme :hover => on zap
-					if (strpos($nom, ':')!==false) continue;
-					if (!isset($this->css[$nom]))
-						$this->css[$nom] = $stl;
-					else
-						$this->css[$nom] = array_merge($this->css[$nom], $stl);
-					
-				}
-			}
-			
-			$this->css_keys = array_flip(array_keys($this->css));
-		}
-		
-		/**
-		 * Extraction des feuille de style du code HTML
-		 *
-		 * @param	string			code HTML
-		 * @return	null
-		 */	
-		function readStyle(&$html)
-		{
-			$style = ' ';
-
-			// extraction des balises link, et suppression de celles-ci dans le code HTML
-			preg_match_all('/<link([^>]*)>/isU', $html, $match);
-			$html = preg_replace('/<link[^>]*>/isU',	'', $html);			
-			$html = preg_replace('/<\/link[^>]*>/isU',	'', $html);
-			
-			// analyse de chaque balise
-			foreach($match[1] as $code)
-			{
-				$tmp = array();
-				// lecture des paramétres du type nom=valeur
-				$prop = '([a-zA-Z0-9_]+)=([^"\'\s>]+)';
-				preg_match_all('/'.$prop.'/is', $code, $match);
-				for($k=0; $k<count($match[0]); $k++)
-					$tmp[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
-	
-				// lecture des paramétres du type nom="valeur"
-				$prop = '([a-zA-Z0-9_]+)=["]([^"]*)["]';
-				preg_match_all('/'.$prop.'/is', $code, $match);
-				for($k=0; $k<count($match[0]); $k++)
-					$tmp[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
-	
-				// lecture des paramétres du type nom='valeur'
-				$prop = "([a-zA-Z0-9_]+)=[']([^']*)[']";
-				preg_match_all('/'.$prop.'/is', $code, $match);
-				for($k=0; $k<count($match[0]); $k++)
-					$tmp[trim(strtolower($match[1][$k]))] = trim($match[2][$k]);
-
-				// si de type text/css => on garde
-				if (isset($tmp['type']) && strtolower($tmp['type'])=='text/css' && isset($tmp['href']))
-				{
-					$content = @file_get_contents($tmp['href']);
-					$url = $tmp['href'];
-					if (strpos($url, 'http://')!==false)
-					{
-						$url = str_replace('http://', '', $url);
-						$url = explode('/', $url);
-						$url_main = 'http://'.$url[0].'/';
-						$url_self = $url; unset($url_self[count($url_self)-1]); $url_self = 'http://'.implode('/', $url_self).'/';
-
-						$content = preg_replace('/url\(([^\\\\][^)]*)\)/isU', 'url('.$url_self.'$1)', $content);
-						$content = preg_replace('/url\((\\\\[^)]*)\)/isU', 'url('.$url_main.'$1)', $content);
-					}
-
-					$style.= $content."\n";
-				}
-			}
-
-
-			// extraction des balises style, et suppression de celles-ci dans le code HTML
-			preg_match_all('/<style[^>]*>(.*)<\/style[^>]*>/isU', $html, $match);
-			$html = preg_replace('/<style[^>]*>(.*)<\/style[^>]*>/isU', '', $html);			
-
-			// analyse de chaque balise
-			foreach($match[1] as $code)
-			{
-				$code = str_replace('<!--', '', $code);
-				$code = str_replace('-->', '', $code);
-				$style.= $code."\n";
-			} 
-			
-			$this->analyseStyle($style);
-		}
-	}
-}

+ 428 - 19
main/inc/lib/mpdf/CHANGELOG.txt

@@ -1,3 +1,412 @@
+===========================
+mPDF v4.6   (07/06/2010)
+===========================
+
+Improvements
+------------
+Added Windows BMP image support [4.5.011]
+
+Improved support and bug fixes for SVG images [4.5.010]
+- improved recognition of lineargradients/radialgradients referenced by xlink:href
+- does not die if empty text string
+- support for many text properties as style="" as well as currently as attributes (bold, fill etc)
+- if using MB font, was respecting "Times" and "Courier" from the SVG file but using as ANSI not utf-8
+
+JPG image files with "Exif" header now recognised and supported [4.5.001]
+
+
+Configuration variable added (config.php):
+----------------------------
+$this->tableMinSizePriority [4.5.006]
+Default value false
+Use: When page-break-inside:avoid set on table but cannot fit on full page without
+exceeding autosize; setting this value to true will force respsect for the autosize,
+and disable the page-break-inside:avoid
+
+
+Bug fixes
+---------
+- Apache crashing when writing complex heading with multiple ToC entries + index entry [4.5.015]
+- Error message appeared after printing in Adobe Reader [4.5.014]
+- Error in Text wrapping in table cells [4.5.012]
+- Incorrect error message(!) using embedded font subsets if .dat fontfile not found (".char.dat") [4.5.008]
+- Errors when using page-break-inside:avoid, with text elements and images incorrectly moved [4.5.007]
+- Triggering unnecessary page break, or entering endless loop when using table with page-break-inside:avoid [4.5.004, 4.5.005]
+- Utility "makefonts" moving newly created files to wrong directory [4.5.003]
+- Error using embedded font subsets when magic_quotes_runtime set On [4.5.002]
+
+
+Files changed
+-------------
+mpdf.php
+config.php
+makefonts/makefonts.php
+class/t1asm.php
+class/svg.php
+
+
+===========================
+mPDF v4.5   (21/04/2010)
+===========================
+
+New Features
+------------
+The main change in 4.5 is the improved class for importing SVG images. (See details below)
+
+Font files
+----------
+Some bugs in the "makefonts" utility caused some errors in the files produced for embedding font subsets.
+Surprisingly these are not easily detectable (I have yet to find one!).
+All the font files used for embedding font subsets (the .dat and .dat.php files in /unifont/ folder)
+have been re-generated. Download them if you are having problems with any fonts - otherwise, you probably
+don't need to bother.
+
+Minor Enhancements
+------------------
+If keepColumns = true (i.e. disable readjustment of column length), mPDF will now reproduce
+table header/footer rows in each column [4.4.015]
+
+A number of changes to improve processing time [4.4.012]
+[Thanks to carlholmberg http://mpdf.bpm1.com/forum/comments.php?DiscussionID=274&page=1#Item_3]
+
+JPG files with header marked as "progressive DCT-based JPEG" are now supported [4.4.004]
+
+Configurable variable (config.php) $dpi can be set to vary size interpreted from "px" values in HTML/CSS
+NB Recommended that $dpi should always be set the same as $img_dpi
+
+Support added for "ex" as a size value (approximates "ex" as half of font height)
+
+Configurable variable (config.php) $watermarkImgAlphaBlend will determine how watermark images
+will blend with underlying objects.
+
+
+Bug fixes
+---------
+- Make-fonts utility : makefonts/makefonts.php [4.4.016]
+	(All font files have been updated)
+- Table header of only one column width - not printing right border [4.4.014]
+- WMF and SVG images not rotating correctly to 90 or -90 degrees [4.4.013]
+- Using templates, error if imported doc contains templates itself [4.4.001]
+
+
+Updated Files
+-------------
+mpdf.php
+config.php
+classes/svg.php
+makefonts/makefonts.php
+ALL subset font files (/unifont/ .dat and .dat.php files), and all garuda and norasi files
+
+New files
+---------
+None
+
+New config variables
+--------------------
+$this->watermarkImgAlphaBlend
+$this->dpi
+
+BACKWARD COMPATIBILITY
+----------------------
+All but one changes in mPDF 4.5 are fully backwards compatible.
+The configurable variable $this->watermarkImgBehind was introduced in v4.4 and was unintentionally set to TRUE
+In v4.5 this is set to FALSE in the config.php file.
+
+
+SVG Images
+----------
+[svg.php CHANGED]
+- Text stroke-width default changed to 1 [4.4.011]
+- Text stroke - line-join type changed [4.4.010]
+- Default value for fill changed to "black" [4.4.008]
+- Bug fixes:
+  * to correct calculation of text-length (and therefore alignment R and C) [4.4.009]
+  * Corrected errors in path implementation esp. quadratic Bezier curves
+  * rounded corners to rectangles - error corrected
+  * Recognition of font-family improved
+  * remove \n (and other non-printable chars) from text
+  * zero length shapes are not output e.g. zero-width rectangle, zero-length line, zero-radius circle
+- Support added for:
+  * gradient stop offsets and gradientUnits="userSpaceOnUse" [4.4.007]
+	In mpdf.php enabled define inner radius for radial gradients - only used internally by SVG at present
+  * user defined <ENTITY /> cf. 'render-elems-03-t.svg' in SVG Test Suite [4.4.006]
+  * "color" attribute and "currentColor" value for fill and stroke [4.4.005]
+  * fill:url(#...) in a style as well as attribute
+  * xlink:href for gradients
+  * 1.3002e-005 in svg path
+  * text-style changes (e.g. text-anchor) set on <g> element - not just on <text>
+  * fill-rule=evenodd|nozero
+  * dashed lines / stroke-dasharray & stroke-dashoffset
+  * gradientUnits=userSpaceOnUse;
+  * units e.g. 3mm or 14pt in Rectangle, Circle, Ellipse, Line and Text position
+  * transform on <text> element
+  * stroke as well as fill on text
+
+NB The following are still NOT supported for SVG
+- filters
+- <marker>
+- images
+- DOM
+- <pattern>
+- textlength; lengthadjust; tspan, tref, toap, textPath;
+- <use ../>
+- gradient on stroke/text;
+- <clipPath>
+- text-underline and strikethrough
+- text opacity
+- colors as rgb(87%, 56%, 25%)
+- rect using units for dimensions
+- Only uses default spreadMethod = "pad" for gradients
+
+
+
+
+
+===========================
+mPDF v4.4   (24/03/2010)
+===========================
+
+New Features
+------------
+- Support SVG image files (partial)
+- Rotate images or graphs (by multiples of 90 degrees)
+- Set opacity (transparency) for background images
+- Control resizing of background images
+- Set whether to print watermark images behind or in front of page contents
+- Reduced memory usage when printing tables (partly configurable)
+- Option to set path to folder for temporary files
+- Improved compliance for CSS text-align justify
+- Increased support for CSS "media"
+- Improved performance when accessing local image files
+
+
+Minor Enhancements
+------------------
+- Allows space in output file name e.g. $mpdf->Output('t est.pdf','D'); [4.3.007B]
+- Header changed in Output to improve compatability with IE6 (affects 'D' and 'I') [4.3.012B]
+- background-images do not show noimage.jpg if missing [4.3.012D]
+- simpleTables (which improves performance) now also allows: background-color, -gradient and -image, padding
+	and rotated text to be set for each cell. Only borders are not supported cell-by-cell. [4.3.006]
+
+
+Bug fixes
+---------
+- Page width not correctly reset when defining default page margins (L/R) by @page [4.3.007C]
+- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.3.005]
+	NB This should have been fixed in [4.2.028] but got left out!
+- UseSubstitutionsMB causes errors inside <textarea> and <select> so now disabled in these 2 situations [4.3.004]
+- CSS background: 'none' did not cancel background-image/background-color if it comes later [4.3.002, 4.3.011]
+- Warning message 'depracated' (as of PHP 5.3) when using Templates [4.3.007]
+- AutoFont incorrectly altering multibyte characters ending in \xa0 [4.3.012C]
+- "Initial" default value for border-width changed from 1px to 'medium' e.g. border-top: solid #000000; [4.3.010]
+- WMF image sometimes inverted [4.3.016]
+
+Updated Files
+-------------
+mpdf.php
+config.php
+changelog.txt
+
+
+New files
+---------
+classes/svg.php
+
+
+New config variables
+--------------------
+$this->justifyB4br=false;
+$this->CSSselectMedia='print';
+$this->watermarkImgBehind = false;
+
+BACKWARD COMPATIBILITY
+----------------------
+All changes are backwards compatible except the handling of some background-images - please see notes below.
+
+
+Watermark Image z-order
+-----------------------
+By default mPDF prints watermarks on top of the page contents to ensure that they are not hidden by backgrounds
+(especially table cells).
+You can specify watermark images to be printed behind page contents by setting a configurable variable:
+$this->watermarkImgBehind = true;  // default=false
+[4.3.018]
+
+
+Rotating Images and Graphs
+--------------------------
+Images or graphs can be rotated (by multiples of 90 degrees) using a custom HTML attribute e.g.
+<img rotate="90|-90|180" ... />
+<jpgraph rotate="90" ... />
+Valid options are: 90|-90|180.
+Positive values are clockwise.
+If width is specified e.g. width="3cm" this is applied to the rotated image i.e. will be width 3cm after rotating
+[4.3.016]
+
+
+Background Image Opacity
+------------------------
+A custom CSS property "background-image-opacity": is now supported on BODY, DIV+ (block elements) and TD
+Takes values between 0 and 1.0
+
+
+Resizing Background Images
+--------------------------
+A custom CSS property "background-image-resize": is now supported on BODY, DIV+ (block elements) and TD
+0 - No resizing (default)
+1 - Shrink-to-fit w (keep aspect ratio)
+2 - Shrink-to-fit h (keep aspect ratio)
+3 - Shrink-to-fit w and/or h (keep aspect ratio)
+4 - Resize-to-fit w (keep aspect ratio)
+5 - Resize-to-fit h (keep aspect ratio)
+6 - Resize-to-fit w and h
+
+N.B. Prior to v4.4 background-images were incorrectly constrained to maximum width of the containing block.
+The default is now to do NO resizing on background-images. Setting "background-image-resize:3" should be used
+for backwards compatibility.
+[4.3.015, 4.3.012D]
+
+
+SVG Image files
+---------------
+SVG image files are now partially supported (but as for WMF - not as background-images).
+viewBox (preserveAspectRatio is not supported)  viewBox="0 0 400 200"  width="400" height="200"
+Takes viewBox in preference to width/height if present on <svg>
+If neither present, will size to width of page (square) as the containing box.
+Units are interpreted as pixels if undefined.
+Doesn't recognise internal CSS <style> elements
+Gradients only take 2 colours which are taken as stop-offset 0% and 100%
+[4.3.013 & 4.3.017]
+
+
+Reduced Memory Usage printing Tables
+------------------------------------
+mPDF uses a lot of memory when processing large tables. Parts of the script have been rewritten to
+reduce memory consumption when writing tables which use collapsed borders (10-25% saving).
+
+Memory usage can be reduced further by setting a configurable variable:
+$this->packTableData = true;  // default=false
+but note that this causes a significant increase in processing time.
+[4.3.008, 4.3.019, 4.3.014]
+
+
+
+User-defined path to Temporary folder
+-------------------------------------
+mPDF uses a folder to write and store temporary files when processing images. By default this is the
+[your_path_to_mpdf]/tmp/
+This is now user-definable by defining the constant _MPDF_TEMP_PATH before including mpdf.php script.
+
+
+Text Justification
+------------------
+In a justified text block, an inline image, textarea, input, or select causing a new line will now force
+the previous line to be justified. HR and BR do NOT force justification (as in browsers).
+For optional compliance of MS Word behaviour, there is a new configurable variable:
+$this->justifyB4br = false;	// Change to true to force justification before a <BR> (as in MS Word)
+[4.3.003]
+
+
+CSS support for @media
+----------------------
+Now supports media-dependent CSS styles e.g.
+@media print {
+	p { color: red; }
+}
+as well as
+<style media="...">...</style> and
+<link rel="stylesheet" media="print" href="..." />
+Proper matching of CSS media to select using configurable variable:
+$this->CSSselectMedia='print';	//  default="print" set in config.php : screen, print, or any other CSS @media type (not "all")
+N.B. $this->disablePrintCSS in now depracated
+[4.3.001]
+
+
+
+
+===========================
+mPDF v4.3   (28/02/2010)
+===========================
+
+NEW FEATURES
+------------
+- Page (sheet) size can be reset within document (http://mpdf1.com/manual/index.php?tid=436) [4.2.024, 4.2.025]
+- PDF/A1-b compliant files (http://mpdf1.com/manual/index.php?tid=420)
+- Improve performance using simpleTables (http://mpdf1.com/manual/index.php?tid=430)
+- mPDFI incorporated into main mPDF class (http://mpdf1.com/manual/index.php?tid=432)
+- <dottab> added as custom HTML tag: inserts dots to the following text, which is right-aligned [4.2.031]
+
+See Example files 38 and 39 for PDFA compliant file and <dottab>
+
+BACKWARD COMPATIBILITY
+----------------------
+All changes are backwards compatible except the use of mPDFI. You will need to make minor changes to your scripts.
+See the manual http://mpdf1.com/manual/index.php?tid=432 for details.
+
+BUG FIXES
+---------
+- When using Table of Contents and not resetting page numbers: HTML headers/footers showed incorrect page number [4.2.020]
+- Table of Contents: last page not printing page background-color [4.2.023]
+- Image file with space " " in the file name failing [4.2.016]
+- Image file path unnecessarily resolved to full URI - changed to use relative path if possible [4.2.029] ***
+- Table - not calculating height of cell correctly [4.2.015, 4.2.012, 4.2.011, 4.2.009]
+- Table row breaking after/during cell when image in cell taller than font-height [4.2.008]
+- When Table row(cell) greater height than the page-height but requiring resizing greater than allowed by autosize - not resizing [4.2.005]
+- Table cell border not resized correctly [4.2.002]
+- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.2.028] ****
+- Background-image in HTMLFooter not correctly setting 0,0 origin [4.2.014]
+- Background-image set as an in-line style not working [4.2.013]
+- Background-image set in CSS @page or <body> was being constrained to less than page size [4.2.032]
+- Imported Templates overwriting Headers (with images or gradients) [4.2.004]
+- When using imports/templates, HTML header with background-image causing page to disappear [4.2.001]
+- block-style element breaking over more than 2 pages incorrectly adjusting L/R margins [4.2.022]
+- CSS @page property "size" set on :left :right or :first pseudo-selectors - disabled [4.2.022]
+- Annotations default colour incorrectly set in PDF as [100 100 0] corrected to [1 1 0] (seemed to work ok?) [4.2.026]
+- Overwrite() now parses input file more tolerantly recognising more source files [4.2.030]
+
+**** Bug fix 4.2.028 never got into the release of v4.3  Included in next release [4.3.005]
+**** Bug fix 4.2.029 never not fully implmented in v4.3  Included in next release [4.3.012]
+
+Changed files
+-------------
+mpdf.php
+compress.php
+config.php
+classes/t1asm.php
+includes/functions.php
+mpdfi/fpdi_pdf_parser.php
+Added files/folder: /mpdfi/filters/*.*
+Added file/folder: /iccprofiles/sRGB_IEC61966-2-1.icc
+mpdfi/mpdfi.php (no longer required)
+
+New Configuration variables
+---------------------------
+[config.php]
+$this->enableImports
+$this->simpleTables
+$this->PDFA
+$this->ICCProfile
+$this->PDFAauto
+
+
+Minor changes
+-------------
+Increased PDF file compatibility with spec 1.4
+- PDF version changed to 1.4
+- A binary file marker (a comment line with 4 characters > 127 ASCII) is added just after the first line
+- %%EOF no longer has line break after it [4.2.010]
+- /ID object is added to trailer object when not encrypted [4.2.010]
+
+When using progress bars, one of the JS scripts is now referenced as an external file
+ to allow it to be cached by user's browser and improve performance for end-user [4.2.007]
+
+Importing external PDF files: LZW encoded PDF files are now supported
+
+When adding an annotation, the popup window can be set be either open or closed when the document is opened [4.2.027]
+- size and position of the popup can also be specified
+
+
+
 ===========================
 mPDF v4.2   (27/01/2010)
 ===========================
@@ -28,7 +437,6 @@ Bug fixes
 - CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
 - parsing stylesheets: background image not recognised if containbed uppercase characters in file name
 - "double" border on table used white between the lines instead of current background colour
-- mPDFI: template documents overwriting HTML headers
 - $this->shrink_tables_to_fit = 0 or false caused fatal errors
 - background color or images not printing correctly when breaking across pages
 - background not printed for List inside a block element
@@ -38,9 +446,10 @@ Bug fixes
 - margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
 - column break triggered by HR triggering a second column break
 - an empty 'position:fixed' element with no/auto width or height caused fatal error
+- mPDFI: template documents were overwriting HTML headers
 - mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
 
-Bug - not fixed - see below
+Bug - not fixed
 - WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
 
 
@@ -48,14 +457,14 @@ Bug - not fixed - see below
 New or Updated Files
 --------------------
 mpdf.php
-classes/gif.php
-classes/indic.php
 compress.php
 config.php
 config_cp.php
 config_fonts.php
 mpdf.css
-includes/sub_core.php
+classes/gif.php
+classes/indic.php
+includes/subs_core.php
 mpdfi/mpdfi.php
 unifont/ar_k_001.uni2gn.php
 All files in new folder: /progress/*.*
@@ -174,7 +583,7 @@ Bug fixes
 - Graceful support for block elements inside list items e.g. <li><p>... (not supported, but tolerated)
 - Index: Created dividing letters separately for Uppercase and lowercase
 - Incorrectly changing input character set when encountering e.g. charset=iso-8859-1 in the text of the document
-	- Changed so only detects it if within <head>...</head> 
+	- Changed so only detects it if within <head>...</head>
 - If Keep-with-table (i.e. H1-6 before table and use_kwt true), if pagebreak forced anyway, borders did not print on previous page
 - Background-image used in HTML footer not appearing (correctly)
 - RTL tables: nested tables will not automatically transpose L->R
@@ -205,7 +614,7 @@ CSS style height now partially supported on block elements DIV, P, H1 etc. --IF-
 	- will not force a pagebreak (max. at bottom of page)
 	- % is interpreted as % of printable page height (inside margins)
 <TFOOT> now supported (placed at start as in HTML spec) displays at end of table, and repeats as a footer
-Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or 
+Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or
 	positioned correctly if table is rotated)
 NB Background images and background-gradients do not work if Columns are being used, or if $use_kwt is TRUE (keep-with-table),
 	 or if page-break-inside:avoid is active.
@@ -269,7 +678,7 @@ $arr = array();
 if ($arr['index'] == 5 ) {...}
 
 To prevent this, lines were added at the start of the mpdf.php script to turn error notices OFF.
-In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered 
+In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered
 e.g. the line above would be changed to:
 if (isset($arr['index'] && $arr['index'] == 5 ) {...}
 
@@ -356,7 +765,7 @@ htmltoolkit.php
 
 Developers only
 ---------------
-- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together 
+- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together
       - otherwise would overwrite background image with inherited color
 - all %.2f used in sprintf() changed to %.3f in htmltoolkit.php and mpdf.php to increase accuracy of div border lines in columns etc.
 - variable $use_embeddedfonts_1252 renamed to $useOnlyCoreFonts as more precise: depracated but still supported.
@@ -596,7 +1005,7 @@ CSS changes
 Numbered Lists
 --------------
 Variables set at the top of mpdf.php can be set to change:
-- text alignment of numbers in numbered lists (default Right) 
+- text alignment of numbers in numbered lists (default Right)
 	var $list_align_style = 'R';
 - content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
 	var $list_number_suffix = '.';
@@ -627,12 +1036,12 @@ This has been changed so that it only overrides when the rotate angle is between
 =========
 Bug fixes
 =========
-- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output 
+- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output
 - Tables - if cell font-size set smaller than default for the table, does not shrink the cell height
 - Columns (tables) - columns breaking across rows e.g. in the middle of a table cell
 - Tables - if table width set to e.g. 100% but cols are less, was not making up to set width
 - Watermark - was not printing if using HTMLFooter
-- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc. 
+- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc.
 - Lists - indent of text did not correctly allow for Maximum number in <ol> list
 - Table does not always move correctly to a new page
 - Table cell incorrectly calculated height causing text to overflow cell when printed
@@ -733,7 +1142,7 @@ DL did not close block correctly
 Transparent not recognised as color/background-color
 (Attempted a fix by setting to ignore it! - fn. convertcolor in htmltoolkit.php)
 
-Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p> 
+Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p>
 (Fixed - fn.WriteHTML)
 
 Page Headers/Footers - Simple Headers or Footers defined as e.g. '|{PAGENO}|' were not split into 3 components, but output |6| in the outer margin.
@@ -765,10 +1174,10 @@ See the web page example - this stops the CSS stylesheets specifically marked fo
 Table borders (in collapsed model) incorrectly calculated which border had dominance (mPDF <=1.3 determined the overriding border by its color)
 (Fixed to follow CSS 2.1 specifications: width >> CSS dominance (cell>table) >> T & L > B & R)
 In the border-collapse=collapse mode, the following rules determine which border style "wins" in case of a conflict:
-1. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders. 
+1. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders.
 2. narrow borders are discarded in favor of wider ones.
 3. styles are preferred in this order: 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and the lowest: 'inset'.
-4. If border styles differ only in color, then a style set on a cell wins over one on a table. 
+4. If border styles differ only in color, then a style set on a cell wins over one on a table.
 5. When two elements of the same type conflict, then the one further to the left or top wins out.
 
 Parsing CSS, a missed level would not be picked up i.e. CSS = div.refstr1 p {...} would not pick up:
@@ -856,7 +1265,7 @@ $mpdf->WriteHTML($stylesheet,1);
 $mpdf->WriteHTML($html);	// this one cleared the array $this->cascadeCSS; conatining cascaded CSS information from stylesheets
 You were meant to call:
 $mpdf->WriteHTML($html,2);	// which doesn't re-parse the CSS information
-v2.0 changed so that 
+v2.0 changed so that
 $mpdf->WriteHTML($html); no longers clears the array $this->cascadeCSS and so can be used repeatedly;
 
 
@@ -931,7 +1340,7 @@ EAN barcode
 An EAN barcode can be generated
 function writeBarcode($code, $showisbn=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2) {
 It accepts 12 or 13 digits with or without - hyphens as $code e.g.
-$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y); 
+$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y);
 NB - IMPORTANT***
 A new font - OCR-B font/unifont is required, and needs to be added to the config.php file
 cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
@@ -995,7 +1404,7 @@ function AddExtGState() edited to check if graphics state already exists before
 
 ASCII-proof code
 ================
-"»¤¬" used as a special identifier in the program changed to "\xbb\xa4\xac" to make the mpdf.php script file immune from someone saving it as a utf-8 encoded file
+"���" used as a special identifier in the program changed to "\xbb\xa4\xac" to make the mpdf.php script file immune from someone saving it as a utf-8 encoded file
 
 Images
 ======
@@ -1147,7 +1556,7 @@ fn. OpenTag() [LI] $this->blockjustfinished=false to prevents newline after firs
 
 Uses of mb_ereg_replace removed, and mb_split changed - requires regex_encoding (regex_encoding only used as UTF-8)
 
-fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook " 
+fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook "
 
 fn. printbuffer() and fn. openTag() to ensure
  <div><div><p> outputs top margins/padding for both 1st and 2nd div

+ 0 - 389
main/inc/lib/mpdf/README_4_2.txt

@@ -1,389 +0,0 @@
-===========================
-mPDF v4.2   (27/01/2010)
-===========================
-
-Bug fixes
----------
-- empty variable (undefined var, false, null, array() etc.) sent to WriteHTML produced error message "Invalid UTF-8"
-- CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
-- parsing stylesheets: background image not recognised if containbed uppercase characters in file name
-- "double" border on table used white between the lines instead of current background colour
-- mPDFI: template documents overwriting HTML headers
-- $this->shrink_tables_to_fit = 0 or false caused fatal errors
-- background color or images not printing correctly when breaking across pages
-- background not printed for List inside a block element
-- columns starting near end of page with no room for a line triggering column change (resulting in text misplaced) not page break
-- table cell not calculating cell height correctly when "orphan" characters (;:,.?! etc.) at end of line
-- table breaking page in column 2 when col 1 is rowspan'ned
-- margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
-- column break triggered by HR triggering a second column break
-- an empty 'position:fixed' element with no/auto width or height caused fatal error
-- mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
-
-Bug - not fixed - see below
-- WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
-
-
-
-
-New or Updated Files
---------------------
-mpdf.php
-classes/gif.php
-classes/indic.php
-compress.php
-config.php
-config_cp.php
-config_fonts.php
-mpdf.css
-includes/sub_core.php
-mpdfi/mpdfi.php
-unifont/ar_k_001.uni2gn.php
-All files in new folder: /progress/*.*
-
-NEW FOLDER /tmp/ required with read/write permissions - used for temporary image files or progress bars
-
-New fonts: zn_hannom_a and unBatang_0613 available as CJK font pack
-	zn_hannom_a - contains all characters in SJIS, BIG-5, GBK, and HKCSS codepages (Japanes & Chinese)
-		(except greek and cyrillic characters, and HKCS > U+x20000;)
-	unbatang_0613 - all characters in UHC codepage (Korean)
-
-
-
-Changes to configuration files
-==============================
-config_cp.php
--------------
-Mainly just tidied up, and:
-default:  $cp = "UTF-8"; $spacing = "";  break;	// Don't need to set unifonts - will make all available if omitted/left blank
-Default spacing set to '' (i.e. mixed character/word)
-spacing=C removed for Vietnamese (?why there) to allow spacing as for any european text
-spacing=C added to Thai (should have been there all along)
-
-config.php
-----------
-$defaultCSS changed to make appearance closer to that of browsers:
-img { margin: 0; vertical-align: baseline; }
-table { margin: 0; }
-textarea { vertical-align: text-bottom; }
-
-(See also notes on line-height)
-
-New Configuration variables in 4.2:
-$this->useSubstitutionsMB = false;	// Substitute missing characters in UTF-8(multibyte) documents - from core fonts
-$this->falseBoldWeight = 5;		// Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
-$this->collapseBlockMargins = true; 	// Allows top and bottom margins to collapse between block elements
-$this->progressBar = false;		// Shows progress-bars whilst generating file
-$this->normalLineheight = 1.33;		// Value used for line-height when CSS specified as 'normal' (default)
-// When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
-// by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
-// the previous guess was. The higher the number, the quicker it will finish, but the less accurate the fit may be.
-// FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
-$this->incrementFPR1 = 10;
-$this->incrementFPR2 = 20;
-$this->incrementFPR3 = 30;
-$this->incrementFPR4 = 50;
-
-
-mpdf.css
---------
-Now contains (commented out) lines to return behaviour to pre-4.2 behaviour:
-img { margin: 0.83em 0; vertical-align: bottom; }
-table { margin: 0.5em; }
-textarea { vertical-align: top; }
-
-
-Font updates:
-=============
-Indic Tamil numeral for Zero missing - converted to standard zero 0 (in classes/indic.php)
-ar_k_001.uni2gn.php - reference to small 'z' missing - now added (works with subsets but not with full font)
-
-
-
-WriteHTML($html,2)
-==================
-WriteHTML($html,2) i.e. with the ,2 did not set BODY CSS - this was unintentional, and has been changed in 4.2
-Line-height and margin-collapse were therefore not cascaded through the document; the line-height defaulted to 1.2,
-and margin-collapse (which collapses top and bottom margins at the top of pages) was not enabled.
-
-If you used ",2" and want to keep layout:
-- Change $this->normalLineheight = 1.2; in config.php
-- Change defaultCSS: 'MARGIN-COLLAPSE' => 'none', in config.php
-
-NB also $this->collapseBlockMargins = false;	NB This does between block elements
-
-NB You cannot now reset default font during document by redefining vars e.g. $mpdf->default_font = 'xxx'
-
-Now WriteHTML(,2) - does NOT read metatags, <style> or stylesheets from HTML, <html> or <body> inline CSS
-	- DOES use defaultCSS, and stored CSS and stored cascading CSS
-	- DOES use the above to overwrite defaultfont, defaultfontsize
-	- DOES use the above to set (cascading) margin-collapse (pagetops) and line-height from BODY
-	- therefore problem trying to set default_font, default_lineheight_correction etc programmatically
-	- use SetDefaultFont(), SetDefaultFontSize() - (now altered to update $defaultCSS and $CSS['BODY'][''])
-	- new SetDefaultBodyCSS($property, $value) - use to update [BODY] line-height etc. during program e.g. columns example
-
-
-
-NEW FEATURES
-============
-PROGRESS BAR
-------------
-You can now show a progress bar whilst mPDF generates the file.
-It is not recommended for regular use - it loads a separate HTML page to the browser, and may slow things down.
-May be useful if the end-user is waiting a long time, or for development purposes.
-1) You need to define _MPDF_URI as a relative path or URI (NOT a relative file system path)
-	- call this in your script before instantiating the class: new mPDF()
-2) Call $mpdf->StartProgressBarOutput(0|1|2); in your script before using WriteHTML(), OR
-	- or set $this->progressBar = 0|1|2; in config.php file (0 off, 1 simple, 2 advanced)
-	StartProgressBarOutput(2) shows a more advanced/complex set of progress bars (default = 1)
-
-Note on defined Paths:
-_MPDF_PATH must be a relative or absolute file system path
-_MPDF_URI must be a relative or absolute URI (seen from the browser's point of view)
-mPDF will usually be able to automatically set _MPDF_PATH if you do not define it, but it cannot set _MPDF_URI
-
-Example:
-Your script is at: http://subdomain.mydomain.com/script.php  = /homepages/123456/htdocs/public/subdomain/script.php
-Your MPDF file is: http://www.mydomain.com/mpdf41/mpdf.php  = /homepages/123456/htdocs/public/mpdf41/mpdf.php
-_MPDF_PATH (from script.php to mpdf folder) - can be:
-	../mpdf41/	or
-	/homepages/123456/htdocs/public/mpdf41/
-	It cannot be http://www.mydomain.com/mpdf41/
-	
-_MPDF_URI must be:
-	http://www.mydomain.com/mpdf41/
-	It cannot be a relative path - because you can't have ../ from the subdomain URI
-
-IF _MPDF_URI is not defined - mPDF silently ignores and leaves out the progress bar (or if debug gives warning)
-
-
-LINE-HEIGHT
------------
-The handling of line-height has been generally overhauled. Also some anomalies have been unearthed, so the layout of 
-your documents may change with v4.2.
-The most significant change is that prior to v4.2, line-height was inherited as a factor of the fontsize i.e. 
-<div id="1" style="font-size: 14pt; line-height: 28pt;"><div id="2" style="font-size: 28pt;">
-When the line-height was applied to div 1, it was calculated to be 2 x the fontsize - this was the value inerited by div 2
-which therefore set a line-height of 2 x 28 = 56pt.
-
-Inheritance now follows the CSS2 recommendation:
-    * normal is inherited as "normal"
-    * 1.2 is inherited as a factor
-    * 120% is converted to an actual value and then inherited as the computed value
-    * em is converted to an actual value and then inherited as the computed value
-    * px pt mm are inherited as fixed values
-
-The value used for 'normal' is now defined in config.php by $normalLineheight (default 1.33) rather than $default_lineheight_correction (1.2)
-The defaultCSS BODY>>LINE-HEIGHT is now set as 'normal' rather than 1.33
-Block-level elements and lists use $normalLineheight as default now (unless overridden by CSS style)
-Lists inherit from containing block-level element, and lists inherit from containing lists.
-Tables do not inherit from containing block (as per browsers).
-Table default line-height is set by $defaultCSS in config.php
-So the $defaultCSS 'BODY' line-height sets for all except tables.
-Line-height can be set on UL,OL at every level, but not on LI items
-Line-height can only be set on top-level table (not nested tables, nor table cells TD/TH).
-Textarea - does not support CSS line-height - can change for whole document using $this->textarea_lineheight in config.php
-
-Algorithm used for line-height:
-If line-height set on a block-level element is an ABSOLUTE value (including %, em) it is fixed for the line unless:
-	A font size on the line (e.g. in a span) is greater than the computed line-height for that line
-	An image has a height greater than the computed line-height for that line
-	e.g. <div style="font-size: 12pt; line-height: 2em;">Hallo <span style="font-size: 26pt">World...
-	- line-height will increase from 24pt (2em x 12pt) to 26pt
-  The vertical positioning of the text baseline will remain equally spaced unless:
-	images exceed the initial line-height.
-	large fontsize >= 0.8 x the initial line-height.
-	e.g. <div style="font-size: 10pt; line-height: 2em;">Hallo <span style="font-size: 18pt">World...
-  If line-height is set to be less than the fontsize, this will be respected UNLESS a larger fontsize (eg in span) or an image is included
-	on the line, in which case the line-height is expanded to fit -
-  LISTS - will always expand to the largest fontsize (including the bullet or number).
-
-If line-height is a number/factor: 
-	Line height will be based on the largest fontsize (x factor) or image height (NOT x factor) on the line.
-	The vertical positioning of the text baseline will be adjusted so the centre-line runs through the 
-		middle of the largest font-size on the line.
-
-This gives results which roughly match browsers, but note that not even IE8 and FF3 are exactly the same in detail.
-
-A line-height cannot be defined as a number (factor) less than 1.0 - it will be set as 1.0
-Absolute values that are less than 1 (including e.g. 80%) are respected - unless a larger fontsize or an image on the line.
-
-Line-height - Backwards compatability?
---------------------------------------
-The default settings should generally give the same results as pre-4.2 version, unless you specified absolute line-heights in your CSS.
-If you did, the only way is to go back and edit your CSS stylesheets.
-
-If you use WriteHTML($html,2) with the '2' parameter - see notes above.
-
-If you set $mpdf->default_lineheight_correction programmatically - 
-The old example file for columns used WriteHTML('',2) - see below - and
-	$mpdf->default_lineheight_correction = 1.1;
-This no longer works because the defaultCSS value for line-height overrides this.
-You can use:
-	$mpdf->SetDefaultBodyCSS('line-height', 1.1);	// A new function
-
-
-MARGIN-COLLAPSE BETWEEN BLOCK ELEMENTS
---------------------------------------
-mPDF has always allowed margins to be collapsed at the top and bottom of pages (although see notes on WruiteHTML('',2) )
-This is specified by the custom CSS property "margin-collapse: collapse"
-
-mPDF 4.2 also allows margins to collapse between block elements on the page. This is the default behaviour in browsers,
-and has been enabled in mPDF by default.
-
-NB IMPORTANT - THIS MAY CHANGE THE APPEARANCE OF YOUR DOCUMENTS *****
-
-A configuration variable in config.php enables/disables this (default=true):
-$this->collapseBlockMargins = true; 	// mPDF 4.2 Allows top and bottom margins to collapse between block elements
-
-Change this to false if you wish to retain the layout of your previous files.
-
-Margin collapse works between lists, tables and all standard block-level elements (DIV, P, H1-6 etc.)
-NB Firefox does not collapse table margins, but IE8 does.
-
-
-
-
-TABLE RESIZING
---------------
-mPDF attempts to layout tables according to HTML and CSS specifications. However, because of
-the difference between screen and paged media, mPDF resizes tables when necessary to make
-them fit the page. This will happen if the minimum table-width is greater than the page-width.
-Minimum table-width is defined as the minimum width to accomodate the longest word in each
-column i.e. words will never be split.
-This resizing (minimum-width) can be disabled using a custom CSS property "overflow" on the
-TABLE tag. There are 4 options:
-<table style="overflow: auto"> (this is the default, using resizing)
-<table style="overflow: visible"> (disables resizing, but allows overflow to show)
-<table style="overflow: hidden"> (disables resizing, and hides/clips any overflow)
-<table style="overflow: wrap"> (forces words to break as necessary)
-
-NB You cannot disable automatic resizing if a row-height is greater than the page-height.
-
-This only works on the top-level table (i.e. ignored on "nested" tables).
-overflow: visible will not extend the containing block element.
-Ignored on rotated tables.
-Ignored if columns are being used.
-
-
-ARTIFICIAL BOLD & ITALIC
-------------------------
-mPDF will create "artificial" bold & italic font styles if they are not available as separate
-font files.
-A configuration variable in config.php can vary how bold is bold:
-$this->falseBoldWeight = 5;	// Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
-
-
-CSS "DOUBLE" BORDER-STYLE
--------------------------
-CSS support for "double" border on block elements. NB Tables support the full range of CSS values for 
-border-style; block elements now support just solid and double.
-
-
-CHARACTER SUBSTITUTION IN UTF-8
--------------------------------
-Character substitution is used in codepaged PDF files (e.g. win-1252) to enable characters which exist in the core Adobe fonts
-(including symbols and zapfdingbats) to be displayed when they do not exist in the font currently being used.
-Character substitution in UTF-8 files was possible but erratic prior to v4.0 - then disabled in v4.0
-
-v4.2 introduces a new implementation of character substitution. When enabled, any characters which do not exist in the current
-font - but which do exist in the document's default font - will be substituted.
-There will be a time penalty for using this, as each character is inspected to check if it exists in the current font.
-This may be useful for some of the specialist fonts such as arabic, indic and CJK.
-
-A configuration variable in config.php enables/disables this (default=false):
-$this->useSubstitutionsMB = false;		// Substitute missing characters in UTF-8(multibyte) documents - from core font
-
-
-IMAGES
-------
-Image handling has been completely overhauled (again!) in 4.2
-(See the discussion: http://mpdf.bpm1.com/forum/comments.php?DiscussionID=180&page=1#Item_6)
-
-IMPORTANT - a new folder is required  [your_mpdf_folder]/tmp/ with read/write permissions.
-
-PNG files (unless with alpha channel or interlaced), JPG and WMF images are read directly and are most efficient on resources.
-GIF files use the GD library - if available - this is quick, but can use enormous amount of memory for large files.
-GIF files without the GD library are very, very slow - it is recommended to change the image type if at all possible.
-PNG files with alpha channel or interlaced require the GD library, and can use large amoutns of memory.
-
-Images generated by a script e.g. myimage.php should be handled exactly the same as a native image file type.
-
-NB The 'compress' utility no longer does anything other than IMAGES or IMAGES-WMF
-
-
-BACKGROUND-IMAGES
------------------
-Background-gradient and background-image can now co-exist (layers = bgcolor < gradient < image)
-This works for BODY and also for block elements or tables.
-
-
-IMAGE DATA FROM PHP
--------------------
-A PHP variable containing image data can be passed directly to mPDF. You need to allocate the data to a class variable
-(you can make any name up) e.g.
-$mpdf->myvariable = file_get_contents('alpha.png');
-
-The image can then be referred to by use of "var:varname" instead of a file name,
-either in src="" or direct to Image() function e.g.
-
-$html = '<img src="var:myvariable" />';
-$mpdf->WriteHTML($html);
-- OR -
-$mpdf->Image('var: myvariable',0,0);
-
-
-
-IMAGE - VERTICAL-ALIGN & MARGIN
--------------------------------
-Vertical-alignment of images has been rewritten. All of the CSS properties are now supported:
-top, bottom, middle, baseline, text-top, and text-bottom.
-
-'baseline' is now set as the default value for images in defaultCSS (config.php)
-and 'text-bottom' as the default for textarea. 
-
-In-line images can now be individually aligned (vertically) i.e. different alignments can co-exist on one line.
-
-The defaultCSS value for margin on images has been changed to 0. Prior to 4.2, the default values of margin (0.3-0.5em)
-and vertical-align (bottom) could be used to approximately align the image with the text baseline.
-The new default values should therefore not significantly change appearances in most cases.
-
-These new values are consistent with most browsers.
-
-
-IMAGE - PADDING
----------------
-CSS property padding is now supported for images <IMG>. Default is set in defaultCSS to 0
-
-
-
-CSS @PAGE SELECTOR
-------------------
-The functions AddPage() and TOCpagebreak() have an extra last parameter = $pagesel i.e. named @page selector
-The @page can also be specified in:
-<pagebreak page-selector="pagename"
-<formfeed page-selector="pagename"
-<tocpagebreak toc-page-selector="pagename" page-selector="pagename"
-
-Different headers/footers can be specified on :first :left and :right pages.
-"odd-header-name" etc is still recognised on @page or @page name (and takes priority over newer method "footer"/"header")
-but new custom properties "header" and "footer" are recognised on ALL, i.e. @page :left
-
-Other values are now recognised on :first, :left and :right selectors 
-i.e. as well as header/footer, you can specify margins, backgrounds etc
-
-One exception is margin-right and margin-left:
-Left/right-margins must be the same for every page (of that @page name), or mirrored using $mpdf->mirrorMargins;
-margin-right and margin-left are ignored when set on :left or :right selectors
-
-See the example given in discussion forum: http://mpdf.bpm1.com/forum/comments.php?DiscussionID=177&page=1#Comment_658
-
-
-
-LISTS IN TABLES
----------------
-If using a UTF-8 document, and the current font contains the necessary characters, it will use disc, circle and square 
-as bullets instead of a hyphen (-)
-
-
-

+ 2019 - 0
main/inc/lib/mpdf/classes/svg.php

@@ -0,0 +1,2019 @@
+<?php
+//	svg class modified for mPDF version 4.4.003 by Ian Back: based on -
+//	svg2pdf fpdf class
+//	sylvain briand (syb@godisaduck.com), modified by rick trevino (rtrevino1@yahoo.com)
+//	http://www.godisaduck.com/svg2pdf_with_fpdf
+//	http://rhodopsin.blogspot.com
+//	
+//	cette class etendue est open source, toute modification devra cependant etre repertoriée~
+
+
+// NB UNITS - Works in pixels as main units - converting to PDF units when outputing to PDF string
+// and on returning size
+
+class SVG {
+
+	var $svg_gradient;	//	array - contient les infos sur les gradient fill du svg classé par id du svg
+	var $svg_shadinglist;	//	array - contient les ids des objet shading
+	var $svg_info;		//	array contenant les infos du svg voulue par l'utilisateur
+	var $svg_attribs;		//	array - holds all attributes of root <svg> tag
+	var $svg_style;		//	array contenant les style de groupes du svg
+	var $svg_string;		//	String contenant le tracage du svg en lui même.
+	var $txt_data;		//    array - holds string info to write txt to image
+	var $txt_style;		// 	array - current text style
+	var $mpdf_ref;
+	var $xbase;		// mPDF 4.4.003
+	var $ybase;		// mPDF 4.4.003
+	var $svg_error;	// mPDF 4.4.003
+	var $subPathInit;	// mPDF 4.4.003
+	var $spxstart;	// mPDF 4.4.003
+	var $spystart;	// mPDF 4.4.003
+	var $kp;		// mPDF 4.4.003  convert pixels to PDF units
+
+	function SVG(&$mpdf){
+		$this->svg_gradient = array();
+		$this->svg_shadinglist = array();
+		$this->txt_data = array();
+		$this->svg_string = '';
+		$this->svg_info = array();
+		$this->svg_attribs = array();
+		$this->xbase = 0;
+		$this->ybase = 0;
+		$this->svg_error = false;
+		$this->subPathInit = false;	// mPDF 4.4.003
+
+		$this->mpdf_ref =& $mpdf;
+
+		$this->kp = 72 / $mpdf->img_dpi;	// mPDF 4.4.003  constant To convert pixels to pts/PDF units
+
+		$this->svg_style = array(
+			array(
+			'fill'		=> 'black',			//	mPDF 4.4.008
+			'fill-opacity'	=> 1,				//	remplissage opaque par defaut
+			'fill-rule'		=> 'nonzero',		//	mode de remplissage par defaut
+			'stroke'		=> 'none',			//	pas de trait par defaut
+			'stroke-linecap'	=> 'butt',			//	style de langle par defaut
+			'stroke-linejoin'	=> 'miter',			//
+			'stroke-miterlimit' => 4,			//	limite de langle par defaut
+			'stroke-opacity'	=> 1,				//	trait opaque par defaut
+			'stroke-width'	=> 1,				//	mPDF 4.4.011
+			'stroke-dasharray' => 0,			//	mPDF 4.4.003
+			'stroke-dashoffset' => 0,			//	mPDF 4.4.003
+			'color' => ''					//	mPDF 4.4.005
+			)
+		);
+
+		$this->txt_style = array(
+			array(
+			'fill'		=> 'black',		//	pas de remplissage par defaut
+			'font-family' 	=> $mpdf->default_font,
+			'font-size'		=> $mpdf->default_font_size,		// 	****** this is pts
+			'font-weight'	=> 'normal',	//	normal | bold
+			'font-style'	=> 'normal',	//	italic | normal
+			'text-anchor'	=> 'start'		// alignment: start, middle, end
+			)
+		);
+
+
+
+	}
+
+	function svgGradient($gradient_info, $attribs, $element){
+
+		$n = count($this->mpdf_ref->gradients)+1;
+
+		// Get bounding dimensions of element
+		$w = 100;
+		$h = 100;
+		$x_offset = 0;
+		$y_offset = 0;
+		if ($element=='rect') {
+			$w = $attribs['width'];
+			$h = $attribs['height'];
+			$x_offset = $attribs['x'];
+			$y_offset = $attribs['y'];
+		}
+		else if ($element=='ellipse') {
+			$w = $attribs['rx']*2;
+			$h = $attribs['ry']*2;
+			$x_offset = $attribs['cx']-$attribs['rx'];
+			$y_offset = $attribs['cy']-$attribs['ry'];
+		}
+		else if ($element=='circle') {
+			$w = $attribs['r']*2;
+			$h = $attribs['r']*2;
+			$x_offset = $attribs['cx']-$attribs['r'];
+			$y_offset = $attribs['cy']-$attribs['r'];
+		}
+		else if ($element=='polygon') {
+			$pts = preg_split('/[ ,]+/', trim($attribs['points']));
+			$maxr=$maxb=0;
+			$minl=$mint=999999;
+			for ($i=0;$i<count($pts); $i++) {
+				if ($i % 2 == 0) {	// x values
+					$minl = min($minl,$pts[$i]);
+					$maxr = max($maxr,$pts[$i]);
+				}
+				else {	// y values
+					$mint = min($mint,$pts[$i]);
+					$maxb = max($maxb,$pts[$i]);
+				}
+			}
+			$w = $maxr-$minl;
+			$h = $maxb-$mint;
+			$x_offset = $minl;
+			$y_offset = $mint;
+		}
+		else if ($element=='path') {
+			preg_match_all('/([a-z]|[A-Z])([ ,\-.\d]+)*/', $attribs['d'], $commands, PREG_SET_ORDER);
+			$maxr=$maxb=0;
+			$minl=$mint=999999;
+			foreach($commands as $c){
+				if(count($c)==3){
+					list($tmp, $cmd, $arg) = $c;
+					if ($cmd=='M' || $cmd=='L' || $cmd=='C' || $cmd=='S' || $cmd=='Q' || $cmd=='T') {
+						$pts = preg_split('/[ ,]+/', trim($arg));
+						for ($i=0;$i<count($pts); $i++) {
+							if ($i % 2 == 0) {	// x values
+								$minl = min($minl,$pts[$i]);
+								$maxr = max($maxr,$pts[$i]);
+							}
+							else {	// y values
+								$mint = min($mint,$pts[$i]);
+								$maxb = max($maxb,$pts[$i]);
+							}
+						}
+					}
+					if ($cmd=='H') { // sets new x
+						$minl = min($minl,$arg);
+						$maxr = max($maxr,$arg);
+					}
+					if ($cmd=='V') { // sets new y
+						$mint = min($mint,$arg);
+						$maxb = max($maxb,$arg);
+					}
+				}
+			}
+			$w = $maxr-$minl;
+			$h = $maxb-$mint;
+			$x_offset = $minl;
+			$y_offset = $mint;
+		}
+		if (!$w) { $w = 100; }
+		if (!$h) { $h = 100; }
+		if ($x_offset==999999) { $x_offset = 0; }
+		if ($y_offset==999999) { $y_offset = 0; }
+
+
+		// mPDF 4.5.010
+		// TRANSFORMATIONS
+		$transformations = '';
+		if (isset($gradient_info['transform'])){
+			preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$gradient_info['transform'],$m);
+			if (count($m[0])) {
+				for($i=0; $i<count($m[0]); $i++) {
+					$c = strtolower($m[1][$i]);
+					$v = trim($m[2][$i]);
+					$vv = preg_split('/[ ,]+/',$v);
+					if ($c=='matrix' && count($vv)==6) {
+						$transformations .= sprintf(' %.3f %.3f %.3f %.3f %.3f %.3f cm ', $vv[0], $vv[1], $vv[2], $vv[3], $vv[4]*$this->kp, $vv[5]*$this->kp);
+					}
+					else if ($c=='translate' && count($vv)) {
+						$tm[4] = $vv[0];
+						if (count($vv)==2) { $t_y = -$vv[1]; }
+						else { $t_y = 0; }
+						$tm[5] = $t_y;
+						$transformations .= sprintf(' 1 0 0 1 %.3f %.3f cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
+					}
+					else if ($c=='scale' && count($vv)) {
+						if (count($vv)==2) { $s_y = $vv[1]; }
+						else { $s_y = $vv[0]; }
+						$tm[0] = $vv[0];
+						$tm[3] = $s_y;
+						$transformations .= sprintf(' %.3f 0 0 %.3f 0 0 cm ', $tm[0], $tm[3]);
+					}
+					else if ($c=='rotate' && count($vv)) {
+						$tm[0] = cos(deg2rad(-$vv[0]));
+						$tm[1] = sin(deg2rad(-$vv[0]));
+						$tm[2] = -$tm[1];
+						$tm[3] = $tm[0];
+						if (count($vv)==3) {
+							$transformations .= sprintf(' 1 0 0 1 %.3f %.3f cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
+						}
+						$transformations .= sprintf(' %.3f %.3f %.3f %.3f 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
+						if (count($vv)==3) {
+							$transformations .= sprintf(' 1 0 0 1 %.3f %.3f cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
+						}
+					}
+					else if ($c=='skewx' && count($vv)) {
+						$tm[2] = tan(deg2rad(-$vv[0]));
+						$transformations .= sprintf(' 1 0 %.3f 1 0 0 cm ', $tm[2]);
+					}
+					else if ($c=='skewy' && count($vv)) {
+						$tm[1] = tan(deg2rad(-$vv[0]));
+						$transformations .= sprintf(' 1 %.3f 0 1 0 0 cm ', $tm[1]);
+					}
+
+				}
+			}
+		}
+
+
+		$return = "";
+
+	// This ought to make it better - but makes it worse!
+	//	if ($transformations) { $return .= $transformations; }	// mPDF 4.5.010
+
+		if ($gradient_info['type'] == 'linear'){
+			// mPDF 4.4.003
+			if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+				if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
+				if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
+				if (isset($gradient_info['info']['x2'])) { $gradient_info['info']['x2'] = ($gradient_info['info']['x2']-$x_offset) / $w; }
+				if (isset($gradient_info['info']['y2'])) { $gradient_info['info']['y2'] = ($gradient_info['info']['y2']-$y_offset) / $h; }
+			}
+
+			if (isset($gradient_info['info']['x1'])) { $x1 = $gradient_info['info']['x1']; }
+			else { $x1 = 0; }
+			if (isset($gradient_info['info']['y1'])) { $y1 = $gradient_info['info']['y1']; }
+			else { $y1 = 0; }
+			if (isset($gradient_info['info']['x2'])) { $x2 = $gradient_info['info']['x2']; }
+			else { $x2 = 1; }
+			if (isset($gradient_info['info']['y2'])) { $y2 = $gradient_info['info']['y2']; }
+			else { $y2 = 0; }
+
+			if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
+			if (stristr($x2, '%')!== false) { $x2 = ($x2+0)/100; }
+			if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
+			if (stristr($y2, '%')!== false) { $y2 = ($y2+0)/100; }
+
+			$a = $w;	// width
+			$b = 0;
+			$c = 0;
+			$d = -$h;	// height
+			$e = $x_offset;	// x- offset
+			$f = -$y_offset;	// -y-offset
+
+
+			$return .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f cm ', $a*$this->kp, $b, $c, $d*$this->kp, $e*$this->kp, $f*$this->kp);
+
+			// mPDF 4.4.007   Gradient STOPs
+			$stops = count($gradient_info['color']);
+			if ($stops < 2) { return ''; }
+			for ($i=0; $i<($stops-1); $i++) {
+				$first_stop = $gradient_info['color'][$i]['offset'];
+				$last_stop = $gradient_info['color'][($i+1)]['offset'];
+				if (stristr($first_stop, '%')!== false) { $first_stop = ($first_stop+0)/100; }
+				if (stristr($last_stop, '%')!== false) { $last_stop = ($last_stop+0)/100; }
+				if ($first_stop < 0) { $first_stop = 0; }
+				if ($last_stop > 1) { $last_stop = 1; }
+				if ($last_stop < $first_stop) { $last_stop = $first_stop; }
+				$grx1 = $x1 + ($x2-$x1)*$first_stop;
+				$gry1 = $y1 + ($y2-$y1)*$first_stop;
+				$grx2 = $x1 + ($x2-$x1)*$last_stop;
+				$gry2 = $y1 + ($y2-$y1)*$last_stop;
+
+				$this->mpdf_ref->gradients[$n+$i]['type'] = 2;
+				$this->mpdf_ref->gradients[$n+$i]['coords']=array($grx1, $gry1, $grx2, $gry2);
+
+				if (!$gradient_info['color'][$i]['color']) { $gradient_info['color'][$i]['color'] = '0 0 0'; }
+				if (!$gradient_info['color'][$i+1]['color']) { $gradient_info['color'][$i+1]['color'] = '0 0 0'; }
+				$this->mpdf_ref->gradients[$n+$i]['col1'] = $gradient_info['color'][$i]['color'];
+				$this->mpdf_ref->gradients[$n+$i]['col2'] = $gradient_info['color'][$i+1]['color'];
+
+				if ($i == 0 && $i == ($stops-2) )
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('true','true');
+				else if ($i==0)
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('true','false');
+				else if ($i == ($stops-2) )
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('false','true');
+				else 
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('false','false');
+				$return .= '/Sh'.($n+$i).' sh ';
+			}
+			$return .= ' Q ';
+		}
+		else if ($gradient_info['type'] == 'radial'){
+			// mPDF 4.4.003
+			if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+				if ($w > $h) { $h = $w; }
+				else { $w = $h; }
+				if (isset($gradient_info['info']['x0'])) { $gradient_info['info']['x0'] = ($gradient_info['info']['x0']-$x_offset) / $w; }
+				if (isset($gradient_info['info']['y0'])) { $gradient_info['info']['y0'] = ($gradient_info['info']['y0']-$y_offset) / $h; }
+				if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
+				if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
+				if (isset($gradient_info['info']['r'])) { $gradient_info['info']['rx'] = $gradient_info['info']['r'] / $w; }
+				if (isset($gradient_info['info']['r'])) { $gradient_info['info']['ry'] = $gradient_info['info']['r'] / $h; }
+			}
+
+			if ($gradient_info['info']['x0'] || $gradient_info['info']['x0']===0) { $x0 = $gradient_info['info']['x0']; }
+			else { $x0 = 0.5; }
+			if ($gradient_info['info']['y0'] || $gradient_info['info']['y0']===0) { $y0 = $gradient_info['info']['y0']; }
+			else { $y0 = 0.5; }
+			if ($gradient_info['info']['rx'] || $gradient_info['info']['rx']===0) { $rx = $gradient_info['info']['rx']; }
+			else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $rx = $gradient_info['info']['r']; }
+			else { $rx = 0.5; }
+			if ($gradient_info['info']['ry'] || $gradient_info['info']['ry']===0) { $ry = $gradient_info['info']['ry']; }
+			else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $ry = $gradient_info['info']['r']; }
+			else { $ry = 0.5; }
+			if ($gradient_info['info']['x1'] || $gradient_info['info']['x1']===0) { $x1 = $gradient_info['info']['x1']; }
+			else { $x1 = $x0; }
+			if ($gradient_info['info']['y1'] || $gradient_info['info']['y1']===0) { $y1 = $gradient_info['info']['y1']; }
+			else { $y1 = $y0; }
+
+			if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
+			if (stristr($x0, '%')!== false) { $x0 = ($x0+0)/100; }
+			if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
+			if (stristr($y0, '%')!== false) { $y0 = ($y0+0)/100; }
+			if (stristr($rx, '%')!== false) { $rx = ($rx+0)/100; }
+			if (stristr($ry, '%')!== false) { $ry = ($ry+0)/100; }
+
+			$r = $rx;
+
+			$a = $w;	// width
+			$b = 0;
+			$c = 0;
+			$d = -$h;		// -height
+			$e = $x_offset;	// x- offset
+			$f = -$y_offset;	// -y-offset
+
+			$return .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f cm ', $a*$this->kp, $b, $c, $d*$this->kp, $e*$this->kp, $f*$this->kp);
+
+
+			// x1 and y1 (fx, fy) should be inside the circle defined by x0 y0 and r else error in mPDF
+			while (pow(($x1-$x0),2) + pow(($y1 - $y0),2) >= pow($r,2)) { $r += 0.05; }
+
+			// mPDF 4.4.007   Gradient STOPs
+			$stops = count($gradient_info['color']);
+			if ($stops < 2) { return ''; }
+			for ($i=0; $i<($stops-1); $i++) {
+				$first_stop = $gradient_info['color'][$i]['offset'];
+				$last_stop = $gradient_info['color'][($i+1)]['offset'];
+				if (stristr($first_stop, '%')!== false) { $first_stop = ($first_stop+0)/100; }
+				if (stristr($last_stop, '%')!== false) { $last_stop = ($last_stop+0)/100; }
+				if ($first_stop < 0) { $first_stop = 0; }
+				if ($last_stop > 1) { $last_stop = 1; }
+				if ($last_stop < $first_stop) { $last_stop = $first_stop; }
+				$grx1 = $x1 + ($x0-$x1)*$first_stop;
+				$gry1 = $y1 + ($y0-$y1)*$first_stop;
+				$grx2 = $x1 + ($x0-$x1)*$last_stop;
+				$gry2 = $y1 + ($y0-$y1)*$last_stop;
+				$grir = $r*$first_stop;
+				$grr = $r*$last_stop;
+
+				$this->mpdf_ref->gradients[$n+$i]['type'] = 3;
+				$this->mpdf_ref->gradients[$n+$i]['coords']=array($grx1, $gry1, $grx2, $gry2, abs($grr), abs($grir)  );
+
+				if (!$gradient_info['color'][$i]['color']) { $gradient_info['color'][$i]['color'] = '0 0 0'; }
+				if (!$gradient_info['color'][$i+1]['color']) { $gradient_info['color'][$i+1]['color'] = '0 0 0'; }
+				$this->mpdf_ref->gradients[$n+$i]['col1'] = $gradient_info['color'][$i]['color'];
+				$this->mpdf_ref->gradients[$n+$i]['col2'] = $gradient_info['color'][$i+1]['color'];
+
+				if ($i == 0 && $i == ($stops-2) )
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('true','true');
+				else if ($i == 0 )
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('true','false');
+				else if ($i == ($stops-2) )
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('false','true');
+				else 
+					$this->mpdf_ref->gradients[$n+$i]['extend']=array('false','false');
+				$return .= '/Sh'.($n+$i).' sh ';
+			}
+			$return .= ' Q ';
+
+
+		}
+
+		return $return;
+	}
+
+
+	function svgOffset ($attribs){
+		// save all <svg> tag attributes
+		$this->svg_attribs = $attribs;
+		if(isset($this->svg_attribs['viewBox'])) {
+			$vb = preg_split('/\s+/is', trim($this->svg_attribs['viewBox']));
+			if (count($vb)==4) {
+				$this->svg_info['x'] = $vb[0];
+				$this->svg_info['y'] = $vb[1];
+				$this->svg_info['w'] = $vb[2];
+				$this->svg_info['h'] = $vb[3];
+				return;
+			}
+		}
+
+		$svg_w = $this->mpdf_ref->ConvertSize($attribs['width']);	// mm (interprets numbers as pixels)
+		$svg_h = $this->mpdf_ref->ConvertSize($attribs['height']);	// mm
+
+		// Added to handle file without height or width specified
+		if (!$svg_w && !$svg_h) { $svg_w = $svg_h = $this->mpdf_ref->blk[$this->mpdf_ref->blklvl]['inner_width'] ; }	// DEFAULT
+		if (!$svg_w) { $svg_w = $svg_h; }
+		if (!$svg_h) { $svg_h = $svg_w; }
+
+		$this->svg_info['x'] = 0;
+		$this->svg_info['y'] = 0;
+		$this->svg_info['w'] = $svg_w/0.2645;	// mm->pixels
+		$this->svg_info['h'] = $svg_h/0.2645;	// mm->pixels
+	}
+
+
+	//
+	// check if points are within svg, if not, set to max
+	function svg_overflow($x,$y)
+	{
+		$x2 = $x;
+		$y2 = $y;
+		if(isset($this->svg_attribs['overflow']))
+		{
+			if($this->svg_attribs['overflow'] == 'hidden')
+			{
+				// Not sure if this is supposed to strip off units, but since I dont use any I will omlt this step
+				$svg_w = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['width']);
+				$svg_h = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['height']);
+				
+				// $xmax = floor($this->svg_attribs['width']);
+				$xmax = floor($svg_w);
+				$xmin = 0;
+				// $ymax = floor(($this->svg_attribs['height'] * -1));
+				$ymax = floor(($svg_h * -1));
+				$ymin = 0;
+
+				if($x > $xmax) $x2 = $xmax; // right edge
+				if($x < $xmin) $x2 = $xmin; // left edge
+				if($y < $ymax) $y2 = $ymax; // bottom 
+				if($y > $ymin) $y2 = $ymin; // top 
+
+			}
+		}
+
+
+		return array( 'x' => $x2, 'y' => $y2);
+	}
+
+
+
+	function svgDefineStyle($critere_style){
+
+		$tmp = count($this->svg_style)-1;
+		$current_style = $this->svg_style[$tmp];
+
+		unset($current_style['transformations']);
+
+		// TRANSFORM SCALE
+		$transformations = '';
+		if (isset($critere_style['transform'])){
+			preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$critere_style['transform'],$m);
+			if (count($m[0])) {
+				for($i=0; $i<count($m[0]); $i++) {
+					$c = strtolower($m[1][$i]);
+					$v = trim($m[2][$i]);
+					$vv = preg_split('/[ ,]+/',$v);
+					if ($c=='matrix' && count($vv)==6) {
+						$transformations .= sprintf(' %.3f %.3f %.3f %.3f %.3f %.3f cm ', $vv[0], $vv[1], $vv[2], $vv[3], $vv[4]*$this->kp, $vv[5]*$this->kp);
+					}
+					else if ($c=='translate' && count($vv)) {
+						$tm[4] = $vv[0];
+						if (count($vv)==2) { $t_y = -$vv[1]; }
+						else { $t_y = 0; }
+						$tm[5] = $t_y;
+						$transformations .= sprintf(' 1 0 0 1 %.3f %.3f cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
+					}
+					else if ($c=='scale' && count($vv)) {
+						if (count($vv)==2) { $s_y = $vv[1]; }
+						else { $s_y = $vv[0]; }
+						$tm[0] = $vv[0];
+						$tm[3] = $s_y;
+						$transformations .= sprintf(' %.3f 0 0 %.3f 0 0 cm ', $tm[0], $tm[3]);
+					}
+					else if ($c=='rotate' && count($vv)) {
+						$tm[0] = cos(deg2rad(-$vv[0]));
+						$tm[1] = sin(deg2rad(-$vv[0]));
+						$tm[2] = -$tm[1];
+						$tm[3] = $tm[0];
+						if (count($vv)==3) {
+							$transformations .= sprintf(' 1 0 0 1 %.3f %.3f cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
+						}
+						$transformations .= sprintf(' %.3f %.3f %.3f %.3f 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
+						if (count($vv)==3) {
+							$transformations .= sprintf(' 1 0 0 1 %.3f %.3f cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
+						}
+					}
+					else if ($c=='skewx' && count($vv)) {
+						$tm[2] = tan(deg2rad(-$vv[0]));
+						$transformations .= sprintf(' 1 0 %.3f 1 0 0 cm ', $tm[2]);
+					}
+					else if ($c=='skewy' && count($vv)) {
+						$tm[1] = tan(deg2rad(-$vv[0]));
+						$transformations .= sprintf(' 1 %.3f 0 1 0 0 cm ', $tm[1]);
+					}
+
+				}
+			}
+			$current_style['transformations'] = $transformations;
+		}
+
+		if (isset($critere_style['style'])){
+			if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+				$current_style['fill'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+			}
+			else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);	// mPDF 4.4.003
+				if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
+			}
+
+			$tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
+
+			$tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
+
+			if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+				$current_style['stroke'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+			}
+			else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+				if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
+			}
+			
+			$tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
+
+			$tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
+			
+			$tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
+			
+			$tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
+			
+			$tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
+
+			// mPDF 4.4.003
+			$tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
+
+			// mPDF 4.4.003
+			$tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
+
+		}
+		if(isset($critere_style['fill'])){
+			$current_style['fill'] = $critere_style['fill'];
+		}
+
+		if(isset($critere_style['fill-opacity'])){
+			$current_style['fill-opacity'] = $critere_style['fill-opacity'];
+		}
+
+		if(isset($critere_style['fill-rule'])){
+			$current_style['fill-rule'] = $critere_style['fill-rule'];
+		}
+
+		if(isset($critere_style['stroke'])){
+			$current_style['stroke'] = $critere_style['stroke'];
+		}
+
+		if(isset($critere_style['stroke-linecap'])){
+			$current_style['stroke-linecap'] = $critere_style['stroke-linecap'];
+		}
+
+		if(isset($critere_style['stroke-linejoin'])){
+			$current_style['stroke-linejoin'] = $critere_style['stroke-linejoin'];
+		}
+
+		if(isset($critere_style['stroke-miterlimit'])){
+			$current_style['stroke-miterlimit'] = $critere_style['stroke-miterlimit'];
+		}
+
+		if(isset($critere_style['stroke-opacity'])){
+			$current_style['stroke-opacity'] = $critere_style['stroke-opacity'];
+		}
+
+		if(isset($critere_style['stroke-width'])){
+			$current_style['stroke-width'] = $critere_style['stroke-width'];
+		}
+
+		// mPDF 4.4.003
+		if(isset($critere_style['stroke-dasharray'])){
+			$current_style['stroke-dasharray'] = $critere_style['stroke-dasharray'];
+		}
+		if(isset($critere_style['stroke-dashoffset'])){
+			$current_style['stroke-dashoffset'] = $critere_style['stroke-dashoffset'];
+		}
+
+		// mPDF 4.4.005   Used as indirect setting for currentColor
+		if(isset($critere_style['color']) && $critere_style['color'] != 'inherit'){
+			$current_style['color'] = $critere_style['color'];
+		}
+
+		return $current_style;
+
+	}
+
+	//
+	//	Cette fonction ecrit le style dans le stream svg.
+	function svgStyle($critere_style, $attribs, $element){
+		$path_style = '';
+		if (substr_count($critere_style['fill'],'url')>0){
+			//
+			// couleur degradé
+			$id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['fill']);
+			if ($id_gradient != $critere_style['fill']) {
+			   if (isset($this->svg_gradient[$id_gradient])) {
+				$fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
+				if ($fill_gradient) {	// mPDF 4.4.003
+					$path_style = "q ";
+					$w = "W";
+					$style .= 'N';
+				}
+			   }
+			}
+
+		}
+		// mPDF 4.4.005   Used as indirect setting for currentColor
+		else if (strtolower($critere_style['fill']) == 'currentcolor'){
+			$col = $this->mpdf_ref->ConvertColor($critere_style['color']);
+			if ($col) {
+				$path_style .= sprintf('%.3f %.3f %.3f rg ',$col['R']/255,$col['G']/255,$col['B']/255);
+				$style .= 'F';
+			}
+		}
+		else if ($critere_style['fill'] != 'none'){
+			//	fill couleur pleine
+			$col = $this->mpdf_ref->ConvertColor($critere_style['fill']);
+			if ($col) {
+				$path_style .= sprintf('%.3f %.3f %.3f rg ',$col['R']/255,$col['G']/255,$col['B']/255);
+				$style .= 'F';
+			}
+		}
+
+		// mPDF 4.4.005   Used as indirect setting for currentColor
+		if (strtolower($critere_style['stroke']) == 'currentcolor'){
+			$col = $this->mpdf_ref->ConvertColor($critere_style['color']);
+			if ($col) {
+				$path_style .= sprintf('%.3f %.3f %.3f RG ',$col['R']/255,$col['G']/255,$col['B']/255);
+				$style .= 'D';
+				$lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);
+				$path_style .= sprintf('%.3f w ',$lw*$this->kp);
+			}
+		}
+		else if ($critere_style['stroke'] != 'none'){
+			$col = $this->mpdf_ref->ConvertColor($critere_style['stroke']);
+			if ($col) {
+				$path_style .= sprintf('%.3f %.3f %.3f RG ',$col['R']/255,$col['G']/255,$col['B']/255);
+				$style .= 'D';
+				$lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);	// mPDF 4.4.003 
+				$path_style .= sprintf('%.3f w ',$lw*$this->kp);
+			}
+		}
+
+
+	if ($critere_style['stroke'] != 'none'){
+		if ($critere_style['stroke-linejoin'] == 'miter'){
+			$path_style .= ' 0 j ';
+		}
+		else if ($critere_style['stroke-linejoin'] == 'round'){
+			$path_style .= ' 1 j ';
+		}
+		else if ($critere_style['stroke-linejoin'] == 'bevel'){
+			$path_style .= ' 2 j ';
+		}
+
+		if ($critere_style['stroke-linecap'] == 'butt'){
+			$path_style .= ' 0 J ';
+		}
+		else if ($critere_style['stroke-linecap'] == 'round'){
+			$path_style .= ' 1 J ';
+		}
+		else if ($critere_style['stroke-linecap'] == 'square'){
+			$path_style .= ' 2 J ';
+		}
+
+		if (isset($critere_style['stroke-miterlimit'])){
+		   if ($critere_style['stroke-miterlimit'] == 'none'){
+		   }
+		   else if (preg_match('/^[\d.]+$/',$critere_style['stroke-miterlimit'])) {
+			$path_style .= sprintf('%.2f M ',$critere_style['stroke-miterlimit']);
+		   }
+		}
+		// mPDF 4.4.003
+		if (isset($critere_style['stroke-dasharray'])){
+			$off = 0;
+			$d = preg_split('/[ ,]/',$critere_style['stroke-dasharray']);
+			if (count($d) == 1 && $d[0]==0) {
+				$path_style .= '[] 0 d ';
+			}
+			else {
+			  if (count($d) % 2 == 1) { $d = array_merge($d, $d); }	// 5, 3, 1 => 5,3,1,5,3,1  OR 3 => 3,3
+			  $arr = '';
+			  for($i=0; $i<count($d); $i+=2) {
+				$arr .= sprintf('%.3f %.3f ', $d[$i]*$this->kp, $d[$i+1]*$this->kp);
+			  }
+			  if (isset($critere_style['stroke-dashoffset'])){ $off = $critere_style['stroke-dashoffset'] + 0; }
+			  $path_style .= sprintf('[%s] %.3f d ', $arr, $off*$this->kp);
+			}
+		}
+	}
+
+		// mPDF 4.4.003
+		if ($critere_style['fill-rule']=='evenodd') { $fr = '*'; }
+		else { $fr = ''; }
+
+		// mPDF 4.4.003
+		if (isset($critere_style['fill-opacity'])) {
+			$opacity = 1;
+			if ($critere_style['fill-opacity'] == 0) { $opacity = 0; }
+			else if ($critere_style['fill-opacity'] > 1) { $opacity = 1; }
+			else if ($critere_style['fill-opacity'] > 0) { $opacity = $critere_style['fill-opacity']; }
+			else if ($critere_style['fill-opacity'] < 0) { $opacity = 0; }
+			$gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
+			$path_style .= sprintf(' /GS%d gs ', $gs);
+		}
+
+		// mPDF 4.4.003
+		if (isset($critere_style['stroke-opacity'])) {
+			$opacity = 1;
+			if ($critere_style['stroke-opacity'] == 0) { $opacity = 0; }
+			else if ($critere_style['stroke-opacity'] > 1) { $opacity = 1; }
+			else if ($critere_style['stroke-opacity'] > 0) { $opacity = $critere_style['stroke-opacity']; }
+			else if ($critere_style['stroke-opacity'] < 0) { $opacity = 0; }
+			$gs = $this->mpdf_ref->AddExtGState(array('CA'=>$opacity, 'BM'=>'/Normal'));
+			$path_style .= sprintf(' /GS%d gs ', $gs);
+		}
+
+		switch ($style){
+			case 'F':
+				$op = 'f';
+			break;
+			case 'FD':
+				$op = 'B';
+			break;
+			case 'ND':
+				$op = 'S';
+			break;
+			case 'D':
+				$op = 'S';
+			break;
+			default:
+				$op = 'n';
+		}
+
+		$final_style = "$path_style $w $op$fr  $fill_gradient \n";
+		// echo 'svgStyle: '. $final_style .'<br><br>';
+
+		return $final_style;
+
+	}
+
+	//
+	//	fonction retracant les <path />
+	function svgPath($command, $arguments){
+
+		$path_cmd = '';
+		$newsubpath = false;	// mPDF 4.4.003
+
+
+		// mPDF 4.4.003
+		preg_match_all('/[\-^]?[\d.]+(e[\-]?[\d]+){0,1}/i', $arguments, $a, PREG_SET_ORDER);
+
+		//	if the command is a capital letter, the coords go absolute, otherwise relative
+		if(strtolower($command) == $command) $relative = true;
+		else $relative = false;
+
+
+		$ile_argumentow = count($a);
+
+		//	each command may have different needs for arguments [1 to 8]
+
+		switch(strtolower($command)){
+			case 'm': // move
+				for($i = 0; $i<$ile_argumentow; $i+=2){
+					$x = $a[$i][0]; 
+					$y = $a[$i+1][0]; 
+					if($relative){
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$pdfx = $x;
+						$pdfy =  -$y ;
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					if($i == 0) $path_cmd .= sprintf('%.3f %.3f m ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+					else $path_cmd .= sprintf('%.3f %.3f l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+					// mPDF 4.4.003  Save start points of subpath
+					if ($this->subPathInit) { 
+						$this->spxstart = $this->xbase;
+						$this->spystart = $this->ybase;
+						$this->subPathInit = false;
+					}
+				}
+			break;
+			case 'l': // a simple line
+				for($i = 0; $i<$ile_argumentow; $i+=2){
+					$x = ($a[$i][0]); 
+					$y = ($a[$i+1][0]); 
+					if($relative){
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$pdfx = $x ;
+						$pdfy =  -$y ;
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					$path_cmd .= sprintf('%.3f %.3f l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+				}
+			break;
+			case 'h': // a very simple horizontal line
+				for($i = 0; $i<$ile_argumentow; $i++){
+					$x = ($a[$i][0]); 
+					if($relative){
+						$y = 0;
+						$pdfx = ($this->xbase + $x) ;
+						$pdfy = ($this->ybase - $y) ;
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$y = -$this->ybase;
+						$pdfx = $x;
+						$pdfy =  -$y;
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					$path_cmd .= sprintf('%.3f %.3f l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+				}
+			break;
+			case 'v': // the simplest line, vertical
+				for($i = 0; $i<$ile_argumentow; $i++){
+					$y = ($a[$i][0]); 
+					if($relative){
+						$x = 0;
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$x = $this->xbase;
+						$pdfx = $x;
+						$pdfy =  -$y;
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					$path_cmd .= sprintf('%.3f %.3f l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+				}
+			break;
+			case 's': // bezier with first vertex equal first control
+			   // mPDF 4.4.003 
+			   if (!($this->lastcommand == 'C' || $this->lastcommand == 'c' || $this->lastcommand == 'S' || $this->lastcommand == 's')) {
+ 				$this->lastcontrolpoints = array(0,0);
+			   }
+				for($i = 0; $i<$ile_argumentow; $i += 4){
+					$x1 = $this->lastcontrolpoints[0];
+					$y1 = $this->lastcontrolpoints[1];
+					$x2 = ($a[$i][0]); 
+					$y2 = ($a[$i+1][0]); 
+					$x = ($a[$i+2][0]); 
+					$y = ($a[$i+3][0]); 
+					if($relative){
+						$pdfx1 = ($this->xbase + $x1);
+						$pdfy1 = ($this->ybase - $y1);
+						$pdfx2 = ($this->xbase + $x2);
+						$pdfy2 = ($this->ybase - $y2);
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$pdfx1 = $this->xbase + $x1;
+						$pdfy1 = $this->ybase -$y1;
+						$pdfx2 = $x2;
+						$pdfy2 = -$y2;
+						$pdfx = $x;
+						$pdfy =  -$y;
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));	// mPDF 4.4.003 always relative
+
+					// $pdf_pt2 = $this->svg_overflow($pdfx2,$pdfy2);
+					// $pdf_pt1 = $this->svg_overflow($pdfx1,$pdfy1);
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
+					{
+						$path_cmd .= sprintf('%.3f %.3f l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+					}
+					else
+					{
+						$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+					}
+
+			   }
+			break;
+			case 'c': // bezier with second vertex equal second control
+			for($i = 0; $i<$ile_argumentow; $i += 6){
+					$x1 = ($a[$i][0]); 
+					$y1 = ($a[$i+1][0]); 
+					$x2 = ($a[$i+2][0]); 
+					$y2 = ($a[$i+3][0]); 
+					$x = ($a[$i+4][0]); 
+					$y = ($a[$i+5][0]); 
+					if($relative){
+						$pdfx1 = ($this->xbase + $x1);
+						$pdfy1 = ($this->ybase - $y1);
+						$pdfx2 = ($this->xbase + $x2);
+						$pdfy2 = ($this->ybase - $y2);
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$pdfx1 = $x1;
+						$pdfy1 = -$y1;
+						$pdfx2 = $x2;
+						$pdfy2 = -$y2;
+						$pdfx = $x;
+						$pdfy =  -$y;
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));	// mPDF 4.4.003 always relative
+					// $pdf_pt2 = $this->svg_overflow($pdfx2,$pdfy2);
+					// $pdf_pt1 = $this->svg_overflow($pdfx1,$pdfy1);
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
+					{
+						$path_cmd .= sprintf('%.3f %.3f l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+					}
+					else
+					{
+						$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+					}
+
+				}
+			break;
+
+			case 'q': // bezier quadratic avec point de control
+				for($i = 0; $i<$ile_argumentow; $i += 4){
+					$x1 = ($a[$i][0]); 
+					$y1 = ($a[$i+1][0]); 
+					$x = ($a[$i+2][0]); 
+					$y = ($a[$i+3][0]); 
+					if($relative){
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+
+						$pdfx1 = ($this->xbase + ($x1*2/3));
+						$pdfy1 = ($this->ybase - ($y1*2/3));
+						// mPDF 4.4.003 
+    						$pdfx2 = $pdfx1 + 1/3 *($x); 
+    						$pdfy2 = $pdfy1 + 1/3 *(-$y) ;
+
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$pdfx = $x;
+						$pdfy =  -$y;
+
+						$pdfx1 = ($this->xbase+(($x1-$this->xbase)*2/3));
+						$pdfy1 = ($this->ybase-(($y1+$this->ybase)*2/3));
+
+						$pdfx2 = ($x+(($x1-$x)*2/3));
+						$pdfy2 = (-$y-(($y1-$y)*2/3));
+
+						// mPDF 4.4.003 
+    						$pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase); 
+    						$pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
+
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+					$this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));	// mPDF 4.4.003 always relative
+
+					// $pdf_pt2 = $this->svg_overflow($pdfx2,$pdfy2);
+					// $pdf_pt1 = $this->svg_overflow($pdfx1,$pdfy1);
+					$pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+					if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
+					{
+						$path_cmd .= sprintf('%.3f %.3f l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+					}
+					else
+					{
+						$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+					}
+				}
+			break;
+			case 't': // bezier quadratic avec point de control simetrique a lancien point de control
+			   // mPDF 4.4.003 
+			   if (!($this->lastcommand == 'Q' || $this->lastcommand == 'q' || $this->lastcommand == 'T' || $this->lastcommand == 't')) {
+ 				$this->lastcontrolpoints = array(0,0);
+			   }
+				for($i = 0; $i<$ile_argumentow; $i += 2){
+					$x = ($a[$i][0]); 
+					$y = ($a[$i+1][0]); 
+
+					$x1 = $this->lastcontrolpoints[0];
+					$y1 = $this->lastcontrolpoints[1];
+
+					if($relative){
+						$pdfx = ($this->xbase + $x);
+						$pdfy = ($this->ybase - $y);
+
+						$pdfx1 = ($this->xbase + ($x1));	// mPDF 4.4.003 
+						$pdfy1 = ($this->ybase - ($y1));	// mPDF 4.4.003 
+						// mPDF 4.4.003 
+    						$pdfx2 = $pdfx1 + 1/3 *($x); 
+    						$pdfy2 = $pdfy1 + 1/3 *(-$y) ;
+
+						$this->xbase += $x;
+						$this->ybase += -$y;
+					}
+					else{
+						$pdfx = $x;
+						$pdfy =  -$y;
+
+						$pdfx1 = ($this->xbase + ($x1));	// mPDF 4.4.003 
+						$pdfy1 = ($this->ybase - ($y1));	// mPDF 4.4.003 
+						// mPDF 4.4.003 
+    						$pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase); 
+    						$pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
+
+						$this->xbase = $x;
+						$this->ybase = -$y;
+					}
+
+					$this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));	// mPDF 4.4.003 always relative
+
+					$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+				}
+
+			break;
+			case 'a':	// Elliptical arc
+				for($i = 0; $i<$ile_argumentow; $i += 7){
+					$rx = ($a[$i][0]); 
+					$ry = ($a[$i+1][0]); 
+					$angle = ($a[$i+2][0]); //x-axis-rotation 
+					$largeArcFlag = ($a[$i+3][0]); 
+					$sweepFlag = ($a[$i+4][0]); 
+					$x2 = ($a[$i+5][0]); 
+					$y2 = ($a[$i+6][0]); 
+					$x1 = $this->xbase;
+					$y1 = -$this->ybase;
+					if($relative){
+						$x2 = $this->xbase + $x2;
+						$y2 = -$this->ybase + $y2;
+						$this->xbase += ($a[$i+5][0]); 
+						$this->ybase += -($a[$i+6][0]); 
+					}
+					else{
+						$this->xbase = $x2;
+						$this->ybase = -$y2;
+					}
+					$path_cmd .= $this->Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag);
+
+				}
+			break;
+			case'z':
+				$path_cmd .= 'h ';
+				// mPDF 4.4.003
+				$this->subPathInit = true;
+				$newsubpath = true;
+				$this->xbase = $this->spxstart;
+				$this->ybase = $this->spystart;
+			break;
+			default:
+			break;
+			}
+
+		if (!$newsubpath) { $this->subPathInit = false; }	// mPDF 4.4.003
+		$this->lastcommand = $command;
+
+		return $path_cmd;
+
+	}
+
+function Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag) {
+
+	// 1. Treat out-of-range parameters as described in
+	// http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
+	// If the endpoints (x1, y1) and (x2, y2) are identical, then this
+	// is equivalent to omitting the elliptical arc segment entirely
+	if ($x1 == $x2 && $y1 == $y2) return '';
+
+	// If rX = 0 or rY = 0 then this arc is treated as a straight line
+	// segment (a "lineto") joining the endpoints.
+	if ($rx == 0.0 || $ry == 0.0) {
+	//   return Lineto(x2, y2);	// ****
+	}
+
+	// If rX or rY have negative signs, these are dropped; the absolute
+	// value is used instead.
+	if ($rx<0.0) $rx = -$rx;
+	if ($ry<0.0) $ry = -$ry;
+
+	// 2. convert to center parameterization as shown in
+	// http://www.w3.org/TR/SVG/implnote.html
+	$sinPhi = sin(deg2rad($angle));
+	$cosPhi = cos(deg2rad($angle));
+
+	$x1dash =  $cosPhi * ($x1-$x2)/2.0 + $sinPhi * ($y1-$y2)/2.0;
+	$y1dash = -$sinPhi * ($x1-$x2)/2.0 + $cosPhi * ($y1-$y2)/2.0;
+
+
+	$numerator = $rx*$rx*$ry*$ry - $rx*$rx*$y1dash*$y1dash - $ry*$ry*$x1dash*$x1dash;
+
+	if ($numerator < 0.0) { 
+		//  If rX , rY and are such that there is no solution (basically,
+		//  the ellipse is not big enough to reach from (x1, y1) to (x2,
+		//  y2)) then the ellipse is scaled up uniformly until there is
+		//  exactly one solution (until the ellipse is just big enough).
+
+		// -> find factor s, such that numerator' with rx'=s*rx and
+		//    ry'=s*ry becomes 0 :
+		$s = sqrt(1.0 - $numerator/($rx*$rx*$ry*$ry));
+
+		$rx *= $s;
+		$ry *= $s;
+		$root = 0.0;
+
+	}
+	else {
+		$root = ($largeArcFlag == $sweepFlag ? -1.0 : 1.0) * sqrt( $numerator/($rx*$rx*$y1dash*$y1dash+$ry*$ry*$x1dash*$x1dash) );
+	}
+
+	$cxdash = $root*$rx*$y1dash/$ry;
+	$cydash = -$root*$ry*$x1dash/$rx;
+
+	$cx = $cosPhi * $cxdash - $sinPhi * $cydash + ($x1+$x2)/2.0;
+	$cy = $sinPhi * $cxdash + $cosPhi * $cydash + ($y1+$y2)/2.0;
+
+
+	$theta1 = $this->CalcVectorAngle(1.0, 0.0, ($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry);
+	$dtheta = $this->CalcVectorAngle(($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry, (-$x1dash-$cxdash)/$rx, (-$y1dash-$cydash)/$ry);
+	if (!$sweepFlag && $dtheta>0)
+		$dtheta -= 2.0*M_PI;
+	else if ($sweepFlag && $dtheta<0)
+		$dtheta += 2.0*M_PI;
+
+	// 3. convert into cubic bezier segments <= 90deg
+	$segments = ceil(abs($dtheta/(M_PI/2.0)));
+	$delta = $dtheta/$segments;
+	$t = 8.0/3.0 * sin($delta/4.0) * sin($delta/4.0) / sin($delta/2.0);
+	$coords = array();
+	for ($i = 0; $i < $segments; $i++) {
+		$cosTheta1 = cos($theta1);
+		$sinTheta1 = sin($theta1);
+		$theta2 = $theta1 + $delta;
+		$cosTheta2 = cos($theta2);
+		$sinTheta2 = sin($theta2);
+
+		// a) calculate endpoint of the segment:
+		$xe = $cosPhi * $rx*$cosTheta2 - $sinPhi * $ry*$sinTheta2 + $cx;
+		$ye = $sinPhi * $rx*$cosTheta2 + $cosPhi * $ry*$sinTheta2 + $cy;
+
+		// b) calculate gradients at start/end points of segment:
+		$dx1 = $t * ( - $cosPhi * $rx*$sinTheta1 - $sinPhi * $ry*$cosTheta1);
+		$dy1 = $t * ( - $sinPhi * $rx*$sinTheta1 + $cosPhi * $ry*$cosTheta1);
+
+		$dxe = $t * ( $cosPhi * $rx*$sinTheta2 + $sinPhi * $ry*$cosTheta2);
+		$dye = $t * ( $sinPhi * $rx*$sinTheta2 - $cosPhi * $ry*$cosTheta2);
+
+		// c) draw the cubic bezier:
+		$coords[$i] = array(($x1+$dx1), ($y1+$dy1), ($xe+$dxe), ($ye+$dye), $xe, $ye);
+
+		// do next segment
+		$theta1 = $theta2;
+		$x1 = $xe;
+		$y1 = $ye;
+	}
+	$path = ' ';
+	foreach($coords AS $c) {
+		$cpx1 = $c[0];
+		$cpy1 = $c[1];
+		$cpx2 = $c[2];
+		$cpy2 = $c[3];
+		$x2 = $c[4];
+		$y2 = $c[5];
+		$path .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $cpx1*$this->kp, -$cpy1*$this->kp, $cpx2*$this->kp, -$cpy2*$this->kp, $x2*$this->kp, -$y2*$this->kp)  ."\n";
+	}
+	return $path ;
+}
+
+
+	function CalcVectorAngle($ux, $uy, $vx, $vy) {
+		$ta = atan2($uy, $ux);
+		$tb = atan2($vy, $vx);
+		if ($tb >= $ta)
+			return ($tb-$ta);
+		return (6.28318530718 - ($ta-$tb));
+	}
+
+
+	// mPDF 4.4.003
+	function ConvertSVGSizePixels($size=5,$maxsize='x'){
+	// maxsize in pixels (user units) or 'y' or 'x'
+	// e.g. $w = $this->ConvertSVGSizePixels($arguments['w'],$this->svg_info['w']*(25.4/$this->mpdf_ref->dpi));
+	// usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
+	// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
+	// For text $maxsize = Fontsize
+	// Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
+
+		if ($maxsize == 'y') { $maxsize = $this->svg_info['h']; }
+		else if ($maxsize == 'x') { $maxsize = $this->svg_info['w']; }
+		$maxsize *= (25.4/$this->mpdf_ref->dpi);	// convert pixels to mm
+		$fontsize=$this->mpdf_ref->FontSize;
+
+		//Return as pixels
+		$size = $this->mpdf_ref->ConvertSize($size,$maxsize,$fontsize,false) * 1/(25.4/$this->mpdf_ref->dpi);
+		return $size;
+	}
+
+	// mPDF 4.4.003
+	function ConvertSVGSizePts($size=5){
+	// usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
+	// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
+	// For text $maxsize = Fontsize
+	// Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
+
+		$maxsize=$this->mpdf_ref->FontSize;
+		//Return as pts
+		$size = $this->mpdf_ref->ConvertSize($size,$maxsize,false,true) * 72/25.4;
+		return $size;
+	}
+
+
+	//
+	//	fonction retracant les <rect />
+	function svgRect($arguments){
+
+		if ($arguments['h']==0 || $arguments['w']==0) { return ''; }	// mPDF 4.4.003
+
+		$x = $this->ConvertSVGSizePixels($arguments['x'],'x');	// mPDF 4.4.003 
+		$y = $this->ConvertSVGSizePixels($arguments['y'],'y');	// mPDF 4.4.003 
+		$h = $this->ConvertSVGSizePixels($arguments['h'],'y');	// mPDF 4.4.003 
+		$w = $this->ConvertSVGSizePixels($arguments['w'],'x');	// mPDF 4.4.003 
+		$rx = $this->ConvertSVGSizePixels($arguments['rx'],'x');	// mPDF 4.4.003 
+		$ry = $this->ConvertSVGSizePixels($arguments['ry'],'y');	// mPDF 4.4.003 
+
+		if ($rx > $w/2) { $rx = $w/2; }	// mPDF 4.4.003
+		if ($ry > $h/2) { $ry = $h/2; }	// mPDF 4.4.003
+
+		if ($rx>0 and $ry == 0){$ry = $rx;}
+		if ($ry>0 and $rx == 0){$rx = $ry;}
+
+		if ($rx == 0 and $ry == 0){
+			//	trace un rectangle sans angle arrondit
+			$path_cmd = sprintf('%.3f %.3f m ', ($x*$this->kp), -($y*$this->kp));
+			$path_cmd .= sprintf('%.3f %.3f l ', (($x+$w)*$this->kp), -($y*$this->kp));
+			$path_cmd .= sprintf('%.3f %.3f l ', (($x+$w)*$this->kp), -(($y+$h)*$this->kp));
+			$path_cmd .= sprintf('%.3f %.3f l ', ($x)*$this->kp, -(($y+$h)*$this->kp));
+			$path_cmd .= sprintf('%.3f %.3f l h ', ($x*$this->kp), -($y*$this->kp));
+
+			
+		}
+		else {
+			//	trace un rectangle avec les arrondit
+			//	les points de controle du bezier sont deduis grace a la constante kappa
+			$kappa = 4*(sqrt(2)-1)/3;
+
+			$kx = $kappa*$rx;
+			$ky = $kappa*$ry;
+
+			$path_cmd = sprintf('%.3f %.3f m ', ($x+$rx)*$this->kp, -$y*$this->kp);
+			$path_cmd .= sprintf('%.3f %.3f l ', ($x+($w-$rx))*$this->kp, -$y*$this->kp);
+			$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', ($x+($w-$rx+$kx))*$this->kp, -$y*$this->kp, ($x+$w)*$this->kp, (-$y+(-$ry+$ky))*$this->kp, ($x+$w)*$this->kp, (-$y+(-$ry))*$this->kp );
+			$path_cmd .= sprintf('%.3f %.3f l ', ($x+$w)*$this->kp, (-$y+(-$h+$ry))*$this->kp);
+		 	$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', ($x+$w)*$this->kp, (-$y+(-$h-$ky+$ry))*$this->kp, ($x+($w-$rx+$kx))*$this->kp, (-$y+(-$h))*$this->kp, ($x+($w-$rx))*$this->kp, (-$y+(-$h))*$this->kp );
+
+			$path_cmd .= sprintf('%.3f %.3f l ', ($x+$rx)*$this->kp, (-$y+(-$h))*$this->kp);
+			$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', ($x+($rx-$kx))*$this->kp, (-$y+(-$h))*$this->kp, $x*$this->kp, (-$y+(-$h-$ky+$ry))*$this->kp, $x*$this->kp, (-$y+(-$h+$ry))*$this->kp );
+			$path_cmd .= sprintf('%.3f %.3f l ', $x*$this->kp, (-$y+(-$ry))*$this->kp);
+			$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c h ', $x*$this->kp, (-$y+(-$ry+$ky))*$this->kp, ($x+($rx-$kx))*$this->kp, -$y*$this->kp, ($x+$rx)*$this->kp, -$y*$this->kp );
+
+
+		}
+		return $path_cmd;
+	}
+
+	//
+	//	fonction retracant les <ellipse /> et <circle />
+	//	 le cercle est tracé grave a 4 bezier cubic, les poitn de controles
+	//	sont deduis grace a la constante kappa * rayon
+	function svgEllipse($arguments){
+		if ($arguments['rx']==0 || $arguments['ry']==0) { return ''; }	// mPDF 4.4.003
+
+		$kappa = 4*(sqrt(2)-1)/3;
+
+		$cx = $this->ConvertSVGSizePixels($arguments['cx'],'x');	// mPDF 4.4.003 
+		$cy = $this->ConvertSVGSizePixels($arguments['cy'],'y');	// mPDF 4.4.003 
+		$rx = $this->ConvertSVGSizePixels($arguments['rx'],'x');	// mPDF 4.4.003 
+		$ry = $this->ConvertSVGSizePixels($arguments['ry'],'y');	// mPDF 4.4.003 
+
+		$x1 = $cx;
+		$y1 = -$cy+$ry;
+
+		$x2 = $cx+$rx;
+		$y2 = -$cy;
+
+		$x3 = $cx;
+		$y3 = -$cy-$ry;
+
+		$x4 = $cx-$rx;
+		$y4 = -$cy;
+
+		$path_cmd = sprintf('%.3f %.3f m ', $x1*$this->kp, $y1*$this->kp);
+		$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', ($x1+($rx*$kappa))*$this->kp, $y1*$this->kp, $x2*$this->kp, ($y2+($ry*$kappa))*$this->kp, $x2*$this->kp, $y2*$this->kp);
+		$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $x2*$this->kp, ($y2-($ry*$kappa))*$this->kp, ($x3+($rx*$kappa))*$this->kp, $y3*$this->kp, $x3*$this->kp, $y3*$this->kp);
+		$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', ($x3-($rx*$kappa))*$this->kp, $y3*$this->kp, $x4*$this->kp, ($y4-($ry*$kappa))*$this->kp, $x4*$this->kp, $y4*$this->kp);
+		$path_cmd .= sprintf('%.3f %.3f %.3f %.3f %.3f %.3f c ', $x4*$this->kp, ($y4+($ry*$kappa))*$this->kp, ($x1-($rx*$kappa))*$this->kp, $y1*$this->kp, $x1*$this->kp, $y1*$this->kp);
+		$path_cmd .= 'h ';
+
+		return $path_cmd;
+
+	}
+
+	//
+	//	fonction retracant les <polyline /> et les <line />
+	function svgPolyline($arguments,$ispolyline=true){
+		if ($ispolyline) {
+			$xbase = $arguments[0] ;
+			$ybase = - $arguments[1] ;
+		}
+		else {
+			if ($arguments[0]==$arguments[2] && $arguments[1]==$arguments[3]) { return ''; }	// mPDF 4.4.003  Zero length line
+			$xbase = $this->ConvertSVGSizePixels($arguments[0],'x');	// mPDF 4.4.003 
+			$ybase = - $this->ConvertSVGSizePixels($arguments[1],'y');	// mPDF 4.4.003 
+		}
+		$path_cmd = sprintf('%.3f %.3f m ', $xbase*$this->kp, $ybase*$this->kp);
+		for ($i = 2; $i<count($arguments);$i += 2) {
+			if ($ispolyline) {
+				$tmp_x = $arguments[$i] ;
+				$tmp_y = - $arguments[($i+1)] ;
+			}
+			else {
+				$tmp_x = $this->ConvertSVGSizePixels($arguments[$i],'x') ;	// mPDF 4.4.003 
+				$tmp_y = - $this->ConvertSVGSizePixels($arguments[($i+1)],'y') ;	// mPDF 4.4.003 
+			}
+			$path_cmd .= sprintf('%.3f %.3f l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
+		}
+
+	//	$path_cmd .= 'h '; // ?? In error - don't close subpath here
+		return $path_cmd;
+
+	}
+
+	//
+	//	fonction retracant les <polygone />
+	function svgPolygon($arguments){
+		$xbase = $arguments[0] ;
+		$ybase = - $arguments[1] ;
+		$path_cmd = sprintf('%.3f %.3f m ', $xbase*$this->kp, $ybase*$this->kp);
+		for ($i = 2; $i<count($arguments);$i += 2) {
+			$tmp_x = $arguments[$i] ;
+			$tmp_y = - $arguments[($i+1)] ;
+
+			$path_cmd .= sprintf('%.3f %.3f l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
+
+		}
+		$path_cmd .= sprintf('%.3f %.3f l ', $xbase*$this->kp, $ybase*$this->kp);
+		$path_cmd .= 'h ';
+		return $path_cmd;
+
+	}
+
+	//
+	//	write string to image
+	function svgText() {
+		// $tmp = count($this->txt_style)-1;
+		$current_style = array_pop($this->txt_style);
+		$style = '';
+		$render = -1;
+		if(isset($this->txt_data[2]))
+		{
+			// select font
+			$style .= ($current_style['font-weight'] == 'bold')?'B':'';
+			$style .= ($current_style['font-style'] == 'italic')?'I':'';
+			$size = $current_style['font-size'];	// mPDF 4.4.003
+
+			// mPDF 4.5.010
+			if ($this->mpdf_ref->is_MB && $current_style['font-family'] == 'times') {
+				$current_style['font-family'] = $this->mpdf_ref->SetFont('serif',$style,$size,false);
+			}
+			else if ($this->mpdf_ref->is_MB && $current_style['font-family'] == 'courier') {
+				$current_style['font-family'] = $this->mpdf_ref->SetFont('mono',$style,$size,false);
+			}
+			else {
+				$current_style['font-family'] = $this->mpdf_ref->SetFont($current_style['font-family'],$style,$size,false);
+			}
+
+
+
+			// mPDF 4.4.003
+			if (isset($current_style['fill']) && $current_style['fill']!='none') {
+				$col = $this->mpdf_ref->ConvertColor($current_style['fill']);
+				$render = "0";	// Fill only
+			}
+			$strokestr = '';
+			if (isset($current_style['stroke-width']) && $current_style['stroke-width']>0 && $current_style['stroke']!='none') {
+				$scol = $this->mpdf_ref->ConvertColor($current_style['stroke']);
+				if ($scol) { $strokestr .= sprintf('%.3f %.3f %.3f RG ',$scol['R']/255,$scol['G']/255,$scol['B']/255); }
+				$linewidth = $this->ConvertSVGSizePixels($current_style['stroke-width']);
+				if ($linewidth > 0) { 
+					$strokestr .= sprintf('%.3f w 1 J 1 j ',$linewidth*$this->kp); 
+					if ($render == -1) { $render = "1"; }	// stroke only
+					else { $render = "2"; } 	// fill and stroke
+				}
+			}
+			if ($render == -1) { return ''; }	
+
+			$x = $this->ConvertSVGSizePixels($this->txt_data[0],'x');	// mPDF 4.4.003 
+			$y = $this->ConvertSVGSizePixels($this->txt_data[1],'y');	// mPDF 4.4.003
+			$txt = $this->txt_data[2];
+
+			// mPDF 4.4.003
+			$txt = preg_replace('/\f/','',$txt); 
+			$txt = preg_replace('/\r/','',$txt); 
+			$txt = preg_replace('/\n/',' ',$txt); 
+			$txt = preg_replace('/\t/',' ',$txt); 
+			$txt = preg_replace("/[ ]+/u",' ',$txt);
+
+			$txt = trim($txt);
+
+			$txt = $this->mpdf_ref->purify_utf8_text($txt);
+			if ($this->mpdf_ref->text_input_as_HTML) {
+				$txt = $this->mpdf_ref->all_entities_to_utf8($txt);
+			}
+			if (!$this->mpdf_ref->is_MB) { $txt = mb_convert_encoding($txt,$this->mpdf_ref->mb_enc,'UTF-8'); }
+			$this->mpdf_ref->magic_reverse_dir($txt);	
+			$this->mpdf_ref->ConvertIndic($txt);
+
+			if (preg_match("/([".$this->mpdf_ref->pregRTLchars."])/u", $txt)) { $this->mpdf_ref->biDirectional = true; } // mPDF 4.4.003
+
+
+			if ($current_style['text-anchor']=='middle') {
+				$tw = $this->mpdf_ref->GetStringWidth($txt)*$this->mpdf_ref->k/2;	// mPDF 4.4.003
+			}
+			else if ($current_style['text-anchor']=='end') {
+				$tw = $this->mpdf_ref->GetStringWidth($txt)*$this->mpdf_ref->k;	// mPDF 4.4.003
+			}
+			else $tw = 0;
+
+			if ($this->mpdf_ref->useSubsets && $this->mpdf_ref->CurrentFont['type']=='Type1subset' && !$this->mpdf_ref->isCJK && !$this->mpdf_ref->usingCoreFont) {
+				$txt = $this->mpdf_ref->UTF8toSubset($txt);
+			}
+			else {
+				if ($this->mpdf_ref->is_MB && !$this->mpdf_ref->usingCoreFont) {
+					$txt= $this->mpdf_ref->UTF8ToUTF16BE($txt, false);
+				}
+				$txt='('.$this->mpdf_ref->_escape($txt).')'; 
+			}
+			$this->mpdf_ref->CurrentFont['used']= true;
+
+			$pdfx = $x - $tw/$this->kp;	// mPDF 4.4.009
+			$pdfy =  -$y  ;
+			$xbase = $x;
+			$ybase = -$y;
+
+			// mPDF 4.4.003
+			$path_cmd =  sprintf('q BT /F%d %.3f Tf %.3f %.3f Td %s Tr %.3f %.3f %.3f rg %s %s Tj ET Q ',$this->mpdf_ref->CurrentFont['i'],$this->mpdf_ref->FontSizePt,$pdfx*$this->kp,$pdfy*$this->kp,$render,$col['R']/255,$col['G']/255,$col['B']/255,$strokestr,$txt);
+
+			unset($this->txt_data[0], $this->txt_data[1],$this->txt_data[2]);
+		}
+		else
+		{
+			return ' ';	// mPDF 4.4.010
+		}
+		$path_cmd .= 'h ';
+		return $path_cmd;
+	}
+
+
+function svgDefineTxtStyle($critere_style)
+{
+		// get copy of current/default txt style, and modify it with supplied attributes
+		$tmp = count($this->txt_style)-1;
+		$current_style = $this->txt_style[$tmp];
+
+		// mPDF 4.5.010
+		if (isset($critere_style['style'])){
+			if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+				$current_style['fill'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+			}
+			else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);	// mPDF 4.4.003
+				if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
+			}
+
+			$tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
+
+			$tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
+
+			if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+				$current_style['stroke'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+			}
+			else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+				if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
+			}
+			
+			$tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
+
+			$tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
+			
+			$tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
+			
+			$tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
+			
+			$tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
+
+			$tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
+
+			$tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+			if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
+
+		}
+
+		if (isset($critere_style['font'])){
+
+			// [ [ <'font-style'> || <'font-variant'> || <'font-weight'> ]?<'font-size'> [ / <'line-height'> ]? <'font-family'> ]
+
+			$tmp = preg_replace("/(.*)(italic|oblique)(.*)/i","$2",$critere_style['font']);
+			if ($tmp != $critere_style['font']){ 
+				if($tmp == 'oblique'){
+					$tmp = 'italic';
+				}
+				$current_style['font-style'] = $tmp;
+			}
+			$tmp = preg_replace("/(.*)(bold|bolder)(.*)/i","$2",$critere_style['font']);
+			if ($tmp != $critere_style['font']){ 
+				if($tmp == 'bolder'){
+					$tmp = 'bold';
+				}
+				$current_style['font-weight'] = $tmp;
+			}
+			
+			// select digits not followed by percent sign nor preceeded by forward slash
+			$tmp = preg_replace("/(.*)\b(\d+)[\b|\/](.*)/i","$2",$critere_style['font']);
+			if ($tmp != $critere_style['font']){ 
+				// mPDF 4.4.003
+				$current_style['font-size'] = $this->ConvertSVGSizePts($tmp); 
+				$this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
+			}
+			
+		}
+
+		if(isset($critere_style['fill'])){
+			$current_style['fill'] = $critere_style['fill'];
+		}
+		// mPDF 4.4.003
+		if(isset($critere_style['stroke'])){
+			$current_style['stroke'] = $critere_style['stroke'];
+		}
+		if(isset($critere_style['stroke-width'])){
+			$current_style['stroke-width'] = $critere_style['stroke-width'];
+		}
+		
+		if(isset($critere_style['font-style'])){
+			if(strtolower($critere_style['font-style']) == 'oblique') 
+			{
+				$critere_style['font-style'] = 'italic';
+			}
+			$current_style['font-style'] = $critere_style['font-style'];
+		}
+		
+		if(isset($critere_style['font-weight'])){
+			if(strtolower($critere_style['font-weight']) == 'bolder')
+			{
+				$critere_style['font-weight'] = 'bold';
+			}
+			$current_style['font-weight'] = $critere_style['font-weight'];
+		}
+		
+		if(isset($critere_style['font-size'])){
+			// mPDF 4.4.003
+			$current_style['font-size'] = $this->ConvertSVGSizePts($critere_style['font-size']);
+			$this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
+		}
+
+		if(isset($critere_style['font-family'])){
+			// mPDF 4.4.003
+			$v = $critere_style['font-family'];
+			$aux_fontlist = explode(",",$v);
+			$fonttype = trim($aux_fontlist[0]);
+			$fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+			$aux_fontlist = explode(" ",$fonttype);
+			$fonttype = $aux_fontlist[0];
+			$current_style['font-family'] = strtolower(trim($fonttype));
+		}
+	
+		if(isset($critere_style['text-anchor'])){
+			$current_style['text-anchor'] = $critere_style['text-anchor'];
+		}
+	
+	// add current style to text style array (will remove it later after writing text to svg_string)
+	array_push($this->txt_style,$current_style);
+}
+
+
+
+	//
+	//	fonction ajoutant un gradient
+	function svgAddGradient($id,$array_gradient){
+
+		$this->svg_gradient[$id] = $array_gradient;
+
+	}
+	//
+	//	Ajoute une couleur dans le gradient correspondant
+
+	//
+	//	function ecrivant dans le svgstring
+	function svgWriteString($content){
+
+		$this->svg_string .= $content;
+
+	}
+
+
+
+	//	analise le svg et renvoie aux fonctions precedente our le traitement
+	function ImageSVG($data){
+		$this->svg_info = array();
+
+		// mPDF 4.4.006
+		if (preg_match('/<!ENTITY/si',$data)) {
+			// Get User-defined entities
+			preg_match_all('/<!ENTITY\s+([a-z]+)\s+\"(.*?)\">/si',$data, $ent);
+			// Replace entities
+			for ($i=0; $i<count($ent[0]); $i++) {
+				$data = preg_replace('/&'.preg_quote($ent[1][$i],'/').';/is', $ent[2][$i], $data);
+			}
+		}
+
+
+		// mPDF 4.4.003
+		if (preg_match('/xlink:href=/si',$data)) {
+			// Get links
+			preg_match_all('/(<(linearGradient|radialgradient)[^>]*)xlink:href=["\']#(.*?)["\'](.*?)\/>/si',$data, $links);
+			if (count($links[0])) { $links[5] = array(); }	// mPDF 4.5.010
+			// Delete links from data - keeping in $links
+			for ($i=0; $i<count($links[0]); $i++) {
+				$links[5][$i] = 'tmpLink'.RAND(100000,9999999);	// mPDF 4.5.010
+				$data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', '<MYLINKS'.$links[5][$i].'>' , $data);	// mPDF 4.5.010
+			}
+			// Get targets
+			preg_match_all('/<(linearGradient|radialgradient)([^>]*)id=["\'](.*?)["\'](.*?)>(.*?)<\/(linearGradient|radialgradient)>/si',$data, $m);
+			$targets = array();
+			$stops = array();
+			// keeping in $targets
+			for ($i=0; $i<count($m[0]); $i++) {
+				$stops[$m[3][$i]] = $m[5][$i];
+			}
+			// Add back links this time as targets (gradients)
+			for ($i=0; $i<count($links[0]); $i++) {
+				$def = $links[1][$i] .' '.$links[4][$i].'>'. $stops[$links[3][$i]].'</'.$links[2][$i] .'>' ;	// mPDF 4.5.010
+				$data = preg_replace('/<MYLINKS'.$links[5][$i].'>/is', $def , $data);	// mPDF 4.5.010
+			}
+		}
+
+		// mPDF 4.4.003	- Removes <pattern>
+		$data = preg_replace('/<pattern.*?<\/pattern>/is', '', $data);
+		// mPDF 4.4.003	- Removes <marker>
+		$data = preg_replace('/<marker.*?<\/marker>/is', '', $data);
+
+		$this->svg_info['data'] = $data;
+
+		$this->svg_string = '';
+		
+		//
+		//	chargement unique des fonctions
+		if(!function_exists(xml_svg2pdf_start)){
+
+			function xml_svg2pdf_start($parser, $name, $attribs){
+				//
+				//	definition
+				global $svg_class, $last_gradid;
+				// mPDF 4.4.003
+				$svg_class->xbase = 0;
+				$svg_class->ybase = 0;
+				switch (strtolower($name)){
+
+				case 'svg':
+					$svg_class->svgOffset($attribs);
+					break;
+
+				case 'path':
+					$path = $attribs['d'];
+					// mPDF 4.4.003
+					preg_match_all('/([MZLHVCSQTAmzlhvcsqta])([e ,\-.\d]+)*/', $path, $commands, PREG_SET_ORDER);
+					$path_cmd = '';
+					$svg_class->subPathInit = true;	// mPDF 4.4.003
+					foreach($commands as $c){
+						if(count($c)==3 || $c[2]==''){
+							list($tmp, $command, $arguments) = $c;
+						}
+						else{
+							list($tmp, $command) = $c;
+							$arguments = '';
+						}
+
+						$path_cmd .= $svg_class->svgPath($command, $arguments);
+					}
+					$critere_style = $attribs;
+					unset($critere_style['d']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'rect':
+					if (!isset($attribs['x'])) {$attribs['x'] = 0;}
+					if (!isset($attribs['y'])) {$attribs['y'] = 0;}
+					if (!isset($attribs['rx'])) {$attribs['rx'] = 0;}
+					if (!isset($attribs['ry'])) {$attribs['ry'] = 0;}
+					$arguments = array(
+						'x' => $attribs['x'],
+						'y' => $attribs['y'],
+						'w' => $attribs['width'],
+						'h' => $attribs['height'],
+						'rx' => $attribs['rx'],
+						'ry' => $attribs['ry']
+					);
+					$path_cmd =  $svg_class->svgRect($arguments);
+					$critere_style = $attribs;
+					unset($critere_style['x'],$critere_style['y'],$critere_style['rx'],$critere_style['ry'],$critere_style['height'],$critere_style['width']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'circle':
+					if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
+					if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
+					$arguments = array(
+						'cx' => $attribs['cx'],
+						'cy' => $attribs['cy'],
+						'rx' => $attribs['r'],
+						'ry' => $attribs['r']
+					);
+					$path_cmd =  $svg_class->svgEllipse($arguments);
+					$critere_style = $attribs;
+					unset($critere_style['cx'],$critere_style['cy'],$critere_style['r']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'ellipse':
+					if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
+					if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
+					$arguments = array(
+						'cx' => $attribs['cx'],
+						'cy' => $attribs['cy'],
+						'rx' => $attribs['rx'],
+						'ry' => $attribs['ry']
+					);
+					$path_cmd =  $svg_class->svgEllipse($arguments);
+					$critere_style = $attribs;
+					unset($critere_style['cx'],$critere_style['cy'],$critere_style['rx'],$critere_style['ry']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'line':
+					$arguments = array($attribs['x1'],$attribs['y1'],$attribs['x2'],$attribs['y2']);
+					$path_cmd =  $svg_class->svgPolyline($arguments,false);	//  mPDF 4.4.003
+					$critere_style = $attribs;
+					unset($critere_style['x1'],$critere_style['y1'],$critere_style['x2'],$critere_style['y2']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'polyline':
+					$path = $attribs['points'];
+					preg_match_all('/[0-9\-\.]*/',$path, $tmp, PREG_SET_ORDER);
+					$arguments = array();
+					for ($i=0;$i<count($tmp);$i++){
+						if ($tmp[$i][0] !=''){
+							array_push($arguments, $tmp[$i][0]);
+						}
+					}
+					$path_cmd =  $svg_class->svgPolyline($arguments);
+					$critere_style = $attribs;
+					unset($critere_style['points']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'polygon':
+					$path = $attribs['points'];
+					preg_match_all('/([\-]*[0-9\.]+)/',$path, $tmp);
+					$arguments = array();
+					for ($i=0;$i<count($tmp[0]);$i++){
+						if ($tmp[0][$i] !=''){
+							array_push($arguments, $tmp[0][$i]);
+						}
+					}
+					$path_cmd =  $svg_class->svgPolygon($arguments);
+					//	definition du style de la forme:
+					$critere_style = $attribs;
+					unset($critere_style['points']);
+					$path_style = $svg_class->svgDefineStyle($critere_style);
+					break;
+
+				case 'lineargradient':
+						$tmp_gradient = array(
+							'type' => 'linear',
+							'info' => array(
+								'x1' => $attribs['x1'],
+								'y1' => $attribs['y1'],
+								'x2' => $attribs['x2'],
+								'y2' => $attribs['y2']
+							),
+							'transform' => $attribs['gradientTransform'],
+							'units' => $attribs['gradientUnits'],	/* mPDF 4.4.003 */
+							'color' => array()
+						);
+
+						$last_gradid = $attribs['id'];
+
+						$svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
+
+					break;
+
+				case 'radialgradient':
+						$tmp_gradient = array(
+							'type' => 'radial',
+							'info' => array(
+								'x0' => $attribs['cx'],
+								'y0' => $attribs['cy'],
+								'x1' => $attribs['fx'],
+								'y1' => $attribs['fy'],
+								'r' => $attribs['r']
+							),
+							'transform' => $attribs['gradientTransform'],
+							'units' => $attribs['gradientUnits'],	/* mPDF 4.4.003 */
+							'color' => array()
+						);
+
+						$last_gradid = $attribs['id'];
+
+						$svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
+
+					break;
+
+				case 'stop':
+						if (!$last_gradid) break;
+						// mPDF 4.4.003
+						if (isset($attribs['style']) AND preg_match('/stop-color:\s*([0-9a-f#]*)/i',$attribs['style'],$m)) {
+							$color = $m[1];
+						} else if (isset($attribs['stop-color'])) {
+							$color = $attribs['stop-color'];
+						}
+						$col = $svg_class->mpdf_ref->ConvertColor($color);
+						$color_r = $col['R'];
+						$color_g = $col['G'];
+						$color_b = $col['B'];
+						// mPDF 4.4.003
+						$color_final = sprintf('%.3f %.3f %.3f',$color_r/255,$color_g/255,$color_b/255);
+						// $color_final = $path_style .= sprintf('%.3f %.3f %.3f',$color_r/255,$color_g/255,$color_b/255);
+
+						// mPDF 4.4.003
+						if (isset($attribs['style']) AND preg_match('/stop-opacity:\s*([0-9.]*)/i',$attribs['style'],$m)) {
+							$stop_opacity = $m[1];
+						} else if (isset($attribs['stop-opacity'])) {
+							$stop_opacity = $attribs['stop-opacity'];
+						}
+
+						$tmp_color = array(
+							'color' => $color_final,
+							'offset' => $attribs['offset'],
+							'opacity' => $stop_opacity
+						);
+						array_push($svg_class->svg_gradient[$last_gradid]['color'],$tmp_color);
+					break;
+
+
+				case 'g':
+						$array_style = $svg_class->svgDefineStyle($attribs);
+						if ($array_style['transformations']) {
+							$svg_class->svgWriteString(' q '.$array_style['transformations']);
+						}
+						array_push($svg_class->svg_style,$array_style);
+
+						$svg_class->svgDefineTxtStyle($attribs);	// mPDF 4.4.003
+
+					break;
+
+				case 'text':
+						// mPDF 4.4.003
+						$array_style = $svg_class->svgDefineStyle($attribs);
+						if ($array_style['transformations']) {
+							$svg_class->svgWriteString(' q '.$array_style['transformations']);
+						}
+						array_push($svg_class->svg_style,$array_style);
+
+						$svg_class->txt_data = array();
+						$svg_class->txt_data[0] = $attribs['x'];
+						$svg_class->txt_data[1] = $attribs['y'];
+						$critere_style = $attribs;
+						unset($critere_style['x'], $critere_style['y']);
+						$svg_class->svgDefineTxtStyle($critere_style);
+
+					break;
+				}
+
+				//
+				//insertion des path et du style dans le flux de donné general.
+				if (isset($path_cmd) && $path_cmd) {	// mPDF 4.4.003
+					$get_style = $svg_class->svgStyle($path_style, $attribs, strtolower($name));
+					if ($path_style['transformations']) {	// transformation on an element
+						$svg_class->svgWriteString(" q ".$path_style['transformations']. "$path_cmd $get_style" . " Q\n");
+					}
+					else {
+						$svg_class->svgWriteString("$path_cmd $get_style\n");
+					}
+				}
+			}
+
+			function characterData($parser, $data)
+			{
+				global $svg_class;
+				if(isset($svg_class->txt_data[2])) {
+					$svg_class->txt_data[2] .= $data;
+				}
+				else {
+					$svg_class->txt_data[2] = $data;
+				}
+			}
+
+
+			function xml_svg2pdf_end($parser, $name){
+				global $svg_class;
+				switch($name){
+					case "g":
+						$tmp = count($svg_class->svg_style)-1;
+						$current_style = $svg_class->svg_style[$tmp];
+						if ($current_style['transformations']) {
+							$svg_class->svgWriteString(" Q ");
+						}
+						array_pop($svg_class->svg_style);
+
+						array_pop($svg_class->txt_style);	// mPDF 4.4.003
+
+						break;
+					case 'radialgradient':
+					case 'lineargradient':
+						$last_gradid = '';
+						break;
+					case "text":
+						$path_cmd = $svg_class->svgText();
+						// echo 'path >> '.$path_cmd."<br><br>";
+						// echo "style >> ".$get_style[1]."<br><br>";
+						$svg_class->svgWriteString($path_cmd);
+						// mPDF 4.4.003
+						$tmp = count($svg_class->svg_style)-1;
+						$current_style = $svg_class->svg_style[$tmp];
+						if ($current_style['transformations']) {
+							$svg_class->svgWriteString(" Q ");
+						}
+						array_pop($svg_class->svg_style);
+
+						break;
+				}
+
+			}
+
+		}
+
+		$svg2pdf_xml='';
+		global $svg_class;
+		$svg_class = $this;
+ 		$svg2pdf_xml_parser = xml_parser_create("utf-8");
+		xml_parser_set_option($svg2pdf_xml_parser, XML_OPTION_CASE_FOLDING, false);
+		xml_set_element_handler($svg2pdf_xml_parser, "xml_svg2pdf_start", "xml_svg2pdf_end");
+		xml_set_character_data_handler($svg2pdf_xml_parser, "characterData");
+		xml_parse($svg2pdf_xml_parser, $data);
+		// mPDF 4.4.003
+		if ($this->svg_error) { return false; }
+		else {
+			return array('x'=>$this->svg_info['x']*$this->kp,'y'=>-$this->svg_info['y']*$this->kp,'w'=>$this->svg_info['w']*$this->kp,'h'=>-$this->svg_info['h']*$this->kp,'data'=>$svg_class->svg_string);
+		}
+
+	}
+
+}
+
+?>

File diff suppressed because it is too large
+ 31 - 10
main/inc/lib/mpdf/classes/t1asm.php


+ 7 - 7
main/inc/lib/mpdf/compress.php

@@ -1,7 +1,7 @@
 <?php
 
-$excl = array( 'TABLES', 'LISTS', 'IMAGES-CORE', 
-'IMAGES-WMF', 'TABLES-ADVANCED-BORDERS', 'UNICODE-FONTS', 'HTMLHEADERS-FOOTERS', 'COLUMNS', 'TOC', 'INDEX', 'BOOKMARKS', 'BARCODES', 'FORMS', 'WATERMARK', 'RTL', 'INDIC', 'CJK', 'ANNOTATIONS', 'GRADIENTS', 'BACKGROUND-IMAGES', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS', 'HYPHENATION', 'ENCRYPTION', 'DIRECTW', 'PROGRESS-BAR');
+$excl = array( 'TABLES', 'LISTS', 'IMAGES-CORE',
+'IMAGES-WMF', 'TABLES-ADVANCED-BORDERS', 'UNICODE-FONTS', 'HTMLHEADERS-FOOTERS', 'COLUMNS', 'TOC', 'INDEX', 'BOOKMARKS', 'BARCODES', 'FORMS', 'WATERMARK', 'RTL', 'INDIC', 'CJK', 'ANNOTATIONS', 'GRADIENTS', 'BACKGROUND-IMAGES', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS', 'HYPHENATION', 'ENCRYPTION', 'DIRECTW', 'PROGRESS-BAR', 'IMPORTS');
 
 
 	// *DIRECTW* = Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText
@@ -18,7 +18,7 @@ if (!isset($_POST['generate']) || $_POST['generate']!='generate') {
 
 
 if (!file_exists('mpdf_source.php')) {
-	die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php"); 
+	die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php");
 }
 
 
@@ -38,7 +38,7 @@ function checkedAll (frm1) {
           {
           checked = false
           }
-	for (var i =0; i < aa.elements.length; i++) 
+	for (var i =0; i < aa.elements.length; i++)
 	{
 	 aa.elements[i].checked = checked;
 	}
@@ -77,7 +77,7 @@ exit;
 }
 
 $inc = $_POST['inc'];
-if (is_array($inc) && count($inc)>0 ) { 
+if (is_array($inc) && count($inc)>0 ) {
 	foreach($inc AS $i=>$v) {
 		$key = array_search($i, $excl);
 		unset($excl[$key]);
@@ -116,8 +116,8 @@ foreach($l AS $k=>$ln) {
 		}
 		$exclude = true;
 	}
-	if (count($exclflags)==0 && !$exclude) { 
-		$x .= $ln; 
+	if (count($exclflags)==0 && !$exclude) {
+		$x .= $ln;
 	}
 }
 

+ 53 - 25
main/inc/lib/mpdf/config.php

@@ -34,9 +34,13 @@ $this->falseBoldWeight = 5;			// mPDF 4.2 Weight for bold text when using an art
 $this->useOnlyCoreFonts = false;		// alias = $use_embeddedfonts_1252
 $this->allow_output_buffering = false;
 
+$this->enableImports = false;			// mPDF 4.2.006 Adding mPDFI
+
 $this->collapseBlockMargins = true; 	// mPDF 4.2 Allows top and bottom margins to collapse between block elements
 $this->progressBar = 0;				// mPDF 4.2 Shows progress-bars whilst generating file 0 off, 1 simple, 2 advanced
 
+$this->dpi = 96;					// mPDF 4.4.003 To interpret "px" pixel values in HTML/CSS (see img_dpi below)
+
 // Automatically correct for tags where HTML specifies optional end tags e.g. P,LI,DD,TD
 // If you are confident input html is valid XHTML, turning this off may make it more reliable(?)
 $this->allow_html_optional_endtags = true;
@@ -44,21 +48,28 @@ $this->ignore_invalid_utf8 = false;
 $this->text_input_as_HTML = false; 		// Converts all entities in Text inputs to UTF-8 before encoding
 $this->useGraphs = false;
 
+// PDFA1-b Compliant files
+$this->PDFA = false;				// mPDF 4.2.018 true=Forces compliance with PDFA-1b spec
+$this->PDFAauto = false;			// mPDF 4.2.018 Overrides warnings making changes when possible to force PDFA1-b compliance
+
+$this->ICCProfile = '';				// mPDF 4.2.018  Colour profile OutputIntent for defaultRGB colorSpace
+							// sRGB_IEC61966-2-1 (=default if blank and PDFA),  or other added .icc profile
+
+
 // mPDF 4.2 - When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
 // by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
-// the previous guess was. The higher the number, the quicker it will finish, but the less accurate the fit may be.
+// the previous guess was. The lower the number, the quicker it will finish, but the less accurate the fit may be.
 // FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
-$this->incrementFPR1 = 10;
+$this->incrementFPR1 = 10;	// i.e. will alter by 1/[10]th of width and try again until within closer limits
 $this->incrementFPR2 = 20;
 $this->incrementFPR3 = 30;
-$this->incrementFPR4 = 50;
-
+$this->incrementFPR4 = 50;	// i.e. will alter by 1/[50]th of width and try again when it nearly fits
 
 
 // DEBUGGING & DEVELOPERS
 $this->showStats = false;
 $this->debug = false;
-$this->showImageErrors = false;		// false/true; 
+$this->showImageErrors = false;		// false/true;
 $this->table_error_report = false;		// Die and report error if table is too wide to contain whole words
 $this->table_error_report_param = '';	// Parameter which can be passed to show in error report i.e. chapter number being processed//
 
@@ -73,7 +84,8 @@ $this->annotOpacity = 0.5;	// default opacity for Annotations
 $this->anchor2Bookmark = 0;	// makes <a name=""> into a bookmark as well as internal link target; 1 = just name; 2 = name (p.34)
 
 // CSS & STYLES
-$this->disablePrintCSS;	// prevents CSS stylesheets marked as media="print" to be ignored
+$this->CSSselectMedia='print';		// mPDF 4.3.001  screen, print, or any other CSS @media type (not "all")
+// $this->disablePrintCSS depracated	// mPDF 4.3.001
 $this->rtlCSS = 2; 	// RTL: 0 overrides defaultCSS; 1 overrides stylesheets; 2 overrides inline styles - TEXT-ALIGN left => right etc.
 				// when directionality is set to rtl
 
@@ -91,33 +103,45 @@ $this->header_line_spacing = 0.25;	// spacing between bottom of header and line
 $this->footer_line_spacing = 0.25;	// spacing between bottom of header and line (if present) - function of fontsize
 // If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text.
 // If 'stretch' margin-top sets a minimum distance in mm between top of page and top of text, which expands if header is too large to fit.
-$this->setAutoTopMargin = false;	
-$this->setAutoBottomMargin = false;	
+$this->setAutoTopMargin = false;
+$this->setAutoBottomMargin = false;
 $this->autoMarginPadding = 2;		// distance in mm used as padding if 'stretch' mode is used
 
 
 
 // TABLES
+$this->simpleTables = false; // mPDF 4.2.017 Forces all cells to have same border, background etc. Improves performance
+$this->packTableData = false; // mPDF 4.3.009 Reduce memory usage processing tables (but with increased processing time)
 $this->ignore_table_percents = false;
 $this->ignore_table_widths = false;
 $this->keep_table_proportions = false;	// If table width set > page width, force resizing but keep relative sizes
 							// Also forces respect of cell widths set by %
 $this->shrink_tables_to_fit = 1.4;	// automatically reduce fontsize in table if words would have to split ( not in CJK)
 						// 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
+
+$this->tableMinSizePriority = false;	// mPDF 4.5.006 If page-break-inside:avoid but cannot fit on full page without
+							// exceeding autosize; setting this value to true will force respsect for
+							// autosize, and disable the page-break-inside:avoid
+
 $this->use_kwt = false;
 
 // IMAGES
 $this->img_dpi = 96;	// Default dpi to output images if size not defined
+				// See also above "dpi"
 
 
 // TEXT SPACING & JUSTIFICATION
+$this->justifyB4br = false;	// mPDF 4.3.003  In justified text, <BR> does not cause the preceding text to be justified in browsers
+					// Change to true to force justification (as in MS Word)
+
 $this->tabSpaces = 8;	// Number of spaces to replace for a TAB in <pre> sections
 				// Notepad uses 6, HTML specification recommends 8
 $this->jSWord = 0.4;	// Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
 $this->jSmaxChar = 2;	// Maximum spacing to allocate to character spacing. (0 = no maximum)
+
 $this->jSmaxCharLast = 1;	// Maximum character spacing allowed (carried over) when finishing a last line
 $this->jSmaxWordLast = 2;	// Maximum word spacing allowed (carried over) when finishing a last line
-$this->orphansAllowed = 5;	// No of SUP or SUB characters to include on line to avoid leaving e.g. end of line//<sup>32</sup>
+$this->orphansAllowed = 5;		// No of SUP or SUB characters to include on line to avoid leaving e.g. end of line//<sup>32</sup>
 $this->normalLineheight = 1.33;	// mPDF 4.2 - Value used for line-height when CSS specified as 'normal' (default)
 
 
@@ -143,6 +167,7 @@ $this->list_number_suffix = '.';	// Content to follow a numbered list marker e.g
 
 
 // WATERMARKS
+$this->watermarkImgBehind = false;	// mPDF 4.3.018
 $this->showWatermarkText = 0;	// alias = $TopicIsUnvalidated
 $this->showWatermarkImage = 0;
 $this->watermarkText = '';	// alias = $UnvalidatedText
@@ -150,7 +175,10 @@ $this->watermarkImage = '';
 $this->watermark_font = '';
 $this->watermarkTextAlpha = 0.2;
 $this->watermarkImageAlpha = 0.2;
-
+$this->watermarkImgAlphaBlend = 'Normal';	// mPDF 4.4.002
+	// Accepts any PDF spec. value: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
+	// HardLight, SoftLight, Difference, Exclusion
+	// "Multiply" works well for watermark image on top
 
 // BORDERS
 $this->autoPadding = false; // Automatically increases padding in block elements with border-radius set - if required
@@ -373,23 +401,23 @@ $this->defaultCSS = array(
 //////////////////////////////////////////////////
 // VALUES ONLY LIKELY TO BE CHANGED BY DEVELOPERS
 //////////////////////////////////////////////////
-$this->pdf_version = '1.5';
+$this->pdf_version = '1.4';	// mPDF 4.2.018  Previously set as 1.5
 
 // Hyphenation
 $this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv');	// existing defined patterns
 
-$this->default_lineheight_correction=1.2;	// Value 1 sets lineheight=fontsize height; 
+$this->default_lineheight_correction=1.2;	// Value 1 sets lineheight=fontsize height;
 							// Value used if line-height not set by CSS (usuallly is)
 
 $this->fontsizes = array('XX-SMALL'=>0.7, 'X-SMALL'=>0.77, 'SMALL'=>0.86, 'MEDIUM'=>1, 'LARGE'=>1.2, 'X-LARGE'=>1.5, 'XX-LARGE'=>2);
 
 // CHARACTER PATTERN MATCHES TO DETECT LANGUAGES
 // pattern used to detect RTL characters -> force RTL
-$this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";	
+$this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";
 
 	// CJK Chars which require changing and are distinctive of specific charset
-	$this->pregUHCchars = "\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";	
-	$this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";	
+	$this->pregUHCchars = "\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";
+	$this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";
 	// Chars which distinguish CJK but not between different 	// mPDF 3.0 widen Plane 3
 	$this->pregCJKchars = "\x{2E80}-\x{A4CF}\x{A800}-\x{D7AF}\x{F900}-\x{FAFF}\x{FF00}-\x{FFEF}\x{20000}-\x{2FA1F}";
 	// ASCII Chars which shouldn't break string
@@ -400,10 +428,10 @@ $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE7
 	// Use for chunks > words
 	$this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}";	// all except <>
 	// Vietnamese - specific
-	$this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";	
-	// Vietnamese -  Chars which shouldn't break string 
+	$this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";
+	// Vietnamese -  Chars which shouldn't break string
 	$this->pregVIETPluschars = "\x{0000}-\x{003B}\x{003F}-\x{00FF}\x{0300}-\x{036F}\x{0102}\x{0103}\x{0110}\x{0111}\x{0128}\x{0129}\x{0168}\x{0169}\x{1EF1}-\x{1EF9}";	// omits < >
-	$this->pregHEBchars = "\x{0590}-\x{05FF}\x{FB00}-\x{FB49}";	// Hebrew
+
 	// Arabic
 	$this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}";
 	// Characters of Urdu, Pashto, Sindhi (but NOT arabic or persian/farsi) [not covered by DejavuSans font]
@@ -413,15 +441,15 @@ $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE7
 
 	// INDIC
 	$this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}";	// Devanagari (Hindi) minus the common indic punctuation 0964,0965
-	$this->pregBNchars = "\x{0980}-\x{09FF}";	// Bengali 
+	$this->pregBNchars = "\x{0980}-\x{09FF}";	// Bengali
 	$this->pregPAchars = "\x{0A00}-\x{0A7F}";	// Gurmukhi (Punjabi)
 	$this->pregGUchars = "\x{0A80}-\x{0AFF}";	// Gujarati
-	$this->pregORchars = "\x{0B00}-\x{0B7F}";	// Oriya 
-	$this->pregTAchars = "\x{0B80}-\x{0BFF}";	// Tamil 
-	$this->pregTEchars = "\x{0C00}-\x{0C7F}";	// Telugu 
-	$this->pregKNchars = "\x{0C80}-\x{0CFF}";	// Kannada 
-	$this->pregMLchars = "\x{0D00}-\x{0D7F}";	// Malayalam 
-	$this->pregSHchars = "\x{0D80}-\x{0DFF}";	// Sinhala 
+	$this->pregORchars = "\x{0B00}-\x{0B7F}";	// Oriya
+	$this->pregTAchars = "\x{0B80}-\x{0BFF}";	// Tamil
+	$this->pregTEchars = "\x{0C00}-\x{0C7F}";	// Telugu
+	$this->pregKNchars = "\x{0C80}-\x{0CFF}";	// Kannada
+	$this->pregMLchars = "\x{0D00}-\x{0D7F}";	// Malayalam
+	$this->pregSHchars = "\x{0D80}-\x{0DFF}";	// Sinhala
 
 	$this->pregINDextra = "\x{200B}-\x{200D}\x{0964}\x{0965}\x{0020}-\x{0022}\x{0024}-\x{002E}\x{003A}-\x{003F}\x{005B}-\x{0060}\x{007B}-\x{007E}-\x{00A0}";
 	// 200B-D=Zero-width joiners; 0964,0965=Generic Indic punctuation; NBSP & general punctuation (excludes # and / so can use in autoFont() )

+ 6 - 0
main/inc/lib/mpdf/iccprofiles/index.html

@@ -0,0 +1,6 @@
+<html>
+<head>
+</head>
+<body>
+</body>
+</html>

BIN
main/inc/lib/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc


+ 45 - 4
main/inc/lib/mpdf/includes/functions.php

@@ -1,11 +1,52 @@
 <?php
 
 
+// mPDF 4.2.006 - from mPDFI
+function _strspn($str1, $str2, $start=null, $length=null) {
+	$numargs = func_num_args();
+	if ($numargs == 2) {
+		return strspn($str1, $str2);
+	}
+	else if ($numargs == 3) {
+		return strspn($str1, $str2, $start);
+	}
+	else {
+		return strspn($str1, $str2, $start, $length);
+	}
+}
+
+
+// mPDF 4.2.006 - from mPDFI
+function _strcspn($str1, $str2, $start=null, $length=null) {
+	$numargs = func_num_args();
+	if ($numargs == 2) {
+		return strcspn($str1, $str2);
+	}
+	else if ($numargs == 3) {
+		return strcspn($str1, $str2, $start);
+	}
+	else {
+		return strcspn($str1, $str2, $start, $length);
+	}
+}
+
+// mPDF 4.2.006 - from mPDFI
+function _fgets (&$h, $force=false) {
+	$startpos = ftell($h);
+	$s = fgets($h, 1024);
+	if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
+		$s = $ns[1];
+		fseek($h,$startpos+strlen($s));
+	}
+	return $s;
+}
+
+
 // For PHP4 compatability
 if(!function_exists('str_ireplace')) {
   function str_ireplace($search,$replace,$subject) {
 	$search = preg_quote($search, "/");
-	return preg_replace("/".$search."/i", $replace, $subject); 
+	return preg_replace("/".$search."/i", $replace, $subject);
   }
 }
 
@@ -16,7 +57,7 @@ function PreparePreText($text,$ff='//FF//') {
 	return ('<pre>'.$text.'</pre>');
 }
 
-if(!function_exists('strcode2utf')){ 
+if(!function_exists('strcode2utf')){
   function strcode2utf($str,$lo=true) {
 	//converts all the &#nnn; and &#xhhh; in a string to Unicode
 	if ($lo) { $lo = 1; } else { $lo = 0; }
@@ -26,7 +67,7 @@ if(!function_exists('strcode2utf')){
   }
 }
 
-if(!function_exists('code2utf')){ 
+if(!function_exists('code2utf')){
   function code2utf($num,$lo=true){
 	//Returns the utf string corresponding to the unicode value
 	//added notes - http://uk.php.net/utf8_encode
@@ -43,7 +84,7 @@ if(!function_exists('code2utf')){
   }
 }
 
-if(!function_exists('codeHex2utf')){ 
+if(!function_exists('codeHex2utf')){
   function codeHex2utf($hex,$lo=true){
 	$num = hexdec($hex);
 	if (($num<128) && !$lo) return '&#x'.$hex.';';	// i.e. no change

+ 177 - 81
main/inc/lib/mpdf/makefonts/makefonts.php

@@ -1,16 +1,18 @@
 <?php
+
 ############################
-set_time_limit(600);
+set_time_limit(1200);
 ini_set("memory_limit","128M");
 ############################
 
 $cpages = array('win-1252','win-1251','iso-8859-2','iso-8859-4','iso-8859-7','iso-8859-9');
 $map_path = '../maps/';
 
-$step = $_REQUEST['step'];
+if (isset($_REQUEST['step'])) { $step = $_REQUEST['step']; }
+else $step = '';
 echo '<html><body>';
-if ($_REQUEST['movefonts']==1) { movefonts(); }
-if ($_REQUEST['moveunifonts']==1) { moveunifonts(); }
+if (isset($_REQUEST['movefonts']) && $_REQUEST['movefonts']==1) { movefonts(); }
+if (isset($_REQUEST['moveunifonts']) && $_REQUEST['moveunifonts']==1) { moveunifonts(); }
 
 
 // INITIAL INSTRUCTIONS
@@ -30,14 +32,14 @@ if (!$step) {
 
 }
 
-// STEP 1 - 
+// STEP 1 -
 else if ($step==1) {
 	echo '<h3>Step 1 - Unibyte (codepage) font files - A</h3>';
 	echo '<p>The next step will create and execute a file "makefonts.bat" in the current directory</p>';
 	echo '<p><a href="makefonts.php?step=2">Execute</a> and go to Step 2</p>';
 }
 
-// STEP 2 - 
+// STEP 2 -
 else if ($step==2) {
 	makebatlist('C');
 	exec('makefonts.bat');
@@ -66,7 +68,7 @@ else if ($step==2) {
 	echo '<p>Execute <a href="makefonts.php?step=3">Step 3</a></p>';
 }
 
-// STEP 3 - 
+// STEP 3 -
 else if ($step==3) {
 	$ff = scandir('./');
 	foreach($ff AS $f) {
@@ -106,11 +108,11 @@ else if ($step==3) {
 
 }
 
-// STEP 4 - 
+// STEP 4 -
 else if ($step==4) {
 	echo '<h3>Step 4 - Unibyte (codepage) font files - D</h3>';
 	echo '<p>Copy all of the .php and .z files to the folder [path to mpdf]/mpdf/fonts/</p>';
-	echo '<p>(This <a href="makefonts.php?step=4&movefonts=1">link</a> may do the job for you)</p>';
+	echo '<p>(This <a href="makefonts.php?step=4&movefonts=1">link</a> may do the job for you. <b>Note:</b> This will not overwrite files, so you may need to delete files first from the [path to mpdf]/mpdf/fonts/ folder)</p>';
 	echo '<p>Add the font names to config_fonts.php (and if appropriate to config_cp.php)</p>';
 
 	echo '<p>You have now completed font file generation for the codepage Type 1 font files.</p>';
@@ -125,7 +127,7 @@ else if ($step==4) {
 
 }
 
-// STEP 5 - 
+// STEP 5 -
 else if ($step==5) {
 
 	// First get rid of any .php and .z files left
@@ -135,7 +137,7 @@ else if ($step==5) {
 		$file = substr($f,0,(strlen($f)-4));
 		foreach($cpages AS $cpage) {
 		  if ($cpage =='win-1252') {
-			@unlink($file .'.z'); @unlink($file .'.php'); 
+			@unlink($file .'.z'); @unlink($file .'.php');
 		  }
 		  else {
 			@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
@@ -146,7 +148,7 @@ else if ($step==5) {
 	makebatlist('U');
 	exec('makefonts.bat');
 	echo '<h3>Step 5 - Unicode TrueType font files - A</h3>';
-	echo '<p>Check that the following files have been created in the surrent directory (for each of your original .ttf files):</p>';
+	echo '<p>Check that the following files have been created in the current directory (for each of your original .ttf files):</p>';
 	echo '<ul><li>fontname.t1a</li>';
 	echo '<li>fontname.ufm</li>';
 	echo '<li>fontname.afm</li></ul>';
@@ -168,7 +170,7 @@ else if ($step==5) {
 
 
 
-// STEP 6 - 
+// STEP 6 -
 else if ($step==6) {
 	$ff = scandir('./');
 	foreach($ff AS $f) {
@@ -187,7 +189,7 @@ else if ($step==6) {
 	echo '<p>NB The .afm files have been deleted (but .t1a and .ufm should remain).</p>';
 
 	echo '<p>The next step will generate the additional files for embedded subsets</p>';
-	echo '<p><a href="makefonts.php?step=7">Execute</a> Step 7</p>';
+	echo '<p><a href="makefonts.php?step=7">Execute</a> Step 7 (NB This may take several minutes for large font files; you may need to increase the time-limit or memory-limits - see the top of the /makefont/makefonts.php file)</p>';
 
 }
 
@@ -302,74 +304,138 @@ else if ($step==7) {
 		$pdf_diffstr = '';	// String of /Diffs for PDF file
 		$of_encodingstr = '';
 		$useChars = array();
-	
+
 		//echo "Processing font: ".$file."... <br />\n";
 
-		$file_ip = $file.'.t1a';
-		$fi = file_get_contents($file_ip);
-		$fi = preg_replace("/\r\n/","\n",$fi);
 		$subrs='';
 		$CharStrings='';
 		$Encoding='';
 
+		$file_ip = $file.'.t1a';
+
+		$ifh = fopen($file_ip, "rb");
+		$target = false;
+		$rem = '';
 		// Header
-		list($if_header,$rem) = preg_split('/\/Encoding /s', $fi, 2);
-		$fi = '/Encoding '.$rem;	// restore
+		$if_header = '';
+		while(!$target && !feof($ifh)) {
+			$x = fread($ifh, 2048);
+			$x = preg_replace("/\r/","",$x);
+			$if_header .= $x;
+			if (preg_match('/(.*?)\/Encoding (.*)/s', $if_header , $m)) {
+				$if_header = $m[1];
+				$rem = '/Encoding '.$m[2];
+				$target = true;
+			}
+		}
+		if (feof($ifh)) { die("Error parsing ".$file_ip ); }
 
+		// Discard
+		$target = false;
+		if (preg_match('/(.*?)currentfile eexec(.*)/s', $rem, $m)) {
+			$rem = $m[2];
+			$target = true;
+		}
+
+		$discard = '';
+		while(!$target && !feof($ifh)) {
+			$x = fread($ifh, 2048);
+			$x = preg_replace("/\r/","",$x);
+			$discard .= $x;
+			if (preg_match('/(.*?)currentfile eexec(.*)/s', $discard , $m)) {
+				//$discard = $m[1];
+				$rem = $m[2];
+				$target = true;
+			}
+		}
+		if (feof($ifh)) { die("Error parsing ".$file_ip ); }
 
-		// Encodings
-		list($Encoding,$rem) = preg_split('/currentfile eexec/s', $fi, 2);
-		$fi = $rem;	// restore
-		unset($Encoding);	// Not needed
 
 		// eexec_start
-		list($if_eexec_start,$rem) = preg_split('/\/Subrs /s', $fi, 2);
-		$fi = '/Subrs '.$rem;	// restore
-		if (preg_match('/\/lenIV\s+(\d+)/',$if_eexec_start,$t)) {
-			$lenIV = $t[1];
-		}
-		/* locate the name of the charstring start command  - probably /RD */
-		if (preg_match('/\/([a-zA-Z]*)\s*\{string currentfile.*?readstring/',$if_eexec_start,$t)) { 
-			$cs_start = $t[1];
+		$target = false;
+		if (preg_match('/(.*?)\/Subrs (.*)/s', $rem, $m)) {
+			$if_eexec_start = $m[1];
+			$rem = $m[2];
+			$target = true;
 		}
-
-		// Subroutines
-		$sr = '';
-		list($subrs,$rem) = preg_split('/\/CharStrings /s', $fi, 2);
-		$fi = '/CharStrings '.$rem;	// restore
-		preg_match_all('/dup\s+(\d+)\s+\{(.*?)\}\s+NP/s',$subrs, $m);
-		for($i=0;$i<count($m[0]);$i++) {
-			if ($i < 5) {
-				$sr .= "dup ".$m[1][$i]." ";
-				$sr .= parse_charstring($m[2][$i]);	
-				$sr .= " NP\n";
-			}
-			// Save the rest without the return
-			else {
-				$if_Subrs[$m[1][$i]] = preg_replace('/\s+return/', '', $m[2][$i]);
+		else { $if_eexec_start = $rem; }
+
+		while(!$target && !feof($ifh)) {
+			$x = fread($ifh, 2048);
+			$x = preg_replace("/\r/","",$x);
+			$if_eexec_start .= $x;
+			if (preg_match('/(.*?)\/Subrs (.*)/s', $if_eexec_start , $m)) {
+				$if_eexec_start = $m[1];
+				$rem = $m[2];
+				$target = true;
 			}
 		}
-		$offset = 0;
+		if (feof($ifh)) { die("Error parsing ".$file_ip ); }
+
+
 		// WRITE if_header to .dat
-		$fh = fopen($file.'.dat', "w");
+		$offset = 0;
+		$fh = fopen($file.'.dat', "wb");
 
 		_fwriteint($fh, strlen($if_header));
 		fwrite($fh, $if_header);
 		$offset += strlen($if_header) + 4;
 
+		// WRITE if_eexec_start to .dat
 		_fwriteint($fh, strlen($if_eexec_start));
 		fwrite($fh, $if_eexec_start);
 		$offset += strlen($if_eexec_start) + 4;
 
 		unset($if_header );
 		unset($if_eexec_start );
-		unset($subrs);
 
-		// CharStrings
-		list($CharStrings,$rem) = preg_split('/mark currentfile closefile/s', $fi, 2);
-		$fi = 'mark currentfile closefile'.$rem;	// restore
-		preg_match_all('/\/([a-zA-Z0-9._]+)\s+\{(.*?endchar\s+)\}\s+ND/s',$CharStrings, $m);
+
+		// SUBROUTINES
+		$if_Subrs = array();
+		$target = false;
+		if (preg_match('/(.*?)\/CharStrings (.*)/s', $rem, $m)) {
+		$subrs = $m[1];
+			$rem = $m[2];
+			$target = true;
+		}
+		else { $subrs = $rem; }
+
+		preg_match_all('/dup\s+(\d+)\s+\{(.*?)\}\s+NP/s',$subrs, $mm);
+		for($i=0;$i<count($mm[0]);$i++) {
+			if ($mm[1][$i] > 4) { $if_Subrs[$mm[1][$i]] = preg_replace('/\s+return/', '', $mm[2][$i]); }	// mPDF 4.4.016
+		}
+		preg_match('/(.*}\s+NP)(.*)/s', $subrs, $mm);
+		if(isset($mm[2])) { $subrs = $mm[2]; }	// mPDF 4.4.016
+
+		while(!$target && !feof($ifh)) {
+			$x = fread($ifh, 8192);
+			$x = preg_replace("/\r/","",$x);
+			$subrs .= $x;
+			if (preg_match('/(.*?)\/CharStrings (.*)/s', $subrs , $m)) {
+				$subrs = $m[1];
+				$rem = $m[2];
+				$target = true;
+			}
+			$subrs = preg_replace("/\r\n/","\n",$subrs);
+			preg_match_all('/dup\s+(\d+)\s+\{(.*?)\}\s+NP/s',$subrs, $mm);
+			for($i=0;$i<count($mm[0]);$i++) {
+				if ($mm[1][$i] > 4) { $if_Subrs[$mm[1][$i]] = preg_replace('/\s+return/', '', $mm[2][$i]); }	// mPDF 4.4.016
+			}
+			preg_match('/(.*}\s+NP)(.*)/s', $subrs, $mm);
+			if(isset($mm[2])) { $subrs = $mm[2]; }	// mPDF 4.5.003
+		}
+		if (feof($ifh)) { die("Error parsing ".$file_ip ); }
+
+		// CHARSTRINGS
 		$offs = array();
+		$target = false;
+		if (preg_match('/(.*?)mark currentfile closefile/s', $rem, $m)) {
+			$CharStrings = $m[1];
+			$target = true;
+		}
+		else { $CharStrings = $rem; }
+
+		preg_match_all('/\/([a-zA-Z0-9._]+)\s+\{(.*?endchar\s+)\}\s+ND/s',$CharStrings, $m);
 		for($i=0;$i<count($m[0]);$i++) {
 			$cp = $m[1][$i];
 			$cs = $m[2][$i];
@@ -382,11 +448,40 @@ else if ($step==7) {
 			fwrite($fh, $cb);
 			$offset += strlen($cb) + 4;
 		}
+		preg_match('/(.*}\s+ND)(.*)/s', $CharStrings, $mm);
+		if(isset($mm[2])) { $CharStrings = $mm[2]; }	// mPDF 4.4.016
+
+		while(!$target && !feof($ifh)) {
+			$x = fread($ifh, 8192);
+			$x = preg_replace("/\r/","",$x);
+			$CharStrings .= $x;
+			if (preg_match('/(.*?)mark currentfile closefile(.*)/s', $CharStrings , $m)) {
+				$CharStrings = $m[1];
+				$target = true;
+			}
+			preg_match_all('/\/([a-zA-Z0-9._]+)\s+\{(.*?endchar\s+)\}\s+ND/s',$CharStrings, $m);
+			for($i=0;$i<count($m[0]);$i++) {
+				$cp = $m[1][$i];
+				$cs = $m[2][$i];
+				$cs = preg_replace('/(\d+) 4 (callgsubr|callothersubr|callsubr)/e', '" ".$if_Subrs[\\1]." "', $cs);
+				$cs = preg_replace('/\s+/',' ',$cs);
+				$cb = parse_charstring($cs);
+				$offs[$cp] = $offset;
+				// WRITE $cb to .dat AND save position in file
+				_fwriteint($fh, strlen($cb));
+				fwrite($fh, $cb);
+				$offset += strlen($cb) + 4;
+			}
+			preg_match('/(.*}\s+ND)(.*)/s', $CharStrings, $mm);
+			if(isset($mm[2])) { $CharStrings = $mm[2]; }	// mPDF 4.4.016
+		}
+
+		fclose($ifh);
 		fclose($fh);
 		unset($if_Subrs);
 		unset($CharStrings);
 		unset($fi);
-		// WRITE if_eexec_start to .dat
+		// WRITE offsets to .dat.php
 		$fh = fopen($file.'.dat.php', "w");
 		$s = '<?php $offs = '.var_export($offs, true).'; ?>';
 		fwrite($fh, $s);
@@ -412,11 +507,11 @@ else if ($step==7) {
 
 
 
-// STEP 8 - 
+// STEP 8 -
 else if ($step==8) {
 	echo '<p>Copy all of the following files to the folder [path to mpdf]/mpdf/unifont/</p>';
 	echo '<p>(6 for each font/style)</p>';
-	echo '<p>(This <a href="makefonts.php?step=8&moveunifonts=1">link</a> should do the job for you)</p>';
+	echo '<p>(This <a href="makefonts.php?step=8&moveunifonts=1">link</a> should do the job for you. <b>Note:</b> This will not overwrite files, so you may need to delete files first from the [path to mpdf]/mpdf/unifont/ folder).</p>';
 
 	echo '<ul><li>fontname.z</li>';
 	echo '<li>fontname.ctg.z</li>';
@@ -433,7 +528,7 @@ else if ($step==8) {
 }
 
 
-// STEP 9 - 
+// STEP 9 -
 else if ($step==9) {
 	$ff = scandir('./');
 	foreach($ff AS $f) {
@@ -451,7 +546,7 @@ else if ($step==9) {
 		@unlink('makefonts.bat');
 		foreach($cpages AS $cpage) {
 		  if ($cpage =='win-1252') {
-			@unlink($file .'.z'); @unlink($file .'.php'); 
+			@unlink($file .'.z'); @unlink($file .'.php');
 		  }
 		  else {
 			@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
@@ -585,12 +680,12 @@ function movefonts() {
 		$file = substr($f,0,(strlen($f)-4));
 		foreach($cpages AS $cpage) {
 		  if ($cpage =='win-1252') {
-			@rename($file .'.php', '../font/'.$file .'.php');
-			@rename($file .'.z', '../font/'.$file .'.z');
+			rename($file .'.php', '../font/'.$file .'.php');
+			rename($file .'.z', '../font/'.$file .'.z');
 		  }
 		  else {
-			@rename($file .'-'.$cpage.'.php', '../font/'.$file .'-'.$cpage.'.php');
-			@rename($file .'-'.$cpage.'.z', '../font/'.$file .'-'.$cpage.'.z');
+			rename($file .'-'.$cpage.'.php', '../font/'.$file .'-'.$cpage.'.php');
+			rename($file .'-'.$cpage.'.z', '../font/'.$file .'-'.$cpage.'.z');
 		  }
 		}
 	   }
@@ -603,12 +698,12 @@ function moveunifonts() {
 	foreach($ff AS $f) {
 	   if (substr($f,-4,4)=='.ttf') {
 		$file = substr($f,0,(strlen($f)-4));
-		@rename($file .'.dat', '../unifont/'.$file .'.dat');
-		@rename($file .'.dat.php', '../unifont/'.$file .'.dat.php');
-		@rename($file .'.php', '../unifont/'.$file .'.php');
-		@rename($file .'.z', '../unifont/'.$file .'.z');
-		@rename($file .'.ctg.z', '../unifont/'.$file .'.ctg.z');
-		@rename($file .'.uni2gn.php', '../unifont/'.$file .'.uni2gn.php');
+		rename($file .'.dat', '../unifont/'.$file .'.dat');
+		rename($file .'.dat.php', '../unifont/'.$file .'.dat.php');
+		rename($file .'.php', '../unifont/'.$file .'.php');
+		rename($file .'.z', '../unifont/'.$file .'.z');
+		rename($file .'.ctg.z', '../unifont/'.$file .'.ctg.z');
+		rename($file .'.uni2gn.php', '../unifont/'.$file .'.uni2gn.php');
 	   }
 	}
 }
@@ -746,7 +841,7 @@ function ReadAFM($file,&$map)
 	//Read a font metric file
 	$a=file($file);
 	if(empty($a))
-		die('File not found');
+		die('File not found (ReadAFM) - '.$file);
 	$widths=array();
 	$fm=array();
 	$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
@@ -1062,11 +1157,11 @@ function ReadUFM($file, &$cidtogidmap)
 {
   //Prepare empty CIDToGIDMap
   $cidtogidmap = str_pad('', 256*256*2, "\x00");
-  
+
   //Read a font metric file
   $a=file($file);
   if(empty($a))
-    die('File not found');
+    die('File not found (ReadUFM) - '.$file);
   $widths=array();
   $fm=array();
   foreach($a as $l)
@@ -1086,17 +1181,18 @@ function ReadUFM($file, &$cidtogidmap)
         $w = $e[4];
         $glyph = $e[10];
         $widths[$cc] = $w;
-        if($cc == ord('X'))
-          $fm['CapXHeight'] = $e[13];
-          
+ //       if($cc == ord('X'))				// mPDF 4.4.01
+ //         $fm['CapXHeight'] = $e[13];		// Height is not set in ttf2ufm
+
         // Set GID
         if ($cc >= 0 && $cc < 0xFFFF && $glyph) {
           $cidtogidmap{$cc*2} = chr($glyph >> 8);
           $cidtogidmap{$cc*2 + 1} = chr($glyph & 0xFF);
-        }        
+        }
+	  // mPDF 4.5.003
+	  if($gn=='.notdef' && !isset($fm['MissingWidth']))
+          $fm['MissingWidth']=$w;
       }
-      if($gn=='.notdef' && !isset($fm['MissingWidth']))
-        $fm['MissingWidth']=$w;
     }
     elseif($code=='FontName')
       $fm['FontName']=$param;
@@ -1128,7 +1224,7 @@ function ReadUFM($file, &$cidtogidmap)
     die('FontName not found');
 
   $fm['Widths']=$widths;
-  
+
   return $fm;
 }
 
@@ -1260,14 +1356,14 @@ function MakeFontTTF($fontfile,$ufmfile)
 
       $cmp=$basename.'.ctg.z';
       SaveToFile($cmp,gzcompress($cidtogidmap),'b');
-      //echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';     
+      //echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';
       $s.='$ctg=\''.$cmp."';\n";
     }
     else
     {
       $s.='$file=\''.basename($fontfile)."';\n";
       echo '<B>Notice:</B> font file could not be compressed (gzcompress not available)<BR>';
-      
+
       $cmp=$basename.'.ctg';
       $f = fopen($cmp, 'wb');
       fwrite($f, $cidtogidmap);

File diff suppressed because it is too large
+ 419 - 193
main/inc/lib/mpdf/mpdf.php


+ 98 - 0
main/inc/lib/mpdf/mpdfi/filters/FilterASCII85.php

@@ -0,0 +1,98 @@
+<?php
+//
+//  FPDI - Version 1.3.1
+//
+//    Copyright 2004-2009 Setasign - Jan Slabon
+//
+//  Licensed under the Apache License, Version 2.0 (the "License");
+//  you may not use this file except in compliance with the License.
+//  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+
+if (!defined('ORD_z'))
+	define('ORD_z',ord('z'));
+if (!defined('ORD_exclmark'))
+	define('ORD_exclmark', ord('!'));
+if (!defined('ORD_u'))	
+	define('ORD_u', ord('u'));
+if (!defined('ORD_tilde'))
+	define('ORD_tilde', ord('~'));
+
+class FilterASCII85 {
+    
+    function error($msg) {
+        die($msg);
+    }
+    
+    function decode($in) {
+        $out = '';
+        $state = 0;
+        $chn = null;
+        
+        $l = strlen($in);
+        
+        for ($k = 0; $k < $l; ++$k) {
+            $ch = ord($in[$k]) & 0xff;
+            
+            if ($ch == ORD_tilde) {
+                break;
+            }
+            if (preg_match('/^\s$/',chr($ch))) {
+                continue;
+            }
+            if ($ch == ORD_z && $state == 0) {
+                $out .= chr(0).chr(0).chr(0).chr(0);
+                continue;
+            }
+            if ($ch < ORD_exclmark || $ch > ORD_u) {
+                $this->error('Illegal character in ASCII85Decode.');
+            }
+            
+            $chn[$state++] = $ch - ORD_exclmark;
+            
+            if ($state == 5) {
+                $state = 0;
+                $r = 0;
+                for ($j = 0; $j < 5; ++$j)
+                    $r = $r * 85 + $chn[$j];
+                $out .= chr($r >> 24);
+                $out .= chr($r >> 16);
+                $out .= chr($r >> 8);
+                $out .= chr($r);
+            }
+        }
+        $r = 0;
+        
+        if ($state == 1)
+            $this->error('Illegal length in ASCII85Decode.');
+        if ($state == 2) {
+            $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
+            $out .= chr($r >> 24);
+        }
+        else if ($state == 3) {
+            $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + ($chn[2]+1) * 85 * 85;
+            $out .= chr($r >> 24);
+            $out .= chr($r >> 16);
+        }
+        else if ($state == 4) {
+            $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + $chn[2] * 85 * 85  + ($chn[3]+1) * 85 ;
+            $out .= chr($r >> 24);
+            $out .= chr($r >> 16);
+            $out .= chr($r >> 8);
+        }
+
+        return $out;
+    }
+    
+    function encode($in) {
+        $this->error("ASCII85 encoding not implemented.");
+    }
+}

+ 154 - 0
main/inc/lib/mpdf/mpdfi/filters/FilterLZW.php

@@ -0,0 +1,154 @@
+<?php
+//
+//  FPDI - Version 1.3.1
+//
+//    Copyright 2004-2009 Setasign - Jan Slabon
+//
+//  Licensed under the Apache License, Version 2.0 (the "License");
+//  you may not use this file except in compliance with the License.
+//  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+
+class FilterLZW {
+    
+    var $sTable = array();
+    var $data = null;
+    var $dataLength = 0;
+    var $tIdx;
+    var $bitsToGet = 9;
+    var $bytePointer;
+    var $bitPointer;
+    var $nextData = 0;
+    var $nextBits = 0;
+    var $andTable = array(511, 1023, 2047, 4095);
+
+    function error($msg) {
+        die($msg);
+    }
+    
+    /**
+     * Method to decode LZW compressed data.
+     *
+     * @param string data    The compressed data.
+     */
+    function decode($data) {
+
+        if($data[0] == 0x00 && $data[1] == 0x01) {
+            $this->error('LZW flavour not supported.');
+        }
+
+        $this->initsTable();
+
+        $this->data = $data;
+        $this->dataLength = strlen($data);
+
+        // Initialize pointers
+        $this->bytePointer = 0;
+        $this->bitPointer = 0;
+
+        $this->nextData = 0;
+        $this->nextBits = 0;
+
+        $oldCode = 0;
+
+        $string = '';
+        $uncompData = '';
+
+        while (($code = $this->getNextCode()) != 257) {
+            if ($code == 256) {
+                $this->initsTable();
+                $code = $this->getNextCode();
+
+                if ($code == 257) {
+                    break;
+                }
+
+                $uncompData .= $this->sTable[$code];
+                $oldCode = $code;
+
+            } else {
+
+                if ($code < $this->tIdx) {
+                    $string = $this->sTable[$code];
+                    $uncompData .= $string;
+
+                    $this->addStringToTable($this->sTable[$oldCode], $string[0]);
+                    $oldCode = $code;
+                } else {
+                    $string = $this->sTable[$oldCode];
+                    $string = $string.$string[0];
+                    $uncompData .= $string;
+
+                    $this->addStringToTable($string);
+                    $oldCode = $code;
+                }
+            }
+        }
+        
+        return $uncompData;
+    }
+
+
+    /**
+     * Initialize the string table.
+     */
+    function initsTable() {
+        $this->sTable = array();
+
+        for ($i = 0; $i < 256; $i++)
+            $this->sTable[$i] = chr($i);
+
+        $this->tIdx = 258;
+        $this->bitsToGet = 9;
+    }
+
+    /**
+     * Add a new string to the string table.
+     */
+    function addStringToTable ($oldString, $newString='') {
+        $string = $oldString.$newString;
+
+        // Add this new String to the table
+        $this->sTable[$this->tIdx++] = $string;
+
+        if ($this->tIdx == 511) {
+            $this->bitsToGet = 10;
+        } else if ($this->tIdx == 1023) {
+            $this->bitsToGet = 11;
+        } else if ($this->tIdx == 2047) {
+            $this->bitsToGet = 12;
+        }
+    }
+
+    // Returns the next 9, 10, 11 or 12 bits
+    function getNextCode() {
+        if ($this->bytePointer == $this->dataLength) {
+            return 257;
+        }
+
+        $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
+        $this->nextBits += 8;
+
+        if ($this->nextBits < $this->bitsToGet) {
+            $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
+            $this->nextBits += 8;
+        }
+
+        $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9];
+        $this->nextBits -= $this->bitsToGet;
+
+        return $code;
+    }
+    
+    function encode($in) {
+        $this->error("LZW encoding not implemented.");
+    }
+}

+ 6 - 0
main/inc/lib/mpdf/mpdfi/filters/index.html

@@ -0,0 +1,6 @@
+<html>
+<head>
+</head>
+<body>
+</body>
+</html>

+ 47 - 46
main/inc/lib/mpdf/mpdfi/fpdi_pdf_parser.php

@@ -27,33 +27,33 @@ class fpdi_pdf_parser extends pdf_parser {
      * @var array
      */
     var $pages;
-    
+
     /**
      * Page count
      * @var integer
      */
     var $page_count;
-    
+
     /**
      * actual page number
      * @var integer
      */
     var $pageno;
-    
-    
+
+
     /**
      * FPDI Reference
      * @var object
      */
     var $fpdi;
-    
+
     /**
      * Available BoxTypes
      *
      * @var array
      */
     var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
-        
+
     /**
      * Constructor
      *
@@ -78,8 +78,8 @@ class fpdi_pdf_parser extends pdf_parser {
         // count pages;
         $this->page_count = count($this->pages);
     }
-    
-    
+
+
     /**
      * Get pagecount from sourcefile
      *
@@ -104,7 +104,7 @@ class fpdi_pdf_parser extends pdf_parser {
 
         $this->pageno = $pageno;
     }
-    
+
     /**
      * Get page-resources from current page
      *
@@ -113,7 +113,7 @@ class fpdi_pdf_parser extends pdf_parser {
     function getPageResources() {
         return $this->_getPageResources($this->pages[$this->pageno]);
     }
-    
+
     /**
      * Get page-resources from /Page
      *
@@ -153,18 +153,18 @@ class fpdi_pdf_parser extends pdf_parser {
      */
     function getContent() {
         $buffer = "";
-        
+
         if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
             $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
             foreach($contents AS $tmp_content) {
                 $buffer .= $this->_rebuildContentStream($tmp_content).' ';
             }
         }
-        
+
         return $buffer;
     }
-    
-    
+
+
     /**
      * Resolve all content-objects
      *
@@ -173,7 +173,7 @@ class fpdi_pdf_parser extends pdf_parser {
      */
     function _getPageContent($content_ref) {
         $contents = array();
-        
+
         if ($content_ref[0] == PDF_TYPE_OBJREF) {
             $content = $this->pdf_resolve_object($this->c, $content_ref);
             if ($content[1][0] == PDF_TYPE_ARRAY) {
@@ -199,7 +199,7 @@ class fpdi_pdf_parser extends pdf_parser {
      */
     function _rebuildContentStream($obj) {
         $filters = array();
-        
+
         if (isset($obj[1][1]['/Filter'])) {
             $_filter = $obj[1][1]['/Filter'];
 
@@ -215,37 +215,38 @@ class fpdi_pdf_parser extends pdf_parser {
         foreach ($filters AS $_filter) {
             switch ($_filter[1]) {
                 case "/FlateDecode":
-                    if (function_exists('gzuncompress')) {
-                        $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';                        
-                    } else {
+			if (function_exists('gzuncompress')) {
+                        $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';
+			} else {
                         $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1]));
-                    }
-                    if ($stream === false) { 
+			}
+			if ($stream === false) {
                         $this->fpdi->error("Error while decompressing stream.");
-                    }
+			}
                 break;
+			// mPDF 4.2.003
+                case '/LZWDecode':
+			include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php');
+			$decoder =& new FilterLZW();
+			$stream = $decoder->decode($stream);
+			break;
+                case '/ASCII85Decode':
+			include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php');
+			$decoder =& new FilterASCII85();
+			$stream = $decoder->decode($stream);
+			break;
                 case null:
-                    $stream = $stream;
-                break;
+			$stream = $stream;
+			break;
                 default:
-                    if (preg_match("/^\/[a-z85]*$/i", $_filter[1], $filterName) && @include_once('decoders'.$_filter[1].'.php')) {
-                        $filterName = substr($_filter[1],1);
-                        if (class_exists($filterName)) {
-    	                	$decoder =& new $filterName($this->fpdi);
-    	                    $stream = $decoder->decode(trim($stream));
-                        } else {
-                        	$this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
-                        }
-                    } else {
-                        $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
-                    }
+			$this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
             }
         }
-        
+
         return $stream;
     }
-    
-    
+
+
     /**
      * Get a Box from a page
      * Arrayformat is same as used by fpdf_tpl
@@ -259,12 +260,12 @@ class fpdi_pdf_parser extends pdf_parser {
         $box = null;
         if (isset($page[1][1][$box_index]))
             $box =& $page[1][1][$box_index];
-        
+
         if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
             $tmp_box = $this->pdf_resolve_object($this->c,$box);
             $box = $tmp_box[1];
         }
-            
+
         if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
             $b =& $box[1];
             return array("x" => $b[0][1]/$this->fpdi->k,
@@ -281,7 +282,7 @@ class fpdi_pdf_parser extends pdf_parser {
     function getPageBoxes($pageno) {
         return $this->_getPageBoxes($this->pages[$pageno-1]);
     }
-    
+
     /**
      * Get all Boxes from /Page
      *
@@ -303,7 +304,7 @@ class fpdi_pdf_parser extends pdf_parser {
     function getPageRotation($pageno) {
         return $this->_getPageRotation($this->pages[$pageno-1]);
     }
-    
+
     function _getPageRotation ($obj) { // $obj = /Page
     	$obj = $this->pdf_resolve_object($this->c, $obj);
     	if (isset ($obj[1][1]['/Rotate'])) {
@@ -322,7 +323,7 @@ class fpdi_pdf_parser extends pdf_parser {
     		}
     	}
     }
-    
+
     /**
      * Read all /Page(es)
      *
@@ -352,9 +353,9 @@ class fpdi_pdf_parser extends pdf_parser {
     	}
     }
 
-    
-    
-    
+
+
+
 }
 
 ?>

+ 0 - 723
main/inc/lib/mpdf/mpdfi/mpdfi.php

@@ -1,723 +0,0 @@
-<?php
-//  mPDF v2.4 Extension for PDF templates & overwriting placeholders
-//  This was adapted from FPDI - Licence reproduced below as for original
-//
-//  FPDI - Version 1.2
-//
-//	Copyright 2004-2007 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//	  http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-
-
-ini_set('auto_detect_line_endings',1); // Strongly required!
-
-require_once(_MPDF_PATH."mpdfi/pdf_context.php");
-require_once(_MPDF_PATH."mpdfi/pdf_parser.php");
-require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php");
-
-
-class mPDFI extends mPDF {
-	var $current_filename;
-	var $parsers;
-	var $current_parser;
-	var $_obj_stack;
-	var $_don_obj_stack;
-	var $_current_obj_id;
-
-	// from FPDF_TPL
-	var $tpls = array();
-	var $tpl = 0;
-	var $tplprefix = "/TPL";
-	var $_res = array();
-
-
-
-	function mPDFI($codepage='win-1252',$format='A4',$default_font_size=0,$default_font='',$mgl=15,$mgr=15,$mgt=16,$mgb=16,$mgh=9,$mgf=9, $orientation='P') {
-		parent::mPDF($codepage,$format,$default_font_size,$default_font,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $orientation);
-	}
-
-
-	// from FPDF_TPL
-	function GetTemplateSize($tplidx, $_w=0, $_h=0) {
-		if (!$this->tpls[$tplidx])
-			return false;
-		$w = $this->tpls[$tplidx]['box']['w'];
-		$h = $this->tpls[$tplidx]['box']['h'];
-		if ($_w == 0 and $_h == 0) {
-			$_w = $w;
-			$_h = $h;
-		}
-		if($_w==0)
-			$_w=$_h*$w/$h;
-		if($_h==0)
-			$_h=$_w*$h/$w;
-		return array("w" => $_w, "h" => $_h);
-	}
-
-	// Thumbnails
-	// mPDF 2.3 Templates
-	function Thumbnail($file, $npr=3, $spacing=10) {	//$npr = number per row
-		$w = (($this->pgwidth + $spacing)/$npr) - $spacing;
-		$oldlinewidth = $this->LineWidth;
-		$this->SetLineWidth(0.02); $this->SetDrawColor(0);
-		$h = 0;
-		$maxh = 0;
-		$x = $_x = $this->lMargin;
-		$_y = $this->tMargin;
-		if ($this->y==0) { $y = $_y; } else { $y = $this->y; }
-		$pagecount = $this->SetSourceFile($file);
-		for ($n = 1; $n <= $pagecount; $n++) {
-			$tplidx = $this->ImportPage($n);
-			$size = $this->useTemplate($tplidx, $x, $y, $w);
-			$this->Rect($x, $y, $size['w'], $size['h']);
-			$h = max($h, $size['h']);
-			$maxh = max($h, $maxh);
-			if ($n % $npr == 0) {
-			   if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) {
-				$this->AddPage();
-				$x = $_x;
-				$y = $_y;
-			   }
-			   else {
-				$y += $h+$spacing ;
-				$x = $_x;
-				$h = 0;
-			   }
-			}
-			else {
-				$x += $w+$spacing ;
-			}
-		}
-		$this->SetLineWidth($oldlinewidth);
-	}
-
-	function SetSourceFile($filename) {
-		$this->current_filename = $filename;
-		$fn =& $this->current_filename;
-		if (!isset($this->parsers[$fn]))
-			$this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this);
-		if (!$this->parsers[$fn]->success) {
-			$this->Error($this->parsers[$fn]->errormsg);	// Delete this line to return false on fail
-			return false;
-		}
-		$this->current_parser =& $this->parsers[$fn];
-		return $this->parsers[$fn]->getPageCount();
-	}
-
-	function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') {
-		$fn =& $this->current_filename;
-
-		$parser =& $this->parsers[$fn];
-		$parser->setPageno($pageno);
-
-		$this->tpl++;
-		$this->tpls[$this->tpl] = array();
-		$tpl =& $this->tpls[$this->tpl];
-		$tpl['parser'] =& $parser;
-		$tpl['resources'] = $parser->getPageResources();
-		$tpl['buffer'] = $parser->getContent();
-
-		if (!in_array($boxName, $parser->availableBoxes))
-			return $this->Error(sprintf("Unknown box: %s", $boxName));
-		$pageboxes = $parser->getPageBoxes($pageno);
-
-		/**
-		 * MediaBox
-		 * CropBox: Default -> MediaBox
-		 * BleedBox: Default -> CropBox
-		 * TrimBox: Default -> CropBox
-		 * ArtBox: Default -> CropBox
-		 */
-		if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox"))
-			$boxName = "/CropBox";
-		if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox")
-			$boxName = "/MediaBox";
-
-		if (!isset($pageboxes[$boxName]))
-			return false;
-
-		$box = $pageboxes[$boxName];
-
-		$tpl['box'] = $box;
-		// To build an array that can be used by useTemplate()
-		$this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box);
-		// An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects()
-		$tpl['x'] = 0;
-		$tpl['y'] = 0;
-
-		$tpl['w'] = $tpl['box']['w'] ;
-		$tpl['h'] = $tpl['box']['h'] ;
-		if ($crop_w) { $tpl['box']['w'] = $crop_w; }
-		if ($crop_h) { $tpl['box']['h'] = $crop_h; }
-		if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; }
-		if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y  - $crop_h ; }
-
-		$page =& $parser->pages[$parser->pageno];
-
-		// fix for rotated pages
-		$rotation = $parser->getPageRotation($pageno);
-
-		if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) {
-			$steps = $angle / 90;
-
-			$_w = $tpl['w'];
-			$_h = $tpl['h'];
-			$tpl['w'] = $steps % 2 == 0 ? $_w : $_h;
-			$tpl['h'] = $steps % 2 == 0 ? $_h : $_w;
-
-			if ($steps % 2 != 0) {
-				$x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w'];
-			} else {
-				$x = $tpl['w'];
-				$y = $tpl['h'];
-			}
-
-			$cx=($x/2+$tpl['box']['x'])*$this->k;
-			$cy=($y/2+$tpl['box']['y'])*$this->k;
-
-			$angle*=-1;
-
-			$angle*=M_PI/180;
-			$c=cos($angle);
-			$s=sin($angle);
-			$tpl['box']['w'] = $tpl['w'] ;
-			$tpl['box']['h'] = $tpl['h'] ;
-
-			$tpl['buffer'] = sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']);
-		}
-
-		return $this->tpl;
-	}
-
-	function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) {
-		if (!isset($this->tpls[$tplidx]))
-			$this->Error("Template does not exist!");
-		if($this->state==0) { $this->AddPage(); }
-		$this->_out('q 0 J 1 w 0 j 0 G'); // reset standard values
-
-		$x = $this->tpls[$tplidx]['x'];
-		$y = $this->tpls[$tplidx]['y'];
-		$w = $this->tpls[$tplidx]['w'];
-		$h = $this->tpls[$tplidx]['h'];
-		if ($_x == null) { $_x = $x; }
-		if ($_y == null) { $_y = $y; }
-		if ($_x === -1) { $_x = $this->x; }
-		if ($_y === -1) { $_y = $this->y; }
-
-
-		$wh = $this->getTemplateSize($tplidx,$_w,$_h);
-		$_w = $wh['w'];
-		$_h = $wh['h'];
-
-		$this->_out(sprintf("q %.4f 0 0 %.4f %.2f %.2f cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*$this->k, ($this->h-($_y+$_h))*$this->k));
-		$this->_out($this->tplprefix.$tplidx." Do Q");
-
-		$s = array("w" => $_w, "h" => $_h);
-		$this->_out('Q');
-		return $s;
-	}
-
-	function SetPageTemplate($tplidx='') {
-		if (!isset($this->tpls[$tplidx])) {
-			$this->pageTemplate = '';
-			return false;
-		}
-		$this->pageTemplate = $tplidx;
-	}
-
-	function SetDocTemplate($file='', $continue=0) {
-		$this->docTemplate = $file;
-		$this->docTemplateContinue = $continue;
-	}
-
-
-//=========================================================================
-// Overwrite mPDF functions
-
-function _putresources() {
-	$this->_putextgstates();
-	$this->_putfonts();
-	$this->_putimages();
-
-	// mPDF 2.2 for WMF
-	$this->_putformobjects();
-	// from FPDF_TPL
-	$this->_putformxobjects();
-	$this->_putimportedobjects();
-
-	//Resource dictionary
-	$this->offsets[2]=strlen($this->buffer);
-	$this->_out('2 0 obj');
-	$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
-	$this->_out('/Font <<');
-	foreach($this->fonts as $font)
-		$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
-	$this->_out('>>');
-
-	// mPDF 1.2
-	if (count($this->extgstates)) {
-		$this->_out('/ExtGState <<');
-		foreach($this->extgstates as $k=>$extgstate)
-			$this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
-		$this->_out('>>');
-	}
-
-	// mPDF 2.2. for WMF
-	// Edited
-	if(count($this->images) or count($this->formobjects) || count($this->tpls))	{
-		$this->_out('/XObject <<');
-		foreach($this->images as $image)
-			$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
-		foreach($this->formobjects as $formobject)
-			$this->_out('/FO'.$formobject['i'].' '.$formobject['n'].' 0 R');
-		// from FPDF_TPL function _putxobjectdict()
-	   	if (count($this->tpls)) {
-			foreach($this->tpls as $tplidx => $tpl) {
-				$this->_out($this->tplprefix.$tplidx.' '.$tpl['n'].' 0 R');
-			}
-		}
-		$this->_out('>>');
-	}
-	$this->_out('>>');
-	$this->_out('endobj');	// end resource dictionary
-
-	$this->_putbookmarks(); //EDITEI
-
-	if ($this->encrypted) {
-		$this->_newobj();
-		$this->enc_obj_id = $this->n;
-		$this->_out('<<');
-		$this->_putencryption();
-		$this->_out('>>');
-		$this->_out('endobj');
-	}
-}
-
-// Overwrite mPDF functions
-	function _enddoc() {
-		parent::_enddoc();
-		if ($this->state > 2 && count($this->parsers) > 0) {
-		  	foreach ($this->parsers as $k => $_){
-				$this->parsers[$k]->closeFile();
-				$this->parsers[$k] = null;
-				unset($this->parsers[$k]);
-			}
-		}
-	}
-
-// Overwrite mPDF functions
-	function _newobj($obj_id=false,$onlynewobj=false) {
-		if (!$obj_id) {
-			$obj_id = ++$this->n;
-		}
-		//Begin a new object
-		if (!$onlynewobj) {
-			$this->offsets[$obj_id] = strlen($this->buffer);
-			$this->_out($obj_id.' 0 obj');
-			$this->_current_obj_id = $obj_id; // for later use with encryption
-		}
-	}
-
-// These all use $this->_current_obj_id instead of $this->n (cf. _newobj above)
-function _UTF16BEtextstring($s) {
-	$s = $this->UTF8ToUTF16BE($s, true);
-	if ($this->encrypted) {
-		$s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
-	}
-	return '('. $this->_escape($s).')';
-}
-
-function _textstring($s) {
-	if ($this->encrypted) {
-		$s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
-	}
-	return '('. $this->_escape($s).')';
-}
-
-
-function _putstream($s) {
-	if ($this->encrypted) {
-		$s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
-	}
-	$this->_out('stream');
-	$this->_out($s);
-	$this->_out('endstream');
-}
-
-//=========================================================================
-
-
-
-// New functions
-	function _putimportedobjects() {
-		if (is_array($this->parsers) && count($this->parsers) > 0) {
-			foreach($this->parsers AS $filename => $p) {
-				$this->current_parser =& $this->parsers[$filename];
-				if (is_array($this->_obj_stack[$filename])) {
-					while($n = key($this->_obj_stack[$filename])) {
-						$nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]);
-						$this->_newobj($this->_obj_stack[$filename][$n][0]);
-						if ($nObj[0] == PDF_TYPE_STREAM) {
-							$this->pdf_write_value($nObj);
-						}
-						else {
-							$this->pdf_write_value($nObj[1]);
-						}
-						$this->_out('endobj');
-						$this->_obj_stack[$filename][$n] = null; // free memory
-						unset($this->_obj_stack[$filename][$n]);
-						reset($this->_obj_stack[$filename]);
-					}
-				}
-			}
-		}
-	}
-
-
-
-	function _putformxobjects() {
-		$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-		reset($this->tpls);
-		foreach($this->tpls AS $tplidx => $tpl) {
-			$p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
-			$this->_newobj();
-			$this->tpls[$tplidx]['n'] = $this->n;
-			$this->_out('<<'.$filter.'/Type /XObject');
-			$this->_out('/Subtype /Form');
-			$this->_out('/FormType 1');
-
-			// Left/Bottom/Right/Top
-			$this->_out(sprintf('/BBox [%.2f %.2f %.2f %.2f]',
-				$tpl['box']['x']*$this->k,
-				$tpl['box']['y']*$this->k,
-				($tpl['box']['x'] + $tpl['box']['w'])*$this->k,
-				($tpl['box']['y'] + $tpl['box']['h'])*$this->k  )
-			);
-
-
-			if (isset($tpl['box']))
-				$this->_out(sprintf('/Matrix [1 0 0 1 %.5f %.5f]',-$tpl['box']['x']*$this->k, -$tpl['box']['y']*$this->k));
-
-			$this->_out('/Resources ');
-
-			if (isset($tpl['resources'])) {
-				$this->current_parser =& $tpl['parser'];
-				$this->pdf_write_value($tpl['resources']);
-			} else {
-				$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
-					if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
-						$this->_out('/Font <<');
-						foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
-							$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
-						$this->_out('>>');
-				}
-					if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) ||
-					   isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
-					{
-						$this->_out('/XObject <<');
-						if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
-							foreach($this->_res['tpl'][$tplidx]['images'] as $image)
-								$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
-						}
-						if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
-							foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl)
-								$this->_out($this->tplprefix.$i.' '.$tpl['n'].' 0 R');
-						}
-						$this->_out('>>');
-					}
-					$this->_out('>>');
-			}
-
-			$this->_out('/Length '.strlen($p).' >>');
-			$this->_putstream($p);
-			$this->_out('endobj');
-		}
-	}
-
-//=========================================================================
-	function hex2str($hex) {
-		return pack("H*", str_replace(array("\r","\n"," "),"", $hex));
-	}
-
-	function str2hex($str) {
-		return current(unpack("H*",$str));
-	}
-
-
-
-
-	function pdf_write_value(&$value) {
-		switch ($value[0]) {
-			case PDF_TYPE_NUMERIC :
-			case PDF_TYPE_TOKEN :
-				// A numeric value or a token.
-				// Simply output them
-				$this->_out($value[1]." ", false);
-				break;
-
-			case PDF_TYPE_ARRAY :
-				// An array. Output the proper
-				// structure and move on.
-				$this->_out("[",false);
-				for ($i = 0; $i < count($value[1]); $i++) {
-					$this->pdf_write_value($value[1][$i]);
-				}
-				$this->_out("]");
-				break;
-
-			case PDF_TYPE_DICTIONARY :
-				// A dictionary.
-				$this->_out("<<",false);
-				reset ($value[1]);
-				while (list($k, $v) = each($value[1])) {
-					$this->_out($k . " ",false);
-					$this->pdf_write_value($v);
-				}
-				$this->_out(">>");
-				break;
-
-			case PDF_TYPE_OBJREF :
-				// An indirect object reference
-				// Fill the object stack if needed
-				$cpfn =& $this->current_parser->filename;
-				if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) {
-						$this->_newobj(false,true);
-						$this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
-						$this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
-				}
-				$objid = $this->_don_obj_stack[$cpfn][$value[1]][0];
-				$this->_out("{$objid} 0 R"); //{$value[2]}
-				break;
-
-			case PDF_TYPE_STRING :
-				if ($this->encrypted) {
-					$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
-					$value[1] = $this->_escape($value[1]);
-				}
-				// A string.
-				$this->_out('('.$value[1].')');
-				break;
-
-			case PDF_TYPE_STREAM :
-				// A stream. First, output the
-				// stream dictionary, then the
-				// stream data itself.
-				$this->pdf_write_value($value[1]);
-				if ($this->encrypted) {
-					$value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
-				}
-				$this->_out("stream");
-				$this->_out($value[2][1]);
-				$this->_out("endstream");
-				break;
-
-			case PDF_TYPE_HEX :
-				if ($this->encrypted) {
-					$value[1] = $this->hex2str($value[1]);
-					$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
-					// remake hexstring of encrypted string
-					$value[1] = $this->str2hex($value[1]);
-				}
-				$this->_out("<".$value[1].">");
-				break;
-
-			case PDF_TYPE_NULL :
-				// The null object.
-				$this->_out("null");
-				break;
-		}
-	}
-
-    // ========== OVERWRITE SEARCH STRING IN A PDF FILE ================
-    function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) {
-	$pdf = file_get_contents($file_in);
-
-	if (!is_array($search)) {
-		$x = $search;
-		$search = array($x);
-	}
-	if (!is_array($replacement)) {
-		$x = $replacement;
-		$search = array($x);
-	}
-
-	if ($this->isunicode && !$this->isCJK) {
-	  foreach($search AS $k=>$val) {
-		$search[$k] = $this->UTF8ToUTF16BE($search[$k] , false);
-		$search[$k] = $this->_escape($search[$k]);
-		$replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false);
-		$replacement[$k] = $this->_escape($replacement[$k]);
-	  }
-	}
-	else {
-	  foreach($replacement AS $k=>$val) {
-	  	// Modified by Ivan Tcholakov, 28-JAN-2010.
-		//$replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_encoding,'utf-8');
-		$replacement[$k] = api_convert_encoding($replacement[$k],$this->mb_encoding,'utf-8');
-		//
-		$replacement[$k] = $this->_escape($replacement[$k]);
-	  }
-	}
-
-	// Get xref into array
-	$xref = array();
-	preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m);
-	$xref_objid = $m[1];
-	preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x);
-	for($i=0; $i<count($x[0]); $i++) {
-		$xref[] = array(intval($x[1][$i]), $x[2][$i], $x[3][$i]);
-	}
-
-	$changes = array();
-	preg_match("/<<\/Type \/Pages\n\/Kids \[(.*?)\]\n\/Count/s",$pdf,$m);
-	preg_match_all("/(\d+) 0 R /s",$m[1],$o);
-	$objlist = $o[1];
-	foreach($objlist AS $obj) {
-	  if ($this->compress) {
-	  	preg_match("/".($obj+1)." 0 obj\n<<\/Filter \/FlateDecode \/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
-	  }
-	  else {
-	  	preg_match("/".($obj+1)." 0 obj\n<<\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
-	  }
-	  $s = $m[2];
-	  $oldlen = $m[1];
-	  if ($this->encrypted) {
-		$s = $this->_RC4($this->_objectkey($obj+1), $s);
-	  }
-	  if ($this->compress) {
-	  	$s = gzuncompress($s);
-	  }
-  	  foreach($search AS $k=>$val) {
-		$s = str_replace($search[$k],$replacement[$k],$s);
-	  }
-	  if ($this->compress) {
-		$s = gzcompress($s);
-	  }
-	  if ($this->encrypted) {
-		$s = $this->_RC4($this->_objectkey($obj+1), $s);
-	  }
-	  $newlen = strlen($s);
-	  $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen ));
-	  if ($this->compress) {
-	  	$newstr = ($obj+1) . " 0 obj\n<</Filter /FlateDecode /Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
-	  }
-	  else {
-	  	$newstr = ($obj+1) . " 0 obj\n<</Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
-	  }
-	  $pdf = str_replace($m[0],$newstr,$pdf);
-	}
-
-	// Update xref in PDF
-	krsort($changes);
-	$newxref = "xref\n0 ".$xref_objid."\n";
-	foreach($xref AS $v) {
-		foreach($changes AS $ck => $cv) {
-			if ($v[0] > $ck) { $v[0] += $cv; }
-		}
-		$newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n";
-	}
-	$newxref .= "trailer";
-	$pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf);
-
-	// Update startxref in PDF
-	preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m);
-	$startxref = $m[1];
-	$startxref += array_sum($changes);
-	$pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf);
-
-	// OUTPUT
-	switch($dest) {
-		case 'I':
-			//Send to standard output
-			if(isset($_SERVER['SERVER_NAME']))
-			{
-				//We send to a browser
-				Header('Content-Type: application/pdf');
-				Header('Content-Length: '.strlen($pdf));
-				Header('Content-disposition: inline; filename='.$file_out);
-			}
-			echo $pdf;
-			break;
-		case 'F':
-			//Save to local file
-			if (!$file_out) { $file_out = 'mpdf.pdf'; }
-			$f=fopen($file_out,'wb');
-			if(!$f) die('Unable to create output file: '.$file_out);
-			fwrite($f,$pdf,strlen($pdf));
-			fclose($f);
-			break;
-		case 'S':
-			//Return as a string
-			return $pdf;
-		case 'D':
-		default:
-			//Download file
-			if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
-				Header('Content-Type: application/force-download');
-			else
-				Header('Content-Type: application/octet-stream');
-			Header('Content-Length: '.strlen($pdf));
-			Header('Content-disposition: attachment; filename='.$file_out);
- 			echo $pdf;
-			break;
-	}
-    }
-
-    //==========================================================================
-
-
-
-}
-// END OF CLASS
-
-function _strspn($str1, $str2, $start=null, $length=null) {
-	$numargs = func_num_args();
-	if ($numargs == 2) {
-		return strspn($str1, $str2);
-	}
-	else if ($numargs == 3) {
-		return strspn($str1, $str2, $start);
-	}
-	else {
-		return strspn($str1, $str2, $start, $length);
-	}
-}
-
-
-function _strcspn($str1, $str2, $start=null, $length=null) {
-	$numargs = func_num_args();
-	if ($numargs == 2) {
-		return strcspn($str1, $str2);
-	}
-	else if ($numargs == 3) {
-		return strcspn($str1, $str2, $start);
-	}
-	else {
-		return strcspn($str1, $str2, $start, $length);
-	}
-}
-
-function _fgets (&$h, $force=false) {
-	$startpos = ftell($h);
-	$s = fgets($h, 1024);
-	if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
-		$s = $ns[1];
-		fseek($h,$startpos+strlen($s));
-	}
-	return $s;
-}
-
-
-
-?>

+ 11 - 11
main/inc/lib/mpdf/progress/out.php

@@ -3,9 +3,9 @@
 $tempfilename = $_REQUEST['filename'].'.pdf';
 $opname = $_REQUEST['opname'];
 $dest = $_REQUEST['dest'];
-	// Modified by Ivan Tcholakov, 28-JAN-2010.
+	// Modified by Ivan Tcholakov, 28-JUN-2010.
 	//if ($tempfilename && file_exists('../tmp/'.$tempfilename)) {
-	if ($tempfilename && file_exists(_MPDF_TMP_PATH.$tempfilename)) {
+	if ($tempfilename && file_exists(_MPDF_TEMP_PATH.$tempfilename)) {
 	//
 		header("Pragma: ");
 		header("Cache-Control: private");
@@ -34,20 +34,20 @@ $dest = $_REQUEST['dest'];
 			}
 			header('Content-disposition: attachment; filename='.$opname);
 		}
-		// Modified by Ivan Tcholakov, 28-JAN-2010.
+		// Modified by Ivan Tcholakov, 28-JUN-2010.
 		//$filesize = filesize('../tmp/'.$tempfilename);
-		$filesize = filesize(_MPDF_TMP_PATH.$tempfilename);
+		$filesize = filesize(_MPDF_TEMP_PATH.$tempfilename);
 		//
 		header("Content-length:".$filesize);
-		// Modified by Ivan Tcholakov, 28-JAN-2010.
+		// Modified by Ivan Tcholakov, 28-JUN-2010.
 		//$fd=fopen('../tmp/'.$tempfilename,'r');
-		$fd=fopen(_MPDF_TMP_PATH.$tempfilename,'r');
+		$fd=fopen(_MPDF_TEMP_PATH.$tempfilename,'r');
 		//
 		fpassthru($fd);
 		fclose($fd);
-		// Modified by Ivan Tcholakov, 28-JAN-2010.
+		// Modified by Ivan Tcholakov, 28-JUN-2010.
 		//unlink('../tmp/'.$tempfilename);
-		unlink(_MPDF_TMP_PATH.$tempfilename);
+		unlink(_MPDF_TEMP_PATH.$tempfilename);
 		//
 		// ====================== DELETE OLD FILES FIRST - Housekeeping =========================================
 		// Clear any files in directory that are >24 hrs old
@@ -61,10 +61,10 @@ $dest = $_REQUEST['dest'];
 		//   }
 		//   closedir($handle);
 		//}
-		if ($handle = opendir(_MPDF_TMP_PATH)) {
+		if ($handle = opendir(_MPDF_TEMP_PATH)) {
 		   while (false !== ($file = readdir($handle))) {
-			if (((filemtime(_MPDF_TMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) {
-				unlink(_MPDF_TMP_PATH.$file);
+			if (((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) {
+				unlink(_MPDF_TEMP_PATH.$file);
 			}
 		   }
 		   closedir($handle);

BIN
main/inc/lib/mpdf/unifont/garuda.ctg.z


+ 18 - 18
main/inc/lib/mpdf/unifont/garuda.php

@@ -1,8 +1,8 @@
 <?php
 $type='TrueTypeUnicode';
 $name='Garuda';
-$desc=array('Ascent'=>1288,'Descent'=>-605,'CapHeight'=>1288,'Flags'=>32,'FontBBox'=>'[-659 -605 1090 1288]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
-$up=-27;
+$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>32,'FontBBox'=>'[-659 -589 1090 1288]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
+$up=-32;
 $ut=10;
 $cw=array(
 	32=>340, 33=>277, 34=>354, 35=>556, 36=>556, 37=>889, 38=>666, 39=>190, 40=>332, 41=>332, 42=>387, 43=>583, 44=>277, 45=>332, 46=>277, 47=>277, 
@@ -10,26 +10,26 @@ $cw=array(
 	64=>1014, 65=>666, 66=>666, 67=>721, 68=>721, 69=>666, 70=>610, 71=>777, 72=>721, 73=>277, 74=>499, 75=>666, 76=>556, 77=>832, 78=>721, 79=>777, 
 	80=>666, 81=>777, 82=>721, 83=>666, 84=>610, 85=>721, 86=>666, 87=>944, 88=>666, 89=>666, 90=>610, 91=>277, 92=>277, 93=>277, 94=>469, 95=>556, 
 	96=>332, 97=>556, 98=>556, 99=>499, 100=>556, 101=>556, 102=>277, 103=>556, 104=>556, 105=>222, 106=>222, 107=>499, 108=>222, 109=>832, 110=>556, 111=>556, 
-	112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 127=>1532, 
-	8218=>222, 402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528, 
-	8211=>548, 8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554, 
-	168=>332, 169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277, 
-	184=>332, 185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721, 
-	200=>666, 201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583, 
-	216=>777, 217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499, 
-	232=>556, 233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548, 
-	248=>610, 249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 
-	63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 
-	3585=>626, 3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>833, 3598=>668, 3599=>663, 3600=>528, 
-	3601=>815, 3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>643, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712, 
-	3617=>665, 3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510, 
-	3633=>0, 3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 3647=>629, 3648=>340, 3649=>600, 
+	112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 8218=>222, 
+	402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528, 8211=>548, 
+	8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554, 168=>332, 
+	169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277, 184=>332, 
+	185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721, 200=>666, 
+	201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583, 216=>777, 
+	217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499, 232=>556, 
+	233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548, 248=>610, 
+	249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0, 
+	63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>626, 
+	3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>800, 3598=>668, 3599=>663, 3600=>530, 3601=>815, 
+	3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>636, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712, 3617=>665, 
+	3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510, 3633=>0, 
+	3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 63263=>0, 3647=>629, 3648=>340, 3649=>600, 
 	3650=>413, 3651=>400, 3652=>449, 3653=>220, 3654=>565, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>599, 3664=>611, 3665=>611, 
 	3666=>611, 3667=>611, 3668=>611, 3669=>611, 3670=>611, 3671=>611, 3672=>611, 3673=>611, 3674=>625, 3675=>1105, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 
-	730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000);
+	730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000, 64256=>554, 64257=>499, 64258=>499, 64259=>776, 64260=>776, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
 $enc='';
 $diff='';
 $file='garuda.z';
 $ctg='garuda.ctg.z';
-$originalsize=40340;
+$originalsize=73732;
 ?>

+ 354 - 0
main/inc/lib/mpdf/unifont/garuda.uni2gn.php

@@ -0,0 +1,354 @@
+<?php
+		$this->uni2gn = array (
+  32 => 'space',
+  33 => 'exclam',
+  34 => 'quotedbl',
+  35 => 'numbersign',
+  36 => 'dollar',
+  37 => 'percent',
+  38 => 'ampersand',
+  39 => 'quotesingle',
+  40 => 'parenleft',
+  41 => 'parenright',
+  42 => 'asterisk',
+  43 => 'plus',
+  44 => 'comma',
+  45 => 'hyphen',
+  46 => 'period',
+  47 => 'slash',
+  48 => 'zero',
+  49 => 'one',
+  50 => 'two',
+  51 => 'three',
+  52 => 'four',
+  53 => 'five',
+  54 => 'six',
+  55 => 'seven',
+  56 => 'eight',
+  57 => 'nine',
+  58 => 'colon',
+  59 => 'semicolon',
+  60 => 'less',
+  61 => 'equal',
+  62 => 'greater',
+  63 => 'question',
+  64 => 'at',
+  65 => 'A',
+  66 => 'B',
+  67 => 'C',
+  68 => 'D',
+  69 => 'E',
+  70 => 'F',
+  71 => 'G',
+  72 => 'H',
+  73 => 'I',
+  74 => 'J',
+  75 => 'K',
+  76 => 'L',
+  77 => 'M',
+  78 => 'N',
+  79 => 'O',
+  80 => 'P',
+  81 => 'Q',
+  82 => 'R',
+  83 => 'S',
+  84 => 'T',
+  85 => 'U',
+  86 => 'V',
+  87 => 'W',
+  88 => 'X',
+  89 => 'Y',
+  90 => 'Z',
+  91 => 'bracketleft',
+  92 => 'backslash',
+  93 => 'bracketright',
+  94 => 'asciicircum',
+  95 => 'underscore',
+  96 => 'grave',
+  97 => 'a',
+  98 => 'b',
+  99 => 'c',
+  100 => 'd',
+  101 => 'e',
+  102 => 'f',
+  103 => 'g',
+  104 => 'h',
+  105 => 'i',
+  106 => 'j',
+  107 => 'k',
+  108 => 'l',
+  109 => 'm',
+  110 => 'n',
+  111 => 'o',
+  112 => 'p',
+  113 => 'q',
+  114 => 'r',
+  115 => 's',
+  116 => 't',
+  117 => 'u',
+  118 => 'v',
+  119 => 'w',
+  120 => 'x',
+  121 => 'y',
+  122 => 'z',
+  123 => 'braceleft',
+  124 => 'bar',
+  125 => 'braceright',
+  126 => 'asciitilde',
+  8218 => 'quotesinglbase',
+  402 => 'florin',
+  8222 => 'quotedblbase',
+  8230 => 'ellipsis',
+  8224 => 'dagger',
+  8225 => 'daggerdbl',
+  710 => 'circumflex',
+  8240 => 'perthousand',
+  352 => 'Scaron',
+  8249 => 'guilsinglleft',
+  338 => 'OE',
+  8216 => 'quoteleft',
+  8217 => 'quoteright',
+  8220 => 'quotedblleft',
+  8221 => 'quotedblright',
+  8226 => 'bullet',
+  8211 => 'endash',
+  8212 => 'emdash',
+  732 => 'tilde',
+  8482 => 'trademark',
+  353 => 'scaron',
+  8250 => 'guilsinglright',
+  339 => 'oe',
+  376 => 'Ydieresis',
+  160 => 'nbspace',
+  161 => 'exclamdown',
+  162 => 'cent',
+  163 => 'sterling',
+  164 => 'currency',
+  165 => 'yen',
+  166 => 'brokenbar',
+  167 => 'section',
+  168 => 'dieresis',
+  169 => 'copyright',
+  170 => 'ordfeminine',
+  171 => 'guillemotleft',
+  172 => 'logicalnot',
+  173 => 'minus',
+  174 => 'registered',
+  175 => 'macron',
+  176 => 'degree',
+  177 => 'plusminus',
+  178 => 'twosuperior',
+  179 => 'threesuperior',
+  180 => 'acute',
+  181 => 'mu',
+  182 => 'paragraph',
+  183 => 'periodcentered',
+  184 => 'cedilla',
+  185 => 'onesuperior',
+  186 => 'ordmasculine',
+  187 => 'guillemotright',
+  188 => 'onequarter',
+  189 => 'onehalf',
+  190 => 'threequarters',
+  191 => 'questiondown',
+  192 => 'Agrave',
+  193 => 'Aacute',
+  194 => 'Acircumflex',
+  195 => 'Atilde',
+  196 => 'Adieresis',
+  197 => 'Aring',
+  198 => 'AE',
+  199 => 'Ccedilla',
+  200 => 'Egrave',
+  201 => 'Eacute',
+  202 => 'Ecircumflex',
+  203 => 'Edieresis',
+  204 => 'Igrave',
+  205 => 'Iacute',
+  206 => 'Icircumflex',
+  207 => 'Idieresis',
+  208 => 'Eth',
+  209 => 'Ntilde',
+  210 => 'Ograve',
+  211 => 'Oacute',
+  212 => 'Ocircumflex',
+  213 => 'Otilde',
+  214 => 'Odieresis',
+  215 => 'multiply',
+  216 => 'Oslash',
+  217 => 'Ugrave',
+  218 => 'Uacute',
+  219 => 'Ucircumflex',
+  220 => 'Udieresis',
+  221 => 'Yacute',
+  222 => 'Thorn',
+  223 => 'germandbls',
+  224 => 'agrave',
+  225 => 'aacute',
+  226 => 'acircumflex',
+  227 => 'atilde',
+  228 => 'adieresis',
+  229 => 'aring',
+  230 => 'ae',
+  231 => 'ccedilla',
+  232 => 'egrave',
+  233 => 'eacute',
+  234 => 'ecircumflex',
+  235 => 'edieresis',
+  236 => 'igrave',
+  237 => 'iacute',
+  238 => 'icircumflex',
+  239 => 'idieresis',
+  240 => 'eth',
+  241 => 'ntilde',
+  242 => 'ograve',
+  243 => 'oacute',
+  244 => 'ocircumflex',
+  245 => 'otilde',
+  246 => 'odieresis',
+  247 => 'divide',
+  248 => 'oslash',
+  249 => 'ugrave',
+  250 => 'uacute',
+  251 => 'ucircumflex',
+  252 => 'udieresis',
+  253 => 'yacute',
+  254 => 'thorn',
+  255 => 'ydieresis',
+  63232 => 'uni0E10.descless',
+  63233 => 'uni0E34.left',
+  63234 => 'uni0E35.left',
+  63235 => 'uni0E36.left',
+  63236 => 'uni0E37.left',
+  63237 => 'uni0E48.low_left',
+  63238 => 'uni0E49.low_left',
+  63239 => 'uni0E4A.low_left',
+  63240 => 'uni0E4B.low_left',
+  63241 => 'uni0E4C.low_left',
+  63242 => 'uni0E48.low',
+  63243 => 'uni0E49.low',
+  63244 => 'uni0E4A.low',
+  63245 => 'uni0E4B.low',
+  63246 => 'uni0E4C.low',
+  63247 => 'uni0E0D.descless',
+  63248 => 'uni0E31.left',
+  63249 => 'uni0E4D.left',
+  63250 => 'uni0E47.left',
+  63251 => 'uni0E48.left',
+  63252 => 'uni0E49.left',
+  63253 => 'uni0E4A.left',
+  63254 => 'uni0E4B.left',
+  63255 => 'uni0E4C.left',
+  3585 => 'uni0E01',
+  3586 => 'uni0E02',
+  3587 => 'uni0E03',
+  3588 => 'uni0E04',
+  3589 => 'uni0E05',
+  3590 => 'uni0E06',
+  3591 => 'uni0E07',
+  3592 => 'uni0E08',
+  3593 => 'uni0E09',
+  3594 => 'uni0E0A',
+  3595 => 'uni0E0B',
+  3596 => 'uni0E0C',
+  3597 => 'uni0E0D',
+  3598 => 'uni0E0E',
+  3599 => 'uni0E0F',
+  3600 => 'uni0E10',
+  3601 => 'uni0E11',
+  3602 => 'uni0E12',
+  3603 => 'uni0E13',
+  3604 => 'uni0E14',
+  3605 => 'uni0E15',
+  3606 => 'uni0E16',
+  3607 => 'uni0E17',
+  3608 => 'uni0E18',
+  3609 => 'uni0E19',
+  3610 => 'uni0E1A',
+  3611 => 'uni0E1B',
+  3612 => 'uni0E1C',
+  3613 => 'uni0E1D',
+  3614 => 'uni0E1E',
+  3615 => 'uni0E1F',
+  3616 => 'uni0E20',
+  3617 => 'uni0E21',
+  3618 => 'uni0E22',
+  3619 => 'uni0E23',
+  3620 => 'uni0E24',
+  3621 => 'uni0E25',
+  3622 => 'uni0E26',
+  3623 => 'uni0E27',
+  3624 => 'uni0E28',
+  3625 => 'uni0E29',
+  3626 => 'uni0E2A',
+  3627 => 'uni0E2B',
+  3628 => 'uni0E2C',
+  3629 => 'uni0E2D',
+  3630 => 'uni0E2E',
+  3631 => 'uni0E2F',
+  3632 => 'uni0E30',
+  3633 => 'uni0E31',
+  3634 => 'uni0E32',
+  3635 => 'uni0E33',
+  3636 => 'uni0E34',
+  3637 => 'uni0E35',
+  3638 => 'uni0E36',
+  3639 => 'uni0E37',
+  3640 => 'uni0E38',
+  3641 => 'uni0E39',
+  3642 => 'uni0E3A',
+  63262 => 'uni0E4D.high',
+  8203 => 'zerowidthspace',
+  9676 => 'dottedcircle',
+  63263 => 'uni0E47.high',
+  3647 => 'uni0E3F',
+  3648 => 'uni0E40',
+  3649 => 'uni0E41',
+  3650 => 'uni0E42',
+  3651 => 'uni0E43',
+  3652 => 'uni0E44',
+  3653 => 'uni0E45',
+  3654 => 'uni0E46',
+  3655 => 'uni0E47',
+  3656 => 'uni0E48',
+  3657 => 'uni0E49',
+  3658 => 'uni0E4A',
+  3659 => 'uni0E4B',
+  3660 => 'uni0E4C',
+  3661 => 'uni0E4D',
+  3662 => 'uni0E4E',
+  3663 => 'uni0E4F',
+  3664 => 'uni0E50',
+  3665 => 'uni0E51',
+  3666 => 'uni0E52',
+  3667 => 'uni0E53',
+  3668 => 'uni0E54',
+  3669 => 'uni0E55',
+  3670 => 'uni0E56',
+  3671 => 'uni0E57',
+  3672 => 'uni0E58',
+  3673 => 'uni0E59',
+  3674 => 'uni0E5A',
+  3675 => 'uni0E5B',
+  63256 => 'uni0E38.low',
+  63257 => 'uni0E39.low',
+  63258 => 'uni0E3A.low',
+  63259 => 'DEL',
+  305 => 'dotlessi',
+  711 => 'caron',
+  730 => 'ring',
+  63260 => 'uniF71C',
+  63261 => 'uniF71D',
+  8194 => 'enspace',
+  8195 => 'emspace',
+  64256 => 'ff',
+  64257 => 'fi',
+  64258 => 'fl',
+  64259 => 'ffi',
+  64260 => 'ffl',
+  8204 => 'zerowidthnonjoiner',
+  8205 => 'zerowidthjoiner',
+  8206 => 'afii299',
+  8207 => 'afii300',
+);
+?>

BIN
main/inc/lib/mpdf/unifont/garuda.z


BIN
main/inc/lib/mpdf/unifont/garudab.ctg.z


+ 10 - 10
main/inc/lib/mpdf/unifont/garudab.php

@@ -1,8 +1,8 @@
 <?php
 $type='TrueTypeUnicode';
 $name='Garuda-Bold';
-$desc=array('Ascent'=>1337,'Descent'=>-598,'CapHeight'=>1337,'Flags'=>32,'FontBBox'=>'[-757 -598 1099 1337]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
-$up=-27;
+$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>32,'FontBBox'=>'[-750 -591 1099 1337]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
+$up=-37;
 $ut=20;
 $cw=array(
 	32=>344, 33=>308, 34=>458, 35=>597, 36=>574, 37=>697, 38=>717, 39=>298, 40=>378, 41=>378, 42=>597, 43=>565, 44=>252, 45=>455, 46=>217, 47=>597, 
@@ -19,17 +19,17 @@ $cw=array(
 	217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>556, 232=>556, 
 	233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>610, 241=>610, 242=>610, 243=>610, 244=>610, 245=>610, 246=>610, 247=>548, 248=>610, 
 	249=>610, 250=>610, 251=>610, 252=>610, 253=>556, 254=>610, 255=>556, 63232=>613, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0, 
-	63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>875, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674, 
-	3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>608, 3601=>832, 
-	3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>746, 3615=>752, 3616=>680, 3617=>718, 
+	63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>882, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674, 
+	3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>613, 3601=>832, 
+	3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>752, 3615=>752, 3616=>680, 3617=>718, 
 	3618=>657, 3619=>551, 3620=>677, 3621=>660, 3622=>689, 3623=>593, 3624=>700, 3625=>748, 3626=>657, 3627=>715, 3628=>754, 3629=>669, 3630=>656, 3631=>623, 3632=>531, 3633=>0, 
-	3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 3647=>646, 3648=>360, 3649=>649, 3650=>389, 
-	3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697, 3666=>697, 
-	3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 730=>332, 
-	63260=>338, 63261=>338, 8194=>500, 8195=>1000);
+	3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 63263=>0, 3647=>646, 3648=>360, 3649=>649, 
+	3650=>389, 3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697, 
+	3666=>697, 3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 
+	730=>332, 63260=>338, 63261=>338, 8194=>500, 8195=>1000, 64256=>588, 64257=>548, 64258=>548, 64259=>842, 64260=>842, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
 $enc='';
 $diff='';
 $file='garudab.z';
 $ctg='garudab.ctg.z';
-$originalsize=42928;
+$originalsize=75364;
 ?>

+ 354 - 0
main/inc/lib/mpdf/unifont/garudab.uni2gn.php

@@ -0,0 +1,354 @@
+<?php
+		$this->uni2gn = array (
+  32 => 'space',
+  33 => 'exclam',
+  34 => 'quotedbl',
+  35 => 'numbersign',
+  36 => 'dollar',
+  37 => 'percent',
+  38 => 'ampersand',
+  39 => 'quotesingle',
+  40 => 'parenleft',
+  41 => 'parenright',
+  42 => 'asterisk',
+  43 => 'plus',
+  44 => 'comma',
+  45 => 'hyphen',
+  46 => 'period',
+  47 => 'slash',
+  48 => 'zero',
+  49 => 'one',
+  50 => 'two',
+  51 => 'three',
+  52 => 'four',
+  53 => 'five',
+  54 => 'six',
+  55 => 'seven',
+  56 => 'eight',
+  57 => 'nine',
+  58 => 'colon',
+  59 => 'semicolon',
+  60 => 'less',
+  61 => 'equal',
+  62 => 'greater',
+  63 => 'question',
+  64 => 'at',
+  65 => 'A',
+  66 => 'B',
+  67 => 'C',
+  68 => 'D',
+  69 => 'E',
+  70 => 'F',
+  71 => 'G',
+  72 => 'H',
+  73 => 'I',
+  74 => 'J',
+  75 => 'K',
+  76 => 'L',
+  77 => 'M',
+  78 => 'N',
+  79 => 'O',
+  80 => 'P',
+  81 => 'Q',
+  82 => 'R',
+  83 => 'S',
+  84 => 'T',
+  85 => 'U',
+  86 => 'V',
+  87 => 'W',
+  88 => 'X',
+  89 => 'Y',
+  90 => 'Z',
+  91 => 'bracketleft',
+  92 => 'backslash',
+  93 => 'bracketright',
+  94 => 'asciicircum',
+  95 => 'underscore',
+  96 => 'grave',
+  97 => 'a',
+  98 => 'b',
+  99 => 'c',
+  100 => 'd',
+  101 => 'e',
+  102 => 'f',
+  103 => 'g',
+  104 => 'h',
+  105 => 'i',
+  106 => 'j',
+  107 => 'k',
+  108 => 'l',
+  109 => 'm',
+  110 => 'n',
+  111 => 'o',
+  112 => 'p',
+  113 => 'q',
+  114 => 'r',
+  115 => 's',
+  116 => 't',
+  117 => 'u',
+  118 => 'v',
+  119 => 'w',
+  120 => 'x',
+  121 => 'y',
+  122 => 'z',
+  123 => 'braceleft',
+  124 => 'bar',
+  125 => 'braceright',
+  126 => 'asciitilde',
+  8218 => 'quotesinglbase',
+  402 => 'florin',
+  8222 => 'quotedblbase',
+  8230 => 'ellipsis',
+  8224 => 'dagger',
+  8225 => 'daggerdbl',
+  710 => 'circumflex',
+  8240 => 'perthousand',
+  352 => 'Scaron',
+  8249 => 'guilsinglleft',
+  338 => 'OE',
+  8216 => 'quoteleft',
+  8217 => 'quoteright',
+  8220 => 'quotedblleft',
+  8221 => 'quotedblright',
+  8226 => 'bullet',
+  8211 => 'endash',
+  8212 => 'emdash',
+  732 => 'tilde',
+  8482 => 'trademark',
+  353 => 'scaron',
+  8250 => 'guilsinglright',
+  339 => 'oe',
+  376 => 'Ydieresis',
+  160 => 'nbspace',
+  161 => 'exclamdown',
+  162 => 'cent',
+  163 => 'sterling',
+  164 => 'currency',
+  165 => 'yen',
+  166 => 'brokenbar',
+  167 => 'section',
+  168 => 'dieresis',
+  169 => 'copyright',
+  170 => 'ordfeminine',
+  171 => 'guillemotleft',
+  172 => 'logicalnot',
+  173 => 'minus',
+  174 => 'registered',
+  175 => 'macron',
+  176 => 'degree',
+  177 => 'plusminus',
+  178 => 'twosuperior',
+  179 => 'threesuperior',
+  180 => 'acute',
+  181 => 'mu',
+  182 => 'paragraph',
+  183 => 'periodcentered',
+  184 => 'cedilla',
+  185 => 'onesuperior',
+  186 => 'ordmasculine',
+  187 => 'guillemotright',
+  188 => 'onequarter',
+  189 => 'onehalf',
+  190 => 'threequarters',
+  191 => 'questiondown',
+  192 => 'Agrave',
+  193 => 'Aacute',
+  194 => 'Acircumflex',
+  195 => 'Atilde',
+  196 => 'Adieresis',
+  197 => 'Aring',
+  198 => 'AE',
+  199 => 'Ccedilla',
+  200 => 'Egrave',
+  201 => 'Eacute',
+  202 => 'Ecircumflex',
+  203 => 'Edieresis',
+  204 => 'Igrave',
+  205 => 'Iacute',
+  206 => 'Icircumflex',
+  207 => 'Idieresis',
+  208 => 'Eth',
+  209 => 'Ntilde',
+  210 => 'Ograve',
+  211 => 'Oacute',
+  212 => 'Ocircumflex',
+  213 => 'Otilde',
+  214 => 'Odieresis',
+  215 => 'multiply',
+  216 => 'Oslash',
+  217 => 'Ugrave',
+  218 => 'Uacute',
+  219 => 'Ucircumflex',
+  220 => 'Udieresis',
+  221 => 'Yacute',
+  222 => 'Thorn',
+  223 => 'germandbls',
+  224 => 'agrave',
+  225 => 'aacute',
+  226 => 'acircumflex',
+  227 => 'atilde',
+  228 => 'adieresis',
+  229 => 'aring',
+  230 => 'ae',
+  231 => 'ccedilla',
+  232 => 'egrave',
+  233 => 'eacute',
+  234 => 'ecircumflex',
+  235 => 'edieresis',
+  236 => 'igrave',
+  237 => 'iacute',
+  238 => 'icircumflex',
+  239 => 'idieresis',
+  240 => 'eth',
+  241 => 'ntilde',
+  242 => 'ograve',
+  243 => 'oacute',
+  244 => 'ocircumflex',
+  245 => 'otilde',
+  246 => 'odieresis',
+  247 => 'divide',
+  248 => 'oslash',
+  249 => 'ugrave',
+  250 => 'uacute',
+  251 => 'ucircumflex',
+  252 => 'udieresis',
+  253 => 'yacute',
+  254 => 'thorn',
+  255 => 'ydieresis',
+  63232 => 'uni0E10.descless',
+  63233 => 'uni0E34.left',
+  63234 => 'uni0E35.left',
+  63235 => 'uni0E36.left',
+  63236 => 'uni0E37.left',
+  63237 => 'uni0E48.low_left',
+  63238 => 'uni0E49.low_left',
+  63239 => 'uni0E4A.low_left',
+  63240 => 'uni0E4B.low_left',
+  63241 => 'uni0E4C.low_left',
+  63242 => 'uni0E48.low',
+  63243 => 'uni0E49.low',
+  63244 => 'uni0E4A.low',
+  63245 => 'uni0E4B.low',
+  63246 => 'uni0E4C.low',
+  63247 => 'uni0E0D.descless',
+  63248 => 'uni0E31.left',
+  63249 => 'uni0E4D.left',
+  63250 => 'uni0E47.left',
+  63251 => 'uni0E48.left',
+  63252 => 'uni0E49.left',
+  63253 => 'uni0E4A.left',
+  63254 => 'uni0E4B.left',
+  63255 => 'uni0E4C.left',
+  3585 => 'uni0E01',
+  3586 => 'uni0E02',
+  3587 => 'uni0E03',
+  3588 => 'uni0E04',
+  3589 => 'uni0E05',
+  3590 => 'uni0E06',
+  3591 => 'uni0E07',
+  3592 => 'uni0E08',
+  3593 => 'uni0E09',
+  3594 => 'uni0E0A',
+  3595 => 'uni0E0B',
+  3596 => 'uni0E0C',
+  3597 => 'uni0E0D',
+  3598 => 'uni0E0E',
+  3599 => 'uni0E0F',
+  3600 => 'uni0E10',
+  3601 => 'uni0E11',
+  3602 => 'uni0E12',
+  3603 => 'uni0E13',
+  3604 => 'uni0E14',
+  3605 => 'uni0E15',
+  3606 => 'uni0E16',
+  3607 => 'uni0E17',
+  3608 => 'uni0E18',
+  3609 => 'uni0E19',
+  3610 => 'uni0E1A',
+  3611 => 'uni0E1B',
+  3612 => 'uni0E1C',
+  3613 => 'uni0E1D',
+  3614 => 'uni0E1E',
+  3615 => 'uni0E1F',
+  3616 => 'uni0E20',
+  3617 => 'uni0E21',
+  3618 => 'uni0E22',
+  3619 => 'uni0E23',
+  3620 => 'uni0E24',
+  3621 => 'uni0E25',
+  3622 => 'uni0E26',
+  3623 => 'uni0E27',
+  3624 => 'uni0E28',
+  3625 => 'uni0E29',
+  3626 => 'uni0E2A',
+  3627 => 'uni0E2B',
+  3628 => 'uni0E2C',
+  3629 => 'uni0E2D',
+  3630 => 'uni0E2E',
+  3631 => 'uni0E2F',
+  3632 => 'uni0E30',
+  3633 => 'uni0E31',
+  3634 => 'uni0E32',
+  3635 => 'uni0E33',
+  3636 => 'uni0E34',
+  3637 => 'uni0E35',
+  3638 => 'uni0E36',
+  3639 => 'uni0E37',
+  3640 => 'uni0E38',
+  3641 => 'uni0E39',
+  3642 => 'uni0E3A',
+  63262 => 'uni0E4D.high',
+  8203 => 'zerowidthspace',
+  9676 => 'dottedcircle',
+  63263 => 'uni0E47.high',
+  3647 => 'uni0E3F',
+  3648 => 'uni0E40',
+  3649 => 'uni0E41',
+  3650 => 'uni0E42',
+  3651 => 'uni0E43',
+  3652 => 'uni0E44',
+  3653 => 'uni0E45',
+  3654 => 'uni0E46',
+  3655 => 'uni0E47',
+  3656 => 'uni0E48',
+  3657 => 'uni0E49',
+  3658 => 'uni0E4A',
+  3659 => 'uni0E4B',
+  3660 => 'uni0E4C',
+  3661 => 'uni0E4D',
+  3662 => 'uni0E4E',
+  3663 => 'uni0E4F',
+  3664 => 'uni0E50',
+  3665 => 'uni0E51',
+  3666 => 'uni0E52',
+  3667 => 'uni0E53',
+  3668 => 'uni0E54',
+  3669 => 'uni0E55',
+  3670 => 'uni0E56',
+  3671 => 'uni0E57',
+  3672 => 'uni0E58',
+  3673 => 'uni0E59',
+  3674 => 'uni0E5A',
+  3675 => 'uni0E5B',
+  63256 => 'uni0E38.low',
+  63257 => 'uni0E39.low',
+  63258 => 'uni0E3A.low',
+  63259 => 'DEL',
+  305 => 'dotlessi',
+  711 => 'caron',
+  730 => 'ring',
+  63260 => 'uniF71C',
+  63261 => 'uniF71D',
+  8194 => 'enspace',
+  8195 => 'emspace',
+  64256 => 'ff',
+  64257 => 'fi',
+  64258 => 'fl',
+  64259 => 'ffi',
+  64260 => 'ffl',
+  8204 => 'zerowidthnonjoiner',
+  8205 => 'zerowidthjoiner',
+  8206 => 'afii299',
+  8207 => 'afii300',
+);
+?>

BIN
main/inc/lib/mpdf/unifont/garudab.z


BIN
main/inc/lib/mpdf/unifont/garudabi.ctg.z


+ 10 - 10
main/inc/lib/mpdf/unifont/garudabi.php

@@ -1,8 +1,8 @@
 <?php
 $type='TrueTypeUnicode';
 $name='Garuda-BoldOblique';
-$desc=array('Ascent'=>1337,'Descent'=>-598,'CapHeight'=>1337,'Flags'=>96,'FontBBox'=>'[-615 -598 1162 1337]','ItalicAngle'=>-12,'StemV'=>120,'MissingWidth'=>600);
-$up=-27;
+$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>96,'FontBBox'=>'[-606 -591 1161 1337]','ItalicAngle'=>-12,'StemV'=>120,'MissingWidth'=>600);
+$up=-37;
 $ut=20;
 $cw=array(
 	32=>344, 33=>308, 34=>458, 35=>597, 36=>574, 37=>697, 38=>717, 39=>298, 40=>378, 41=>378, 42=>597, 43=>565, 44=>252, 45=>455, 46=>217, 47=>597, 
@@ -19,17 +19,17 @@ $cw=array(
 	217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>556, 232=>556, 
 	233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>610, 241=>610, 242=>610, 243=>610, 244=>610, 245=>610, 246=>610, 247=>548, 248=>610, 
 	249=>610, 250=>610, 251=>610, 252=>610, 253=>556, 254=>610, 255=>556, 63232=>613, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0, 
-	63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>875, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674, 
-	3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>608, 3601=>832, 
-	3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>746, 3615=>752, 3616=>680, 3617=>718, 
+	63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>882, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674, 
+	3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>613, 3601=>832, 
+	3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>752, 3615=>752, 3616=>680, 3617=>718, 
 	3618=>657, 3619=>551, 3620=>677, 3621=>660, 3622=>689, 3623=>593, 3624=>700, 3625=>748, 3626=>657, 3627=>715, 3628=>754, 3629=>669, 3630=>656, 3631=>623, 3632=>531, 3633=>0, 
-	3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 3647=>646, 3648=>360, 3649=>649, 3650=>389, 
-	3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697, 3666=>697, 
-	3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 730=>332, 
-	63260=>338, 63261=>338, 8194=>500, 8195=>1000);
+	3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 63263=>0, 3647=>646, 3648=>360, 3649=>649, 
+	3650=>389, 3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697, 
+	3666=>697, 3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 
+	730=>332, 63260=>338, 63261=>338, 8194=>500, 8195=>1000, 64256=>588, 64257=>548, 64258=>548, 64259=>842, 64260=>842, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
 $enc='';
 $diff='';
 $file='garudabi.z';
 $ctg='garudabi.ctg.z';
-$originalsize=46860;
+$originalsize=84872;
 ?>

+ 354 - 0
main/inc/lib/mpdf/unifont/garudabi.uni2gn.php

@@ -0,0 +1,354 @@
+<?php
+		$this->uni2gn = array (
+  32 => 'space',
+  33 => 'exclam',
+  34 => 'quotedbl',
+  35 => 'numbersign',
+  36 => 'dollar',
+  37 => 'percent',
+  38 => 'ampersand',
+  39 => 'quotesingle',
+  40 => 'parenleft',
+  41 => 'parenright',
+  42 => 'asterisk',
+  43 => 'plus',
+  44 => 'comma',
+  45 => 'hyphen',
+  46 => 'period',
+  47 => 'slash',
+  48 => 'zero',
+  49 => 'one',
+  50 => 'two',
+  51 => 'three',
+  52 => 'four',
+  53 => 'five',
+  54 => 'six',
+  55 => 'seven',
+  56 => 'eight',
+  57 => 'nine',
+  58 => 'colon',
+  59 => 'semicolon',
+  60 => 'less',
+  61 => 'equal',
+  62 => 'greater',
+  63 => 'question',
+  64 => 'at',
+  65 => 'A',
+  66 => 'B',
+  67 => 'C',
+  68 => 'D',
+  69 => 'E',
+  70 => 'F',
+  71 => 'G',
+  72 => 'H',
+  73 => 'I',
+  74 => 'J',
+  75 => 'K',
+  76 => 'L',
+  77 => 'M',
+  78 => 'N',
+  79 => 'O',
+  80 => 'P',
+  81 => 'Q',
+  82 => 'R',
+  83 => 'S',
+  84 => 'T',
+  85 => 'U',
+  86 => 'V',
+  87 => 'W',
+  88 => 'X',
+  89 => 'Y',
+  90 => 'Z',
+  91 => 'bracketleft',
+  92 => 'backslash',
+  93 => 'bracketright',
+  94 => 'asciicircum',
+  95 => 'underscore',
+  96 => 'grave',
+  97 => 'a',
+  98 => 'b',
+  99 => 'c',
+  100 => 'd',
+  101 => 'e',
+  102 => 'f',
+  103 => 'g',
+  104 => 'h',
+  105 => 'i',
+  106 => 'j',
+  107 => 'k',
+  108 => 'l',
+  109 => 'm',
+  110 => 'n',
+  111 => 'o',
+  112 => 'p',
+  113 => 'q',
+  114 => 'r',
+  115 => 's',
+  116 => 't',
+  117 => 'u',
+  118 => 'v',
+  119 => 'w',
+  120 => 'x',
+  121 => 'y',
+  122 => 'z',
+  123 => 'braceleft',
+  124 => 'bar',
+  125 => 'braceright',
+  126 => 'asciitilde',
+  8218 => 'quotesinglbase',
+  402 => 'florin',
+  8222 => 'quotedblbase',
+  8230 => 'ellipsis',
+  8224 => 'dagger',
+  8225 => 'daggerdbl',
+  710 => 'circumflex',
+  8240 => 'perthousand',
+  352 => 'Scaron',
+  8249 => 'guilsinglleft',
+  338 => 'OE',
+  8216 => 'quoteleft',
+  8217 => 'quoteright',
+  8220 => 'quotedblleft',
+  8221 => 'quotedblright',
+  8226 => 'bullet',
+  8211 => 'endash',
+  8212 => 'emdash',
+  732 => 'tilde',
+  8482 => 'trademark',
+  353 => 'scaron',
+  8250 => 'guilsinglright',
+  339 => 'oe',
+  376 => 'Ydieresis',
+  160 => 'nbspace',
+  161 => 'exclamdown',
+  162 => 'cent',
+  163 => 'sterling',
+  164 => 'currency',
+  165 => 'yen',
+  166 => 'brokenbar',
+  167 => 'section',
+  168 => 'dieresis',
+  169 => 'copyright',
+  170 => 'ordfeminine',
+  171 => 'guillemotleft',
+  172 => 'logicalnot',
+  173 => 'minus',
+  174 => 'registered',
+  175 => 'macron',
+  176 => 'degree',
+  177 => 'plusminus',
+  178 => 'twosuperior',
+  179 => 'threesuperior',
+  180 => 'acute',
+  181 => 'mu',
+  182 => 'paragraph',
+  183 => 'periodcentered',
+  184 => 'cedilla',
+  185 => 'onesuperior',
+  186 => 'ordmasculine',
+  187 => 'guillemotright',
+  188 => 'onequarter',
+  189 => 'onehalf',
+  190 => 'threequarters',
+  191 => 'questiondown',
+  192 => 'Agrave',
+  193 => 'Aacute',
+  194 => 'Acircumflex',
+  195 => 'Atilde',
+  196 => 'Adieresis',
+  197 => 'Aring',
+  198 => 'AE',
+  199 => 'Ccedilla',
+  200 => 'Egrave',
+  201 => 'Eacute',
+  202 => 'Ecircumflex',
+  203 => 'Edieresis',
+  204 => 'Igrave',
+  205 => 'Iacute',
+  206 => 'Icircumflex',
+  207 => 'Idieresis',
+  208 => 'Eth',
+  209 => 'Ntilde',
+  210 => 'Ograve',
+  211 => 'Oacute',
+  212 => 'Ocircumflex',
+  213 => 'Otilde',
+  214 => 'Odieresis',
+  215 => 'multiply',
+  216 => 'Oslash',
+  217 => 'Ugrave',
+  218 => 'Uacute',
+  219 => 'Ucircumflex',
+  220 => 'Udieresis',
+  221 => 'Yacute',
+  222 => 'Thorn',
+  223 => 'germandbls',
+  224 => 'agrave',
+  225 => 'aacute',
+  226 => 'acircumflex',
+  227 => 'atilde',
+  228 => 'adieresis',
+  229 => 'aring',
+  230 => 'ae',
+  231 => 'ccedilla',
+  232 => 'egrave',
+  233 => 'eacute',
+  234 => 'ecircumflex',
+  235 => 'edieresis',
+  236 => 'igrave',
+  237 => 'iacute',
+  238 => 'icircumflex',
+  239 => 'idieresis',
+  240 => 'eth',
+  241 => 'ntilde',
+  242 => 'ograve',
+  243 => 'oacute',
+  244 => 'ocircumflex',
+  245 => 'otilde',
+  246 => 'odieresis',
+  247 => 'divide',
+  248 => 'oslash',
+  249 => 'ugrave',
+  250 => 'uacute',
+  251 => 'ucircumflex',
+  252 => 'udieresis',
+  253 => 'yacute',
+  254 => 'thorn',
+  255 => 'ydieresis',
+  63232 => 'uni0E10.descless',
+  63233 => 'uni0E34.left',
+  63234 => 'uni0E35.left',
+  63235 => 'uni0E36.left',
+  63236 => 'uni0E37.left',
+  63237 => 'uni0E48.low_left',
+  63238 => 'uni0E49.low_left',
+  63239 => 'uni0E4A.low_left',
+  63240 => 'uni0E4B.low_left',
+  63241 => 'uni0E4C.low_left',
+  63242 => 'uni0E48.low',
+  63243 => 'uni0E49.low',
+  63244 => 'uni0E4A.low',
+  63245 => 'uni0E4B.low',
+  63246 => 'uni0E4C.low',
+  63247 => 'uni0E0D.descless',
+  63248 => 'uni0E31.left',
+  63249 => 'uni0E4D.left',
+  63250 => 'uni0E47.left',
+  63251 => 'uni0E48.left',
+  63252 => 'uni0E49.left',
+  63253 => 'uni0E4A.left',
+  63254 => 'uni0E4B.left',
+  63255 => 'uni0E4C.left',
+  3585 => 'uni0E01',
+  3586 => 'uni0E02',
+  3587 => 'uni0E03',
+  3588 => 'uni0E04',
+  3589 => 'uni0E05',
+  3590 => 'uni0E06',
+  3591 => 'uni0E07',
+  3592 => 'uni0E08',
+  3593 => 'uni0E09',
+  3594 => 'uni0E0A',
+  3595 => 'uni0E0B',
+  3596 => 'uni0E0C',
+  3597 => 'uni0E0D',
+  3598 => 'uni0E0E',
+  3599 => 'uni0E0F',
+  3600 => 'uni0E10',
+  3601 => 'uni0E11',
+  3602 => 'uni0E12',
+  3603 => 'uni0E13',
+  3604 => 'uni0E14',
+  3605 => 'uni0E15',
+  3606 => 'uni0E16',
+  3607 => 'uni0E17',
+  3608 => 'uni0E18',
+  3609 => 'uni0E19',
+  3610 => 'uni0E1A',
+  3611 => 'uni0E1B',
+  3612 => 'uni0E1C',
+  3613 => 'uni0E1D',
+  3614 => 'uni0E1E',
+  3615 => 'uni0E1F',
+  3616 => 'uni0E20',
+  3617 => 'uni0E21',
+  3618 => 'uni0E22',
+  3619 => 'uni0E23',
+  3620 => 'uni0E24',
+  3621 => 'uni0E25',
+  3622 => 'uni0E26',
+  3623 => 'uni0E27',
+  3624 => 'uni0E28',
+  3625 => 'uni0E29',
+  3626 => 'uni0E2A',
+  3627 => 'uni0E2B',
+  3628 => 'uni0E2C',
+  3629 => 'uni0E2D',
+  3630 => 'uni0E2E',
+  3631 => 'uni0E2F',
+  3632 => 'uni0E30',
+  3633 => 'uni0E31',
+  3634 => 'uni0E32',
+  3635 => 'uni0E33',
+  3636 => 'uni0E34',
+  3637 => 'uni0E35',
+  3638 => 'uni0E36',
+  3639 => 'uni0E37',
+  3640 => 'uni0E38',
+  3641 => 'uni0E39',
+  3642 => 'uni0E3A',
+  63262 => 'uni0E4D.high',
+  8203 => 'zerowidthspace',
+  9676 => 'dottedcircle',
+  63263 => 'uni0E47.high',
+  3647 => 'uni0E3F',
+  3648 => 'uni0E40',
+  3649 => 'uni0E41',
+  3650 => 'uni0E42',
+  3651 => 'uni0E43',
+  3652 => 'uni0E44',
+  3653 => 'uni0E45',
+  3654 => 'uni0E46',
+  3655 => 'uni0E47',
+  3656 => 'uni0E48',
+  3657 => 'uni0E49',
+  3658 => 'uni0E4A',
+  3659 => 'uni0E4B',
+  3660 => 'uni0E4C',
+  3661 => 'uni0E4D',
+  3662 => 'uni0E4E',
+  3663 => 'uni0E4F',
+  3664 => 'uni0E50',
+  3665 => 'uni0E51',
+  3666 => 'uni0E52',
+  3667 => 'uni0E53',
+  3668 => 'uni0E54',
+  3669 => 'uni0E55',
+  3670 => 'uni0E56',
+  3671 => 'uni0E57',
+  3672 => 'uni0E58',
+  3673 => 'uni0E59',
+  3674 => 'uni0E5A',
+  3675 => 'uni0E5B',
+  63256 => 'uni0E38.low',
+  63257 => 'uni0E39.low',
+  63258 => 'uni0E3A.low',
+  63259 => 'DEL',
+  305 => 'dotlessi',
+  711 => 'caron',
+  730 => 'ring',
+  63260 => 'uniF71C',
+  63261 => 'uniF71D',
+  8194 => 'enspace',
+  8195 => 'emspace',
+  64256 => 'ff',
+  64257 => 'fi',
+  64258 => 'fl',
+  64259 => 'ffi',
+  64260 => 'ffl',
+  8204 => 'zerowidthnonjoiner',
+  8205 => 'zerowidthjoiner',
+  8206 => 'afii299',
+  8207 => 'afii300',
+);
+?>

BIN
main/inc/lib/mpdf/unifont/garudabi.z


BIN
main/inc/lib/mpdf/unifont/garudai.ctg.z


+ 18 - 18
main/inc/lib/mpdf/unifont/garudai.php

@@ -1,8 +1,8 @@
 <?php
 $type='TrueTypeUnicode';
 $name='Garuda-Oblique';
-$desc=array('Ascent'=>1288,'Descent'=>-605,'CapHeight'=>1288,'Flags'=>96,'FontBBox'=>'[-521 -605 1151 1288]','ItalicAngle'=>-12,'StemV'=>70,'MissingWidth'=>600);
-$up=-27;
+$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>96,'FontBBox'=>'[-522 -589 1151 1288]','ItalicAngle'=>-12,'StemV'=>70,'MissingWidth'=>600);
+$up=-32;
 $ut=10;
 $cw=array(
 	32=>340, 33=>277, 34=>354, 35=>556, 36=>556, 37=>889, 38=>666, 39=>190, 40=>332, 41=>332, 42=>387, 43=>583, 44=>277, 45=>332, 46=>277, 47=>277, 
@@ -10,26 +10,26 @@ $cw=array(
 	64=>1014, 65=>666, 66=>666, 67=>721, 68=>721, 69=>666, 70=>610, 71=>777, 72=>721, 73=>277, 74=>499, 75=>666, 76=>556, 77=>832, 78=>721, 79=>777, 
 	80=>666, 81=>777, 82=>721, 83=>666, 84=>610, 85=>721, 86=>666, 87=>944, 88=>666, 89=>666, 90=>610, 91=>277, 92=>277, 93=>277, 94=>469, 95=>556, 
 	96=>332, 97=>556, 98=>556, 99=>499, 100=>556, 101=>556, 102=>277, 103=>556, 104=>556, 105=>222, 106=>222, 107=>499, 108=>222, 109=>832, 110=>556, 111=>556, 
-	112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 127=>1532, 
-	8218=>222, 402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528, 
-	8211=>548, 8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554, 
-	168=>332, 169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277, 
-	184=>332, 185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721, 
-	200=>666, 201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583, 
-	216=>777, 217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499, 
-	232=>556, 233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548, 
-	248=>610, 249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 
-	63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 
-	3585=>626, 3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>833, 3598=>668, 3599=>663, 3600=>528, 
-	3601=>815, 3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>643, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712, 
-	3617=>665, 3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510, 
-	3633=>0, 3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 3647=>629, 3648=>340, 3649=>600, 
+	112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 8218=>222, 
+	402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528, 8211=>548, 
+	8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554, 168=>332, 
+	169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277, 184=>332, 
+	185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721, 200=>666, 
+	201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583, 216=>777, 
+	217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499, 232=>556, 
+	233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548, 248=>610, 
+	249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0, 
+	63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>626, 
+	3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>800, 3598=>668, 3599=>663, 3600=>530, 3601=>815, 
+	3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>636, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712, 3617=>665, 
+	3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510, 3633=>0, 
+	3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 63263=>0, 3647=>629, 3648=>340, 3649=>600, 
 	3650=>413, 3651=>400, 3652=>449, 3653=>220, 3654=>565, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>599, 3664=>611, 3665=>611, 
 	3666=>611, 3667=>611, 3668=>611, 3669=>611, 3670=>611, 3671=>611, 3672=>611, 3673=>611, 3674=>625, 3675=>1105, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 
-	730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000);
+	730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000, 64256=>554, 64257=>499, 64258=>499, 64259=>776, 64260=>776, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
 $enc='';
 $diff='';
 $file='garudai.z';
 $ctg='garudai.ctg.z';
-$originalsize=45300;
+$originalsize=85500;
 ?>

Some files were not shown because too many files changed in this diff