Yannick Warnier 14 년 전
부모
커밋
87f1a689e4
100개의 변경된 파일4703개의 추가작업 그리고 17986개의 파일을 삭제
  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="outerframe">
 <div id="main">
 <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>
 <h1>Chamilo 1.8.7 - Istanbul</h1>
 <h3>Release notes - summary</h3>
 <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>
 <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 (!$show_as_icon) {
 		if ($filetype == 'folder') {
 		if ($filetype == 'folder') {
 			if (api_is_allowed_to_edit() || api_is_platform_admin() || api_get_setting('students_download_folders') == 'true') {
 			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 {
 		} 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>';
 			$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;
 	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
  * 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) {
 function is_my_shared_folder($user_id, $path) {
 	return Security::remove_XSS($path) == '/shared_folder/sf_user_'.$user_id;
 	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;
 	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
 // 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)) {
 if (!is_null($docs_and_folders)) {
 
 
-	// Download zipped folder
+	// Show download zipped folder icon
 	global $total_size;
 	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())) {
 	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
 // Possible values: true , false
 //$config['BlockCopyPaste'] = 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.
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '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
 // Possible values: true , false
 //$config['BlockCopyPaste'] = true;
 //$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.
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '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
 // Possible values: true , false
 //$config['BlockCopyPaste'] = 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.
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '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
 // Possible values: true , false
 //$config['BlockCopyPaste'] = true;
 //$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.
 // Here new width and height of the editor may be set.
 // Possible values, examples: 300 , '250' , '100%' , ...
 // Possible values, examples: 300 , '250' , '100%' , ...
 //$config['Width'] = '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)
 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
 - 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
 - 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
 - "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
 - $this->shrink_tables_to_fit = 0 or false caused fatal errors
 - background color or images not printing correctly when breaking across pages
 - background color or images not printing correctly when breaking across pages
 - background not printed for List inside a block element
 - 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
 - margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
 - column break triggered by HR triggering a second column break
 - column break triggered by HR triggering a second column break
 - an empty 'position:fixed' element with no/auto width or height caused fatal error
 - 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
 - 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'
 - 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
 New or Updated Files
 --------------------
 --------------------
 mpdf.php
 mpdf.php
-classes/gif.php
-classes/indic.php
 compress.php
 compress.php
 config.php
 config.php
 config_cp.php
 config_cp.php
 config_fonts.php
 config_fonts.php
 mpdf.css
 mpdf.css
-includes/sub_core.php
+classes/gif.php
+classes/indic.php
+includes/subs_core.php
 mpdfi/mpdfi.php
 mpdfi/mpdfi.php
 unifont/ar_k_001.uni2gn.php
 unifont/ar_k_001.uni2gn.php
 All files in new folder: /progress/*.*
 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)
 - 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
 - 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
 - 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
 - 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)
 - Background-image used in HTML footer not appearing (correctly)
 - RTL tables: nested tables will not automatically transpose L->R
 - 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)
 	- will not force a pagebreak (max. at bottom of page)
 	- % is interpreted as % of printable page height (inside margins)
 	- % 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
 <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)
 	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),
 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.
 	 or if page-break-inside:avoid is active.
@@ -269,7 +678,7 @@ $arr = array();
 if ($arr['index'] == 5 ) {...}
 if ($arr['index'] == 5 ) {...}
 
 
 To prevent this, lines were added at the start of the mpdf.php script to turn error notices OFF.
 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:
 e.g. the line above would be changed to:
 if (isset($arr['index'] && $arr['index'] == 5 ) {...}
 if (isset($arr['index'] && $arr['index'] == 5 ) {...}
 
 
@@ -356,7 +765,7 @@ htmltoolkit.php
 
 
 Developers only
 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
       - 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.
 - 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.
 - variable $use_embeddedfonts_1252 renamed to $useOnlyCoreFonts as more precise: depracated but still supported.
@@ -596,7 +1005,7 @@ CSS changes
 Numbered Lists
 Numbered Lists
 --------------
 --------------
 Variables set at the top of mpdf.php can be set to change:
 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';
 	var $list_align_style = 'R';
 - content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
 - content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
 	var $list_number_suffix = '.';
 	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
 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
 - 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
 - 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
 - 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
 - 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
 - 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 does not always move correctly to a new page
 - Table cell incorrectly calculated height causing text to overflow cell when printed
 - 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
 Transparent not recognised as color/background-color
 (Attempted a fix by setting to ignore it! - fn. convertcolor in htmltoolkit.php)
 (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)
 (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.
 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)
 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)
 (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:
 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.
 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'.
 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.
 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:
 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
 $mpdf->WriteHTML($html);	// this one cleared the array $this->cascadeCSS; conatining cascaded CSS information from stylesheets
 You were meant to call:
 You were meant to call:
 $mpdf->WriteHTML($html,2);	// which doesn't re-parse the CSS information
 $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;
 $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
 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) {
 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.
 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***
 NB - IMPORTANT***
 A new font - OCR-B font/unifont is required, and needs to be added to the config.php file
 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
 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
 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
 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)
 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
 fn. printbuffer() and fn. openTag() to ensure
  <div><div><p> outputs top margins/padding for both 1st and 2nd div
  <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);
+		}
+
+	}
+
+}
+
+?>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 31 - 10
main/inc/lib/mpdf/classes/t1asm.php


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

@@ -1,7 +1,7 @@
 <?php
 <?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
 	// *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')) {
 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
           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;
 	 aa.elements[i].checked = checked;
 	}
 	}
@@ -77,7 +77,7 @@ exit;
 }
 }
 
 
 $inc = $_POST['inc'];
 $inc = $_POST['inc'];
-if (is_array($inc) && count($inc)>0 ) { 
+if (is_array($inc) && count($inc)>0 ) {
 	foreach($inc AS $i=>$v) {
 	foreach($inc AS $i=>$v) {
 		$key = array_search($i, $excl);
 		$key = array_search($i, $excl);
 		unset($excl[$key]);
 		unset($excl[$key]);
@@ -116,8 +116,8 @@ foreach($l AS $k=>$ln) {
 		}
 		}
 		$exclude = true;
 		$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->useOnlyCoreFonts = false;		// alias = $use_embeddedfonts_1252
 $this->allow_output_buffering = false;
 $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->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->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
 // 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(?)
 // If you are confident input html is valid XHTML, turning this off may make it more reliable(?)
 $this->allow_html_optional_endtags = true;
 $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->text_input_as_HTML = false; 		// Converts all entities in Text inputs to UTF-8 before encoding
 $this->useGraphs = false;
 $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
 // 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
 // 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.
 // 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->incrementFPR2 = 20;
 $this->incrementFPR3 = 30;
 $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
 // DEBUGGING & DEVELOPERS
 $this->showStats = false;
 $this->showStats = false;
 $this->debug = 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 = 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//
 $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)
 $this->anchor2Bookmark = 0;	// makes <a name=""> into a bookmark as well as internal link target; 1 = just name; 2 = name (p.34)
 
 
 // CSS & STYLES
 // 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.
 $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
 				// 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
 $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 '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.
 // 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
 $this->autoMarginPadding = 2;		// distance in mm used as padding if 'stretch' mode is used
 
 
 
 
 
 
 // TABLES
 // 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_percents = false;
 $this->ignore_table_widths = false;
 $this->ignore_table_widths = false;
 $this->keep_table_proportions = false;	// If table width set > page width, force resizing but keep relative sizes
 $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 %
 							// 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)
 $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
 						// 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;
 $this->use_kwt = false;
 
 
 // IMAGES
 // IMAGES
 $this->img_dpi = 96;	// Default dpi to output images if size not defined
 $this->img_dpi = 96;	// Default dpi to output images if size not defined
+				// See also above "dpi"
 
 
 
 
 // TEXT SPACING & JUSTIFICATION
 // 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
 $this->tabSpaces = 8;	// Number of spaces to replace for a TAB in <pre> sections
 				// Notepad uses 6, HTML specification recommends 8
 				// 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->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->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->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->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)
 $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
 // WATERMARKS
+$this->watermarkImgBehind = false;	// mPDF 4.3.018
 $this->showWatermarkText = 0;	// alias = $TopicIsUnvalidated
 $this->showWatermarkText = 0;	// alias = $TopicIsUnvalidated
 $this->showWatermarkImage = 0;
 $this->showWatermarkImage = 0;
 $this->watermarkText = '';	// alias = $UnvalidatedText
 $this->watermarkText = '';	// alias = $UnvalidatedText
@@ -150,7 +175,10 @@ $this->watermarkImage = '';
 $this->watermark_font = '';
 $this->watermark_font = '';
 $this->watermarkTextAlpha = 0.2;
 $this->watermarkTextAlpha = 0.2;
 $this->watermarkImageAlpha = 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
 // BORDERS
 $this->autoPadding = false; // Automatically increases padding in block elements with border-radius set - if required
 $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
 // 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
 // Hyphenation
 $this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv');	// existing defined patterns
 $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)
 							// 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);
 $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
 // CHARACTER PATTERN MATCHES TO DETECT LANGUAGES
 // pattern used to detect RTL characters -> force RTL
 // 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
 	// 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
 	// 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}";
 	$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
 	// 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
 	// Use for chunks > words
 	$this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}";	// all except <>
 	$this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}";	// all except <>
 	// Vietnamese - specific
 	// 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->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
 	// Arabic
 	$this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}";
 	$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]
 	// 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
 	// INDIC
 	$this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}";	// Devanagari (Hindi) minus the common indic punctuation 0964,0965
 	$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->pregPAchars = "\x{0A00}-\x{0A7F}";	// Gurmukhi (Punjabi)
 	$this->pregGUchars = "\x{0A80}-\x{0AFF}";	// Gujarati
 	$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}";
 	$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() )
 	// 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
 <?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
 // For PHP4 compatability
 if(!function_exists('str_ireplace')) {
 if(!function_exists('str_ireplace')) {
   function str_ireplace($search,$replace,$subject) {
   function str_ireplace($search,$replace,$subject) {
 	$search = preg_quote($search, "/");
 	$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>');
 	return ('<pre>'.$text.'</pre>');
 }
 }
 
 
-if(!function_exists('strcode2utf')){ 
+if(!function_exists('strcode2utf')){
   function strcode2utf($str,$lo=true) {
   function strcode2utf($str,$lo=true) {
 	//converts all the &#nnn; and &#xhhh; in a string to Unicode
 	//converts all the &#nnn; and &#xhhh; in a string to Unicode
 	if ($lo) { $lo = 1; } else { $lo = 0; }
 	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){
   function code2utf($num,$lo=true){
 	//Returns the utf string corresponding to the unicode value
 	//Returns the utf string corresponding to the unicode value
 	//added notes - http://uk.php.net/utf8_encode
 	//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){
   function codeHex2utf($hex,$lo=true){
 	$num = hexdec($hex);
 	$num = hexdec($hex);
 	if (($num<128) && !$lo) return '&#x'.$hex.';';	// i.e. no change
 	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
 <?php
+
 ############################
 ############################
-set_time_limit(600);
+set_time_limit(1200);
 ini_set("memory_limit","128M");
 ini_set("memory_limit","128M");
 ############################
 ############################
 
 
 $cpages = array('win-1252','win-1251','iso-8859-2','iso-8859-4','iso-8859-7','iso-8859-9');
 $cpages = array('win-1252','win-1251','iso-8859-2','iso-8859-4','iso-8859-7','iso-8859-9');
 $map_path = '../maps/';
 $map_path = '../maps/';
 
 
-$step = $_REQUEST['step'];
+if (isset($_REQUEST['step'])) { $step = $_REQUEST['step']; }
+else $step = '';
 echo '<html><body>';
 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
 // INITIAL INSTRUCTIONS
@@ -30,14 +32,14 @@ if (!$step) {
 
 
 }
 }
 
 
-// STEP 1 - 
+// STEP 1 -
 else if ($step==1) {
 else if ($step==1) {
 	echo '<h3>Step 1 - Unibyte (codepage) font files - A</h3>';
 	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>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>';
 	echo '<p><a href="makefonts.php?step=2">Execute</a> and go to Step 2</p>';
 }
 }
 
 
-// STEP 2 - 
+// STEP 2 -
 else if ($step==2) {
 else if ($step==2) {
 	makebatlist('C');
 	makebatlist('C');
 	exec('makefonts.bat');
 	exec('makefonts.bat');
@@ -66,7 +68,7 @@ else if ($step==2) {
 	echo '<p>Execute <a href="makefonts.php?step=3">Step 3</a></p>';
 	echo '<p>Execute <a href="makefonts.php?step=3">Step 3</a></p>';
 }
 }
 
 
-// STEP 3 - 
+// STEP 3 -
 else if ($step==3) {
 else if ($step==3) {
 	$ff = scandir('./');
 	$ff = scandir('./');
 	foreach($ff AS $f) {
 	foreach($ff AS $f) {
@@ -106,11 +108,11 @@ else if ($step==3) {
 
 
 }
 }
 
 
-// STEP 4 - 
+// STEP 4 -
 else if ($step==4) {
 else if ($step==4) {
 	echo '<h3>Step 4 - Unibyte (codepage) font files - D</h3>';
 	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>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>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>';
 	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) {
 else if ($step==5) {
 
 
 	// First get rid of any .php and .z files left
 	// 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));
 		$file = substr($f,0,(strlen($f)-4));
 		foreach($cpages AS $cpage) {
 		foreach($cpages AS $cpage) {
 		  if ($cpage =='win-1252') {
 		  if ($cpage =='win-1252') {
-			@unlink($file .'.z'); @unlink($file .'.php'); 
+			@unlink($file .'.z'); @unlink($file .'.php');
 		  }
 		  }
 		  else {
 		  else {
 			@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
 			@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
@@ -146,7 +148,7 @@ else if ($step==5) {
 	makebatlist('U');
 	makebatlist('U');
 	exec('makefonts.bat');
 	exec('makefonts.bat');
 	echo '<h3>Step 5 - Unicode TrueType font files - A</h3>';
 	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 '<ul><li>fontname.t1a</li>';
 	echo '<li>fontname.ufm</li>';
 	echo '<li>fontname.ufm</li>';
 	echo '<li>fontname.afm</li></ul>';
 	echo '<li>fontname.afm</li></ul>';
@@ -168,7 +170,7 @@ else if ($step==5) {
 
 
 
 
 
 
-// STEP 6 - 
+// STEP 6 -
 else if ($step==6) {
 else if ($step==6) {
 	$ff = scandir('./');
 	$ff = scandir('./');
 	foreach($ff AS $f) {
 	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>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>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
 		$pdf_diffstr = '';	// String of /Diffs for PDF file
 		$of_encodingstr = '';
 		$of_encodingstr = '';
 		$useChars = array();
 		$useChars = array();
-	
+
 		//echo "Processing font: ".$file."... <br />\n";
 		//echo "Processing font: ".$file."... <br />\n";
 
 
-		$file_ip = $file.'.t1a';
-		$fi = file_get_contents($file_ip);
-		$fi = preg_replace("/\r\n/","\n",$fi);
 		$subrs='';
 		$subrs='';
 		$CharStrings='';
 		$CharStrings='';
 		$Encoding='';
 		$Encoding='';
 
 
+		$file_ip = $file.'.t1a';
+
+		$ifh = fopen($file_ip, "rb");
+		$target = false;
+		$rem = '';
 		// Header
 		// 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
 		// 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
 		// WRITE if_header to .dat
-		$fh = fopen($file.'.dat', "w");
+		$offset = 0;
+		$fh = fopen($file.'.dat', "wb");
 
 
 		_fwriteint($fh, strlen($if_header));
 		_fwriteint($fh, strlen($if_header));
 		fwrite($fh, $if_header);
 		fwrite($fh, $if_header);
 		$offset += strlen($if_header) + 4;
 		$offset += strlen($if_header) + 4;
 
 
+		// WRITE if_eexec_start to .dat
 		_fwriteint($fh, strlen($if_eexec_start));
 		_fwriteint($fh, strlen($if_eexec_start));
 		fwrite($fh, $if_eexec_start);
 		fwrite($fh, $if_eexec_start);
 		$offset += strlen($if_eexec_start) + 4;
 		$offset += strlen($if_eexec_start) + 4;
 
 
 		unset($if_header );
 		unset($if_header );
 		unset($if_eexec_start );
 		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();
 		$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++) {
 		for($i=0;$i<count($m[0]);$i++) {
 			$cp = $m[1][$i];
 			$cp = $m[1][$i];
 			$cs = $m[2][$i];
 			$cs = $m[2][$i];
@@ -382,11 +448,40 @@ else if ($step==7) {
 			fwrite($fh, $cb);
 			fwrite($fh, $cb);
 			$offset += strlen($cb) + 4;
 			$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);
 		fclose($fh);
 		unset($if_Subrs);
 		unset($if_Subrs);
 		unset($CharStrings);
 		unset($CharStrings);
 		unset($fi);
 		unset($fi);
-		// WRITE if_eexec_start to .dat
+		// WRITE offsets to .dat.php
 		$fh = fopen($file.'.dat.php', "w");
 		$fh = fopen($file.'.dat.php', "w");
 		$s = '<?php $offs = '.var_export($offs, true).'; ?>';
 		$s = '<?php $offs = '.var_export($offs, true).'; ?>';
 		fwrite($fh, $s);
 		fwrite($fh, $s);
@@ -412,11 +507,11 @@ else if ($step==7) {
 
 
 
 
 
 
-// STEP 8 - 
+// STEP 8 -
 else if ($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>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>(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 '<ul><li>fontname.z</li>';
 	echo '<li>fontname.ctg.z</li>';
 	echo '<li>fontname.ctg.z</li>';
@@ -433,7 +528,7 @@ else if ($step==8) {
 }
 }
 
 
 
 
-// STEP 9 - 
+// STEP 9 -
 else if ($step==9) {
 else if ($step==9) {
 	$ff = scandir('./');
 	$ff = scandir('./');
 	foreach($ff AS $f) {
 	foreach($ff AS $f) {
@@ -451,7 +546,7 @@ else if ($step==9) {
 		@unlink('makefonts.bat');
 		@unlink('makefonts.bat');
 		foreach($cpages AS $cpage) {
 		foreach($cpages AS $cpage) {
 		  if ($cpage =='win-1252') {
 		  if ($cpage =='win-1252') {
-			@unlink($file .'.z'); @unlink($file .'.php'); 
+			@unlink($file .'.z'); @unlink($file .'.php');
 		  }
 		  }
 		  else {
 		  else {
 			@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
 			@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
@@ -585,12 +680,12 @@ function movefonts() {
 		$file = substr($f,0,(strlen($f)-4));
 		$file = substr($f,0,(strlen($f)-4));
 		foreach($cpages AS $cpage) {
 		foreach($cpages AS $cpage) {
 		  if ($cpage =='win-1252') {
 		  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 {
 		  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) {
 	foreach($ff AS $f) {
 	   if (substr($f,-4,4)=='.ttf') {
 	   if (substr($f,-4,4)=='.ttf') {
 		$file = substr($f,0,(strlen($f)-4));
 		$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
 	//Read a font metric file
 	$a=file($file);
 	$a=file($file);
 	if(empty($a))
 	if(empty($a))
-		die('File not found');
+		die('File not found (ReadAFM) - '.$file);
 	$widths=array();
 	$widths=array();
 	$fm=array();
 	$fm=array();
 	$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
 	$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
@@ -1062,11 +1157,11 @@ function ReadUFM($file, &$cidtogidmap)
 {
 {
   //Prepare empty CIDToGIDMap
   //Prepare empty CIDToGIDMap
   $cidtogidmap = str_pad('', 256*256*2, "\x00");
   $cidtogidmap = str_pad('', 256*256*2, "\x00");
-  
+
   //Read a font metric file
   //Read a font metric file
   $a=file($file);
   $a=file($file);
   if(empty($a))
   if(empty($a))
-    die('File not found');
+    die('File not found (ReadUFM) - '.$file);
   $widths=array();
   $widths=array();
   $fm=array();
   $fm=array();
   foreach($a as $l)
   foreach($a as $l)
@@ -1086,17 +1181,18 @@ function ReadUFM($file, &$cidtogidmap)
         $w = $e[4];
         $w = $e[4];
         $glyph = $e[10];
         $glyph = $e[10];
         $widths[$cc] = $w;
         $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
         // Set GID
         if ($cc >= 0 && $cc < 0xFFFF && $glyph) {
         if ($cc >= 0 && $cc < 0xFFFF && $glyph) {
           $cidtogidmap{$cc*2} = chr($glyph >> 8);
           $cidtogidmap{$cc*2} = chr($glyph >> 8);
           $cidtogidmap{$cc*2 + 1} = chr($glyph & 0xFF);
           $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')
     elseif($code=='FontName')
       $fm['FontName']=$param;
       $fm['FontName']=$param;
@@ -1128,7 +1224,7 @@ function ReadUFM($file, &$cidtogidmap)
     die('FontName not found');
     die('FontName not found');
 
 
   $fm['Widths']=$widths;
   $fm['Widths']=$widths;
-  
+
   return $fm;
   return $fm;
 }
 }
 
 
@@ -1260,14 +1356,14 @@ function MakeFontTTF($fontfile,$ufmfile)
 
 
       $cmp=$basename.'.ctg.z';
       $cmp=$basename.'.ctg.z';
       SaveToFile($cmp,gzcompress($cidtogidmap),'b');
       SaveToFile($cmp,gzcompress($cidtogidmap),'b');
-      //echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';     
+      //echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';
       $s.='$ctg=\''.$cmp."';\n";
       $s.='$ctg=\''.$cmp."';\n";
     }
     }
     else
     else
     {
     {
       $s.='$file=\''.basename($fontfile)."';\n";
       $s.='$file=\''.basename($fontfile)."';\n";
       echo '<B>Notice:</B> font file could not be compressed (gzcompress not available)<BR>';
       echo '<B>Notice:</B> font file could not be compressed (gzcompress not available)<BR>';
-      
+
       $cmp=$basename.'.ctg';
       $cmp=$basename.'.ctg';
       $f = fopen($cmp, 'wb');
       $f = fopen($cmp, 'wb');
       fwrite($f, $cidtogidmap);
       fwrite($f, $cidtogidmap);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 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 array
      */
      */
     var $pages;
     var $pages;
-    
+
     /**
     /**
      * Page count
      * Page count
      * @var integer
      * @var integer
      */
      */
     var $page_count;
     var $page_count;
-    
+
     /**
     /**
      * actual page number
      * actual page number
      * @var integer
      * @var integer
      */
      */
     var $pageno;
     var $pageno;
-    
-    
+
+
     /**
     /**
      * FPDI Reference
      * FPDI Reference
      * @var object
      * @var object
      */
      */
     var $fpdi;
     var $fpdi;
-    
+
     /**
     /**
      * Available BoxTypes
      * Available BoxTypes
      *
      *
      * @var array
      * @var array
      */
      */
     var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
     var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
-        
+
     /**
     /**
      * Constructor
      * Constructor
      *
      *
@@ -78,8 +78,8 @@ class fpdi_pdf_parser extends pdf_parser {
         // count pages;
         // count pages;
         $this->page_count = count($this->pages);
         $this->page_count = count($this->pages);
     }
     }
-    
-    
+
+
     /**
     /**
      * Get pagecount from sourcefile
      * Get pagecount from sourcefile
      *
      *
@@ -104,7 +104,7 @@ class fpdi_pdf_parser extends pdf_parser {
 
 
         $this->pageno = $pageno;
         $this->pageno = $pageno;
     }
     }
-    
+
     /**
     /**
      * Get page-resources from current page
      * Get page-resources from current page
      *
      *
@@ -113,7 +113,7 @@ class fpdi_pdf_parser extends pdf_parser {
     function getPageResources() {
     function getPageResources() {
         return $this->_getPageResources($this->pages[$this->pageno]);
         return $this->_getPageResources($this->pages[$this->pageno]);
     }
     }
-    
+
     /**
     /**
      * Get page-resources from /Page
      * Get page-resources from /Page
      *
      *
@@ -153,18 +153,18 @@ class fpdi_pdf_parser extends pdf_parser {
      */
      */
     function getContent() {
     function getContent() {
         $buffer = "";
         $buffer = "";
-        
+
         if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
         if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
             $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
             $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
             foreach($contents AS $tmp_content) {
             foreach($contents AS $tmp_content) {
                 $buffer .= $this->_rebuildContentStream($tmp_content).' ';
                 $buffer .= $this->_rebuildContentStream($tmp_content).' ';
             }
             }
         }
         }
-        
+
         return $buffer;
         return $buffer;
     }
     }
-    
-    
+
+
     /**
     /**
      * Resolve all content-objects
      * Resolve all content-objects
      *
      *
@@ -173,7 +173,7 @@ class fpdi_pdf_parser extends pdf_parser {
      */
      */
     function _getPageContent($content_ref) {
     function _getPageContent($content_ref) {
         $contents = array();
         $contents = array();
-        
+
         if ($content_ref[0] == PDF_TYPE_OBJREF) {
         if ($content_ref[0] == PDF_TYPE_OBJREF) {
             $content = $this->pdf_resolve_object($this->c, $content_ref);
             $content = $this->pdf_resolve_object($this->c, $content_ref);
             if ($content[1][0] == PDF_TYPE_ARRAY) {
             if ($content[1][0] == PDF_TYPE_ARRAY) {
@@ -199,7 +199,7 @@ class fpdi_pdf_parser extends pdf_parser {
      */
      */
     function _rebuildContentStream($obj) {
     function _rebuildContentStream($obj) {
         $filters = array();
         $filters = array();
-        
+
         if (isset($obj[1][1]['/Filter'])) {
         if (isset($obj[1][1]['/Filter'])) {
             $_filter = $obj[1][1]['/Filter'];
             $_filter = $obj[1][1]['/Filter'];
 
 
@@ -215,37 +215,38 @@ class fpdi_pdf_parser extends pdf_parser {
         foreach ($filters AS $_filter) {
         foreach ($filters AS $_filter) {
             switch ($_filter[1]) {
             switch ($_filter[1]) {
                 case "/FlateDecode":
                 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]));
                         $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.");
                         $this->fpdi->error("Error while decompressing stream.");
-                    }
+			}
                 break;
                 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:
                 case null:
-                    $stream = $stream;
-                break;
+			$stream = $stream;
+			break;
                 default:
                 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;
         return $stream;
     }
     }
-    
-    
+
+
     /**
     /**
      * Get a Box from a page
      * Get a Box from a page
      * Arrayformat is same as used by fpdf_tpl
      * Arrayformat is same as used by fpdf_tpl
@@ -259,12 +260,12 @@ class fpdi_pdf_parser extends pdf_parser {
         $box = null;
         $box = null;
         if (isset($page[1][1][$box_index]))
         if (isset($page[1][1][$box_index]))
             $box =& $page[1][1][$box_index];
             $box =& $page[1][1][$box_index];
-        
+
         if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
         if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
             $tmp_box = $this->pdf_resolve_object($this->c,$box);
             $tmp_box = $this->pdf_resolve_object($this->c,$box);
             $box = $tmp_box[1];
             $box = $tmp_box[1];
         }
         }
-            
+
         if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
         if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
             $b =& $box[1];
             $b =& $box[1];
             return array("x" => $b[0][1]/$this->fpdi->k,
             return array("x" => $b[0][1]/$this->fpdi->k,
@@ -281,7 +282,7 @@ class fpdi_pdf_parser extends pdf_parser {
     function getPageBoxes($pageno) {
     function getPageBoxes($pageno) {
         return $this->_getPageBoxes($this->pages[$pageno-1]);
         return $this->_getPageBoxes($this->pages[$pageno-1]);
     }
     }
-    
+
     /**
     /**
      * Get all Boxes from /Page
      * Get all Boxes from /Page
      *
      *
@@ -303,7 +304,7 @@ class fpdi_pdf_parser extends pdf_parser {
     function getPageRotation($pageno) {
     function getPageRotation($pageno) {
         return $this->_getPageRotation($this->pages[$pageno-1]);
         return $this->_getPageRotation($this->pages[$pageno-1]);
     }
     }
-    
+
     function _getPageRotation ($obj) { // $obj = /Page
     function _getPageRotation ($obj) { // $obj = /Page
     	$obj = $this->pdf_resolve_object($this->c, $obj);
     	$obj = $this->pdf_resolve_object($this->c, $obj);
     	if (isset ($obj[1][1]['/Rotate'])) {
     	if (isset ($obj[1][1]['/Rotate'])) {
@@ -322,7 +323,7 @@ class fpdi_pdf_parser extends pdf_parser {
     		}
     		}
     	}
     	}
     }
     }
-    
+
     /**
     /**
      * Read all /Page(es)
      * 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';
 $tempfilename = $_REQUEST['filename'].'.pdf';
 $opname = $_REQUEST['opname'];
 $opname = $_REQUEST['opname'];
 $dest = $_REQUEST['dest'];
 $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('../tmp/'.$tempfilename)) {
-	if ($tempfilename && file_exists(_MPDF_TMP_PATH.$tempfilename)) {
+	if ($tempfilename && file_exists(_MPDF_TEMP_PATH.$tempfilename)) {
 	//
 	//
 		header("Pragma: ");
 		header("Pragma: ");
 		header("Cache-Control: private");
 		header("Cache-Control: private");
@@ -34,20 +34,20 @@ $dest = $_REQUEST['dest'];
 			}
 			}
 			header('Content-disposition: attachment; filename='.$opname);
 			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('../tmp/'.$tempfilename);
-		$filesize = filesize(_MPDF_TMP_PATH.$tempfilename);
+		$filesize = filesize(_MPDF_TEMP_PATH.$tempfilename);
 		//
 		//
 		header("Content-length:".$filesize);
 		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('../tmp/'.$tempfilename,'r');
-		$fd=fopen(_MPDF_TMP_PATH.$tempfilename,'r');
+		$fd=fopen(_MPDF_TEMP_PATH.$tempfilename,'r');
 		//
 		//
 		fpassthru($fd);
 		fpassthru($fd);
 		fclose($fd);
 		fclose($fd);
-		// Modified by Ivan Tcholakov, 28-JAN-2010.
+		// Modified by Ivan Tcholakov, 28-JUN-2010.
 		//unlink('../tmp/'.$tempfilename);
 		//unlink('../tmp/'.$tempfilename);
-		unlink(_MPDF_TMP_PATH.$tempfilename);
+		unlink(_MPDF_TEMP_PATH.$tempfilename);
 		//
 		//
 		// ====================== DELETE OLD FILES FIRST - Housekeeping =========================================
 		// ====================== DELETE OLD FILES FIRST - Housekeeping =========================================
 		// Clear any files in directory that are >24 hrs old
 		// Clear any files in directory that are >24 hrs old
@@ -61,10 +61,10 @@ $dest = $_REQUEST['dest'];
 		//   }
 		//   }
 		//   closedir($handle);
 		//   closedir($handle);
 		//}
 		//}
-		if ($handle = opendir(_MPDF_TMP_PATH)) {
+		if ($handle = opendir(_MPDF_TEMP_PATH)) {
 		   while (false !== ($file = readdir($handle))) {
 		   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);
 		   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
 <?php
 $type='TrueTypeUnicode';
 $type='TrueTypeUnicode';
 $name='Garuda';
 $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;
 $ut=10;
 $cw=array(
 $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, 
 	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, 
 	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, 
 	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, 
 	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, 
 	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, 
 	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='';
 $enc='';
 $diff='';
 $diff='';
 $file='garuda.z';
 $file='garuda.z';
 $ctg='garuda.ctg.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
 <?php
 $type='TrueTypeUnicode';
 $type='TrueTypeUnicode';
 $name='Garuda-Bold';
 $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;
 $ut=20;
 $cw=array(
 $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, 
 	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, 
 	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, 
 	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, 
 	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, 
 	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='';
 $enc='';
 $diff='';
 $diff='';
 $file='garudab.z';
 $file='garudab.z';
 $ctg='garudab.ctg.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
 <?php
 $type='TrueTypeUnicode';
 $type='TrueTypeUnicode';
 $name='Garuda-BoldOblique';
 $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;
 $ut=20;
 $cw=array(
 $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, 
 	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, 
 	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, 
 	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, 
 	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, 
 	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='';
 $enc='';
 $diff='';
 $diff='';
 $file='garudabi.z';
 $file='garudabi.z';
 $ctg='garudabi.ctg.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
 <?php
 $type='TrueTypeUnicode';
 $type='TrueTypeUnicode';
 $name='Garuda-Oblique';
 $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;
 $ut=10;
 $cw=array(
 $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, 
 	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, 
 	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, 
 	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, 
 	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, 
 	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, 
 	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='';
 $enc='';
 $diff='';
 $diff='';
 $file='garudai.z';
 $file='garudai.z';
 $ctg='garudai.ctg.z';
 $ctg='garudai.ctg.z';
-$originalsize=45300;
+$originalsize=85500;
 ?>
 ?>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.