PageRenderTime 73ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 1ms

/lib/tcpdf/include/tcpdf_static.php

https://bitbucket.org/synergylearning/campusconnect
PHP | 2837 lines | 1715 code | 71 blank | 1051 comment | 253 complexity | 15f1595cbcbf1d6f0c7ceea6435fdfc9 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-3.0, GPL-3.0, LGPL-2.1, Apache-2.0, BSD-3-Clause, AGPL-3.0

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. //============================================================+
  3. // File name : tcpdf_static.php
  4. // Version : 1.0.002
  5. // Begin : 2002-08-03
  6. // Last Update : 2013-09-14
  7. // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
  8. // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
  9. // -------------------------------------------------------------------
  10. // Copyright (C) 2002-2013 Nicola Asuni - Tecnick.com LTD
  11. //
  12. // This file is part of TCPDF software library.
  13. //
  14. // TCPDF is free software: you can redistribute it and/or modify it
  15. // under the terms of the GNU Lesser General Public License as
  16. // published by the Free Software Foundation, either version 3 of the
  17. // License, or (at your option) any later version.
  18. //
  19. // TCPDF is distributed in the hope that it will be useful, but
  20. // WITHOUT ANY WARRANTY; without even the implied warranty of
  21. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  22. // See the GNU Lesser General Public License for more details.
  23. //
  24. // You should have received a copy of the License
  25. // along with TCPDF. If not, see
  26. // <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
  27. //
  28. // See LICENSE.TXT file for more information.
  29. // -------------------------------------------------------------------
  30. //
  31. // Description :
  32. // Static methods used by the TCPDF class.
  33. //
  34. //============================================================+
  35. /**
  36. * @file
  37. * This is a PHP class that contains static methods for the TCPDF class.<br>
  38. * @package com.tecnick.tcpdf
  39. * @author Nicola Asuni
  40. * @version 1.0.002
  41. */
  42. /**
  43. * @class TCPDF_STATIC
  44. * Static methods used by the TCPDF class.
  45. * @package com.tecnick.tcpdf
  46. * @brief PHP class for generating PDF documents without requiring external extensions.
  47. * @version 1.0.002
  48. * @author Nicola Asuni - info@tecnick.com
  49. */
  50. class TCPDF_STATIC {
  51. /**
  52. * Current TCPDF version.
  53. * @private static
  54. */
  55. private static $tcpdf_version = '6.0.031';
  56. /**
  57. * String alias for total number of pages.
  58. * @public static
  59. */
  60. public static $alias_tot_pages = '{:ptp:}';
  61. /**
  62. * String alias for page number.
  63. * @public static
  64. */
  65. public static $alias_num_page = '{:pnp:}';
  66. /**
  67. * String alias for total number of pages in a single group.
  68. * @public static
  69. */
  70. public static $alias_group_tot_pages = '{:ptg:}';
  71. /**
  72. * String alias for group page number.
  73. * @public static
  74. */
  75. public static $alias_group_num_page = '{:png:}';
  76. /**
  77. * String alias for right shift compensation used to correctly align page numbers on the right.
  78. * @public static
  79. */
  80. public static $alias_right_shift = '{rsc:';
  81. /**
  82. * Encryption padding string.
  83. * @public static
  84. */
  85. public static $enc_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";
  86. /**
  87. * ByteRange placemark used during digital signature process.
  88. * @since 4.6.028 (2009-08-25)
  89. * @public static
  90. */
  91. public static $byterange_string = '/ByteRange[0 ********** ********** **********]';
  92. /**
  93. * Array page boxes names
  94. * @public static
  95. */
  96. public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox');
  97. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  98. /**
  99. * Return the current TCPDF version.
  100. * @return TCPDF version string
  101. * @since 5.9.012 (2010-11-10)
  102. * @public static
  103. */
  104. public static function getTCPDFVersion() {
  105. return self::$tcpdf_version;
  106. }
  107. /**
  108. * Return the current TCPDF producer.
  109. * @return TCPDF producer string
  110. * @since 6.0.000 (2013-03-16)
  111. * @public static
  112. */
  113. public static function getTCPDFProducer() {
  114. return "\x54\x43\x50\x44\x46\x20".self::getTCPDFVersion()."\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29";
  115. }
  116. /**
  117. * Sets the current active configuration setting of magic_quotes_runtime (if the set_magic_quotes_runtime function exist)
  118. * @param $mqr (boolean) FALSE for off, TRUE for on.
  119. * @since 4.6.025 (2009-08-17)
  120. * @public static
  121. */
  122. public static function set_mqr($mqr) {
  123. if (!defined('PHP_VERSION_ID')) {
  124. $version = PHP_VERSION;
  125. define('PHP_VERSION_ID', (($version{0} * 10000) + ($version{2} * 100) + $version{4}));
  126. }
  127. if (PHP_VERSION_ID < 50300) {
  128. @set_magic_quotes_runtime($mqr);
  129. }
  130. }
  131. /**
  132. * Gets the current active configuration setting of magic_quotes_runtime (if the get_magic_quotes_runtime function exist)
  133. * @return Returns 0 if magic quotes runtime is off or get_magic_quotes_runtime doesn't exist, 1 otherwise.
  134. * @since 4.6.025 (2009-08-17)
  135. * @public static
  136. */
  137. public static function get_mqr() {
  138. if (!defined('PHP_VERSION_ID')) {
  139. $version = PHP_VERSION;
  140. define('PHP_VERSION_ID', (($version{0} * 10000) + ($version{2} * 100) + $version{4}));
  141. }
  142. if (PHP_VERSION_ID < 50300) {
  143. return @get_magic_quotes_runtime();
  144. }
  145. return 0;
  146. }
  147. /**
  148. * Get page dimensions from format name.
  149. * @param $format (mixed) The format name. It can be: <ul>
  150. * <li><b>ISO 216 A Series + 2 SIS 014711 extensions</b></li>
  151. * <li>A0 (841x1189 mm ; 33.11x46.81 in)</li>
  152. * <li>A1 (594x841 mm ; 23.39x33.11 in)</li>
  153. * <li>A2 (420x594 mm ; 16.54x23.39 in)</li>
  154. * <li>A3 (297x420 mm ; 11.69x16.54 in)</li>
  155. * <li>A4 (210x297 mm ; 8.27x11.69 in)</li>
  156. * <li>A5 (148x210 mm ; 5.83x8.27 in)</li>
  157. * <li>A6 (105x148 mm ; 4.13x5.83 in)</li>
  158. * <li>A7 (74x105 mm ; 2.91x4.13 in)</li>
  159. * <li>A8 (52x74 mm ; 2.05x2.91 in)</li>
  160. * <li>A9 (37x52 mm ; 1.46x2.05 in)</li>
  161. * <li>A10 (26x37 mm ; 1.02x1.46 in)</li>
  162. * <li>A11 (18x26 mm ; 0.71x1.02 in)</li>
  163. * <li>A12 (13x18 mm ; 0.51x0.71 in)</li>
  164. * <li><b>ISO 216 B Series + 2 SIS 014711 extensions</b></li>
  165. * <li>B0 (1000x1414 mm ; 39.37x55.67 in)</li>
  166. * <li>B1 (707x1000 mm ; 27.83x39.37 in)</li>
  167. * <li>B2 (500x707 mm ; 19.69x27.83 in)</li>
  168. * <li>B3 (353x500 mm ; 13.90x19.69 in)</li>
  169. * <li>B4 (250x353 mm ; 9.84x13.90 in)</li>
  170. * <li>B5 (176x250 mm ; 6.93x9.84 in)</li>
  171. * <li>B6 (125x176 mm ; 4.92x6.93 in)</li>
  172. * <li>B7 (88x125 mm ; 3.46x4.92 in)</li>
  173. * <li>B8 (62x88 mm ; 2.44x3.46 in)</li>
  174. * <li>B9 (44x62 mm ; 1.73x2.44 in)</li>
  175. * <li>B10 (31x44 mm ; 1.22x1.73 in)</li>
  176. * <li>B11 (22x31 mm ; 0.87x1.22 in)</li>
  177. * <li>B12 (15x22 mm ; 0.59x0.87 in)</li>
  178. * <li><b>ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION</b></li>
  179. * <li>C0 (917x1297 mm ; 36.10x51.06 in)</li>
  180. * <li>C1 (648x917 mm ; 25.51x36.10 in)</li>
  181. * <li>C2 (458x648 mm ; 18.03x25.51 in)</li>
  182. * <li>C3 (324x458 mm ; 12.76x18.03 in)</li>
  183. * <li>C4 (229x324 mm ; 9.02x12.76 in)</li>
  184. * <li>C5 (162x229 mm ; 6.38x9.02 in)</li>
  185. * <li>C6 (114x162 mm ; 4.49x6.38 in)</li>
  186. * <li>C7 (81x114 mm ; 3.19x4.49 in)</li>
  187. * <li>C8 (57x81 mm ; 2.24x3.19 in)</li>
  188. * <li>C9 (40x57 mm ; 1.57x2.24 in)</li>
  189. * <li>C10 (28x40 mm ; 1.10x1.57 in)</li>
  190. * <li>C11 (20x28 mm ; 0.79x1.10 in)</li>
  191. * <li>C12 (14x20 mm ; 0.55x0.79 in)</li>
  192. * <li>C76 (81x162 mm ; 3.19x6.38 in)</li>
  193. * <li>DL (110x220 mm ; 4.33x8.66 in)</li>
  194. * <li><b>SIS 014711 E Series</b></li>
  195. * <li>E0 (879x1241 mm ; 34.61x48.86 in)</li>
  196. * <li>E1 (620x879 mm ; 24.41x34.61 in)</li>
  197. * <li>E2 (440x620 mm ; 17.32x24.41 in)</li>
  198. * <li>E3 (310x440 mm ; 12.20x17.32 in)</li>
  199. * <li>E4 (220x310 mm ; 8.66x12.20 in)</li>
  200. * <li>E5 (155x220 mm ; 6.10x8.66 in)</li>
  201. * <li>E6 (110x155 mm ; 4.33x6.10 in)</li>
  202. * <li>E7 (78x110 mm ; 3.07x4.33 in)</li>
  203. * <li>E8 (55x78 mm ; 2.17x3.07 in)</li>
  204. * <li>E9 (39x55 mm ; 1.54x2.17 in)</li>
  205. * <li>E10 (27x39 mm ; 1.06x1.54 in)</li>
  206. * <li>E11 (19x27 mm ; 0.75x1.06 in)</li>
  207. * <li>E12 (13x19 mm ; 0.51x0.75 in)</li>
  208. * <li><b>SIS 014711 G Series</b></li>
  209. * <li>G0 (958x1354 mm ; 37.72x53.31 in)</li>
  210. * <li>G1 (677x958 mm ; 26.65x37.72 in)</li>
  211. * <li>G2 (479x677 mm ; 18.86x26.65 in)</li>
  212. * <li>G3 (338x479 mm ; 13.31x18.86 in)</li>
  213. * <li>G4 (239x338 mm ; 9.41x13.31 in)</li>
  214. * <li>G5 (169x239 mm ; 6.65x9.41 in)</li>
  215. * <li>G6 (119x169 mm ; 4.69x6.65 in)</li>
  216. * <li>G7 (84x119 mm ; 3.31x4.69 in)</li>
  217. * <li>G8 (59x84 mm ; 2.32x3.31 in)</li>
  218. * <li>G9 (42x59 mm ; 1.65x2.32 in)</li>
  219. * <li>G10 (29x42 mm ; 1.14x1.65 in)</li>
  220. * <li>G11 (21x29 mm ; 0.83x1.14 in)</li>
  221. * <li>G12 (14x21 mm ; 0.55x0.83 in)</li>
  222. * <li><b>ISO Press</b></li>
  223. * <li>RA0 (860x1220 mm ; 33.86x48.03 in)</li>
  224. * <li>RA1 (610x860 mm ; 24.02x33.86 in)</li>
  225. * <li>RA2 (430x610 mm ; 16.93x24.02 in)</li>
  226. * <li>RA3 (305x430 mm ; 12.01x16.93 in)</li>
  227. * <li>RA4 (215x305 mm ; 8.46x12.01 in)</li>
  228. * <li>SRA0 (900x1280 mm ; 35.43x50.39 in)</li>
  229. * <li>SRA1 (640x900 mm ; 25.20x35.43 in)</li>
  230. * <li>SRA2 (450x640 mm ; 17.72x25.20 in)</li>
  231. * <li>SRA3 (320x450 mm ; 12.60x17.72 in)</li>
  232. * <li>SRA4 (225x320 mm ; 8.86x12.60 in)</li>
  233. * <li><b>German DIN 476</b></li>
  234. * <li>4A0 (1682x2378 mm ; 66.22x93.62 in)</li>
  235. * <li>2A0 (1189x1682 mm ; 46.81x66.22 in)</li>
  236. * <li><b>Variations on the ISO Standard</b></li>
  237. * <li>A2_EXTRA (445x619 mm ; 17.52x24.37 in)</li>
  238. * <li>A3+ (329x483 mm ; 12.95x19.02 in)</li>
  239. * <li>A3_EXTRA (322x445 mm ; 12.68x17.52 in)</li>
  240. * <li>A3_SUPER (305x508 mm ; 12.01x20.00 in)</li>
  241. * <li>SUPER_A3 (305x487 mm ; 12.01x19.17 in)</li>
  242. * <li>A4_EXTRA (235x322 mm ; 9.25x12.68 in)</li>
  243. * <li>A4_SUPER (229x322 mm ; 9.02x12.68 in)</li>
  244. * <li>SUPER_A4 (227x356 mm ; 8.94x14.02 in)</li>
  245. * <li>A4_LONG (210x348 mm ; 8.27x13.70 in)</li>
  246. * <li>F4 (210x330 mm ; 8.27x12.99 in)</li>
  247. * <li>SO_B5_EXTRA (202x276 mm ; 7.95x10.87 in)</li>
  248. * <li>A5_EXTRA (173x235 mm ; 6.81x9.25 in)</li>
  249. * <li><b>ANSI Series</b></li>
  250. * <li>ANSI_E (864x1118 mm ; 34.00x44.00 in)</li>
  251. * <li>ANSI_D (559x864 mm ; 22.00x34.00 in)</li>
  252. * <li>ANSI_C (432x559 mm ; 17.00x22.00 in)</li>
  253. * <li>ANSI_B (279x432 mm ; 11.00x17.00 in)</li>
  254. * <li>ANSI_A (216x279 mm ; 8.50x11.00 in)</li>
  255. * <li><b>Traditional 'Loose' North American Paper Sizes</b></li>
  256. * <li>LEDGER, USLEDGER (432x279 mm ; 17.00x11.00 in)</li>
  257. * <li>TABLOID, USTABLOID, BIBLE, ORGANIZERK (279x432 mm ; 11.00x17.00 in)</li>
  258. * <li>LETTER, USLETTER, ORGANIZERM (216x279 mm ; 8.50x11.00 in)</li>
  259. * <li>LEGAL, USLEGAL (216x356 mm ; 8.50x14.00 in)</li>
  260. * <li>GLETTER, GOVERNMENTLETTER (203x267 mm ; 8.00x10.50 in)</li>
  261. * <li>JLEGAL, JUNIORLEGAL (203x127 mm ; 8.00x5.00 in)</li>
  262. * <li><b>Other North American Paper Sizes</b></li>
  263. * <li>QUADDEMY (889x1143 mm ; 35.00x45.00 in)</li>
  264. * <li>SUPER_B (330x483 mm ; 13.00x19.00 in)</li>
  265. * <li>QUARTO (229x279 mm ; 9.00x11.00 in)</li>
  266. * <li>FOLIO, GOVERNMENTLEGAL (216x330 mm ; 8.50x13.00 in)</li>
  267. * <li>EXECUTIVE, MONARCH (184x267 mm ; 7.25x10.50 in)</li>
  268. * <li>MEMO, STATEMENT, ORGANIZERL (140x216 mm ; 5.50x8.50 in)</li>
  269. * <li>FOOLSCAP (210x330 mm ; 8.27x13.00 in)</li>
  270. * <li>COMPACT (108x171 mm ; 4.25x6.75 in)</li>
  271. * <li>ORGANIZERJ (70x127 mm ; 2.75x5.00 in)</li>
  272. * <li><b>Canadian standard CAN 2-9.60M</b></li>
  273. * <li>P1 (560x860 mm ; 22.05x33.86 in)</li>
  274. * <li>P2 (430x560 mm ; 16.93x22.05 in)</li>
  275. * <li>P3 (280x430 mm ; 11.02x16.93 in)</li>
  276. * <li>P4 (215x280 mm ; 8.46x11.02 in)</li>
  277. * <li>P5 (140x215 mm ; 5.51x8.46 in)</li>
  278. * <li>P6 (107x140 mm ; 4.21x5.51 in)</li>
  279. * <li><b>North American Architectural Sizes</b></li>
  280. * <li>ARCH_E (914x1219 mm ; 36.00x48.00 in)</li>
  281. * <li>ARCH_E1 (762x1067 mm ; 30.00x42.00 in)</li>
  282. * <li>ARCH_D (610x914 mm ; 24.00x36.00 in)</li>
  283. * <li>ARCH_C, BROADSHEET (457x610 mm ; 18.00x24.00 in)</li>
  284. * <li>ARCH_B (305x457 mm ; 12.00x18.00 in)</li>
  285. * <li>ARCH_A (229x305 mm ; 9.00x12.00 in)</li>
  286. * <li><b>Announcement Envelopes</b></li>
  287. * <li>ANNENV_A2 (111x146 mm ; 4.37x5.75 in)</li>
  288. * <li>ANNENV_A6 (121x165 mm ; 4.75x6.50 in)</li>
  289. * <li>ANNENV_A7 (133x184 mm ; 5.25x7.25 in)</li>
  290. * <li>ANNENV_A8 (140x206 mm ; 5.50x8.12 in)</li>
  291. * <li>ANNENV_A10 (159x244 mm ; 6.25x9.62 in)</li>
  292. * <li>ANNENV_SLIM (98x225 mm ; 3.87x8.87 in)</li>
  293. * <li><b>Commercial Envelopes</b></li>
  294. * <li>COMMENV_N6_1/4 (89x152 mm ; 3.50x6.00 in)</li>
  295. * <li>COMMENV_N6_3/4 (92x165 mm ; 3.62x6.50 in)</li>
  296. * <li>COMMENV_N8 (98x191 mm ; 3.87x7.50 in)</li>
  297. * <li>COMMENV_N9 (98x225 mm ; 3.87x8.87 in)</li>
  298. * <li>COMMENV_N10 (105x241 mm ; 4.12x9.50 in)</li>
  299. * <li>COMMENV_N11 (114x263 mm ; 4.50x10.37 in)</li>
  300. * <li>COMMENV_N12 (121x279 mm ; 4.75x11.00 in)</li>
  301. * <li>COMMENV_N14 (127x292 mm ; 5.00x11.50 in)</li>
  302. * <li><b>Catalogue Envelopes</b></li>
  303. * <li>CATENV_N1 (152x229 mm ; 6.00x9.00 in)</li>
  304. * <li>CATENV_N1_3/4 (165x241 mm ; 6.50x9.50 in)</li>
  305. * <li>CATENV_N2 (165x254 mm ; 6.50x10.00 in)</li>
  306. * <li>CATENV_N3 (178x254 mm ; 7.00x10.00 in)</li>
  307. * <li>CATENV_N6 (191x267 mm ; 7.50x10.50 in)</li>
  308. * <li>CATENV_N7 (203x279 mm ; 8.00x11.00 in)</li>
  309. * <li>CATENV_N8 (210x286 mm ; 8.25x11.25 in)</li>
  310. * <li>CATENV_N9_1/2 (216x267 mm ; 8.50x10.50 in)</li>
  311. * <li>CATENV_N9_3/4 (222x286 mm ; 8.75x11.25 in)</li>
  312. * <li>CATENV_N10_1/2 (229x305 mm ; 9.00x12.00 in)</li>
  313. * <li>CATENV_N12_1/2 (241x318 mm ; 9.50x12.50 in)</li>
  314. * <li>CATENV_N13_1/2 (254x330 mm ; 10.00x13.00 in)</li>
  315. * <li>CATENV_N14_1/4 (286x311 mm ; 11.25x12.25 in)</li>
  316. * <li>CATENV_N14_1/2 (292x368 mm ; 11.50x14.50 in)</li>
  317. * <li><b>Japanese (JIS P 0138-61) Standard B-Series</b></li>
  318. * <li>JIS_B0 (1030x1456 mm ; 40.55x57.32 in)</li>
  319. * <li>JIS_B1 (728x1030 mm ; 28.66x40.55 in)</li>
  320. * <li>JIS_B2 (515x728 mm ; 20.28x28.66 in)</li>
  321. * <li>JIS_B3 (364x515 mm ; 14.33x20.28 in)</li>
  322. * <li>JIS_B4 (257x364 mm ; 10.12x14.33 in)</li>
  323. * <li>JIS_B5 (182x257 mm ; 7.17x10.12 in)</li>
  324. * <li>JIS_B6 (128x182 mm ; 5.04x7.17 in)</li>
  325. * <li>JIS_B7 (91x128 mm ; 3.58x5.04 in)</li>
  326. * <li>JIS_B8 (64x91 mm ; 2.52x3.58 in)</li>
  327. * <li>JIS_B9 (45x64 mm ; 1.77x2.52 in)</li>
  328. * <li>JIS_B10 (32x45 mm ; 1.26x1.77 in)</li>
  329. * <li>JIS_B11 (22x32 mm ; 0.87x1.26 in)</li>
  330. * <li>JIS_B12 (16x22 mm ; 0.63x0.87 in)</li>
  331. * <li><b>PA Series</b></li>
  332. * <li>PA0 (840x1120 mm ; 33.07x44.09 in)</li>
  333. * <li>PA1 (560x840 mm ; 22.05x33.07 in)</li>
  334. * <li>PA2 (420x560 mm ; 16.54x22.05 in)</li>
  335. * <li>PA3 (280x420 mm ; 11.02x16.54 in)</li>
  336. * <li>PA4 (210x280 mm ; 8.27x11.02 in)</li>
  337. * <li>PA5 (140x210 mm ; 5.51x8.27 in)</li>
  338. * <li>PA6 (105x140 mm ; 4.13x5.51 in)</li>
  339. * <li>PA7 (70x105 mm ; 2.76x4.13 in)</li>
  340. * <li>PA8 (52x70 mm ; 2.05x2.76 in)</li>
  341. * <li>PA9 (35x52 mm ; 1.38x2.05 in)</li>
  342. * <li>PA10 (26x35 mm ; 1.02x1.38 in)</li>
  343. * <li><b>Standard Photographic Print Sizes</b></li>
  344. * <li>PASSPORT_PHOTO (35x45 mm ; 1.38x1.77 in)</li>
  345. * <li>E (82x120 mm ; 3.25x4.72 in)</li>
  346. * <li>3R, L (89x127 mm ; 3.50x5.00 in)</li>
  347. * <li>4R, KG (102x152 mm ; 4.02x5.98 in)</li>
  348. * <li>4D (120x152 mm ; 4.72x5.98 in)</li>
  349. * <li>5R, 2L (127x178 mm ; 5.00x7.01 in)</li>
  350. * <li>6R, 8P (152x203 mm ; 5.98x7.99 in)</li>
  351. * <li>8R, 6P (203x254 mm ; 7.99x10.00 in)</li>
  352. * <li>S8R, 6PW (203x305 mm ; 7.99x12.01 in)</li>
  353. * <li>10R, 4P (254x305 mm ; 10.00x12.01 in)</li>
  354. * <li>S10R, 4PW (254x381 mm ; 10.00x15.00 in)</li>
  355. * <li>11R (279x356 mm ; 10.98x14.02 in)</li>
  356. * <li>S11R (279x432 mm ; 10.98x17.01 in)</li>
  357. * <li>12R (305x381 mm ; 12.01x15.00 in)</li>
  358. * <li>S12R (305x456 mm ; 12.01x17.95 in)</li>
  359. * <li><b>Common Newspaper Sizes</b></li>
  360. * <li>NEWSPAPER_BROADSHEET (750x600 mm ; 29.53x23.62 in)</li>
  361. * <li>NEWSPAPER_BERLINER (470x315 mm ; 18.50x12.40 in)</li>
  362. * <li>NEWSPAPER_COMPACT, NEWSPAPER_TABLOID (430x280 mm ; 16.93x11.02 in)</li>
  363. * <li><b>Business Cards</b></li>
  364. * <li>CREDIT_CARD, BUSINESS_CARD, BUSINESS_CARD_ISO7810 (54x86 mm ; 2.13x3.37 in)</li>
  365. * <li>BUSINESS_CARD_ISO216 (52x74 mm ; 2.05x2.91 in)</li>
  366. * <li>BUSINESS_CARD_IT, BUSINESS_CARD_UK, BUSINESS_CARD_FR, BUSINESS_CARD_DE, BUSINESS_CARD_ES (55x85 mm ; 2.17x3.35 in)</li>
  367. * <li>BUSINESS_CARD_US, BUSINESS_CARD_CA (51x89 mm ; 2.01x3.50 in)</li>
  368. * <li>BUSINESS_CARD_JP (55x91 mm ; 2.17x3.58 in)</li>
  369. * <li>BUSINESS_CARD_HK (54x90 mm ; 2.13x3.54 in)</li>
  370. * <li>BUSINESS_CARD_AU, BUSINESS_CARD_DK, BUSINESS_CARD_SE (55x90 mm ; 2.17x3.54 in)</li>
  371. * <li>BUSINESS_CARD_RU, BUSINESS_CARD_CZ, BUSINESS_CARD_FI, BUSINESS_CARD_HU, BUSINESS_CARD_IL (50x90 mm ; 1.97x3.54 in)</li>
  372. * <li><b>Billboards</b></li>
  373. * <li>4SHEET (1016x1524 mm ; 40.00x60.00 in)</li>
  374. * <li>6SHEET (1200x1800 mm ; 47.24x70.87 in)</li>
  375. * <li>12SHEET (3048x1524 mm ; 120.00x60.00 in)</li>
  376. * <li>16SHEET (2032x3048 mm ; 80.00x120.00 in)</li>
  377. * <li>32SHEET (4064x3048 mm ; 160.00x120.00 in)</li>
  378. * <li>48SHEET (6096x3048 mm ; 240.00x120.00 in)</li>
  379. * <li>64SHEET (8128x3048 mm ; 320.00x120.00 in)</li>
  380. * <li>96SHEET (12192x3048 mm ; 480.00x120.00 in)</li>
  381. * <li><b>Old Imperial English (some are still used in USA)</b></li>
  382. * <li>EN_EMPEROR (1219x1829 mm ; 48.00x72.00 in)</li>
  383. * <li>EN_ANTIQUARIAN (787x1346 mm ; 31.00x53.00 in)</li>
  384. * <li>EN_GRAND_EAGLE (730x1067 mm ; 28.75x42.00 in)</li>
  385. * <li>EN_DOUBLE_ELEPHANT (679x1016 mm ; 26.75x40.00 in)</li>
  386. * <li>EN_ATLAS (660x864 mm ; 26.00x34.00 in)</li>
  387. * <li>EN_COLOMBIER (597x876 mm ; 23.50x34.50 in)</li>
  388. * <li>EN_ELEPHANT (584x711 mm ; 23.00x28.00 in)</li>
  389. * <li>EN_DOUBLE_DEMY (572x902 mm ; 22.50x35.50 in)</li>
  390. * <li>EN_IMPERIAL (559x762 mm ; 22.00x30.00 in)</li>
  391. * <li>EN_PRINCESS (546x711 mm ; 21.50x28.00 in)</li>
  392. * <li>EN_CARTRIDGE (533x660 mm ; 21.00x26.00 in)</li>
  393. * <li>EN_DOUBLE_LARGE_POST (533x838 mm ; 21.00x33.00 in)</li>
  394. * <li>EN_ROYAL (508x635 mm ; 20.00x25.00 in)</li>
  395. * <li>EN_SHEET, EN_HALF_POST (495x597 mm ; 19.50x23.50 in)</li>
  396. * <li>EN_SUPER_ROYAL (483x686 mm ; 19.00x27.00 in)</li>
  397. * <li>EN_DOUBLE_POST (483x775 mm ; 19.00x30.50 in)</li>
  398. * <li>EN_MEDIUM (445x584 mm ; 17.50x23.00 in)</li>
  399. * <li>EN_DEMY (445x572 mm ; 17.50x22.50 in)</li>
  400. * <li>EN_LARGE_POST (419x533 mm ; 16.50x21.00 in)</li>
  401. * <li>EN_COPY_DRAUGHT (406x508 mm ; 16.00x20.00 in)</li>
  402. * <li>EN_POST (394x489 mm ; 15.50x19.25 in)</li>
  403. * <li>EN_CROWN (381x508 mm ; 15.00x20.00 in)</li>
  404. * <li>EN_PINCHED_POST (375x470 mm ; 14.75x18.50 in)</li>
  405. * <li>EN_BRIEF (343x406 mm ; 13.50x16.00 in)</li>
  406. * <li>EN_FOOLSCAP (343x432 mm ; 13.50x17.00 in)</li>
  407. * <li>EN_SMALL_FOOLSCAP (337x419 mm ; 13.25x16.50 in)</li>
  408. * <li>EN_POTT (318x381 mm ; 12.50x15.00 in)</li>
  409. * <li><b>Old Imperial Belgian</b></li>
  410. * <li>BE_GRAND_AIGLE (700x1040 mm ; 27.56x40.94 in)</li>
  411. * <li>BE_COLOMBIER (620x850 mm ; 24.41x33.46 in)</li>
  412. * <li>BE_DOUBLE_CARRE (620x920 mm ; 24.41x36.22 in)</li>
  413. * <li>BE_ELEPHANT (616x770 mm ; 24.25x30.31 in)</li>
  414. * <li>BE_PETIT_AIGLE (600x840 mm ; 23.62x33.07 in)</li>
  415. * <li>BE_GRAND_JESUS (550x730 mm ; 21.65x28.74 in)</li>
  416. * <li>BE_JESUS (540x730 mm ; 21.26x28.74 in)</li>
  417. * <li>BE_RAISIN (500x650 mm ; 19.69x25.59 in)</li>
  418. * <li>BE_GRAND_MEDIAN (460x605 mm ; 18.11x23.82 in)</li>
  419. * <li>BE_DOUBLE_POSTE (435x565 mm ; 17.13x22.24 in)</li>
  420. * <li>BE_COQUILLE (430x560 mm ; 16.93x22.05 in)</li>
  421. * <li>BE_PETIT_MEDIAN (415x530 mm ; 16.34x20.87 in)</li>
  422. * <li>BE_RUCHE (360x460 mm ; 14.17x18.11 in)</li>
  423. * <li>BE_PROPATRIA (345x430 mm ; 13.58x16.93 in)</li>
  424. * <li>BE_LYS (317x397 mm ; 12.48x15.63 in)</li>
  425. * <li>BE_POT (307x384 mm ; 12.09x15.12 in)</li>
  426. * <li>BE_ROSETTE (270x347 mm ; 10.63x13.66 in)</li>
  427. * <li><b>Old Imperial French</b></li>
  428. * <li>FR_UNIVERS (1000x1300 mm ; 39.37x51.18 in)</li>
  429. * <li>FR_DOUBLE_COLOMBIER (900x1260 mm ; 35.43x49.61 in)</li>
  430. * <li>FR_GRANDE_MONDE (900x1260 mm ; 35.43x49.61 in)</li>
  431. * <li>FR_DOUBLE_SOLEIL (800x1200 mm ; 31.50x47.24 in)</li>
  432. * <li>FR_DOUBLE_JESUS (760x1120 mm ; 29.92x44.09 in)</li>
  433. * <li>FR_GRAND_AIGLE (750x1060 mm ; 29.53x41.73 in)</li>
  434. * <li>FR_PETIT_AIGLE (700x940 mm ; 27.56x37.01 in)</li>
  435. * <li>FR_DOUBLE_RAISIN (650x1000 mm ; 25.59x39.37 in)</li>
  436. * <li>FR_JOURNAL (650x940 mm ; 25.59x37.01 in)</li>
  437. * <li>FR_COLOMBIER_AFFICHE (630x900 mm ; 24.80x35.43 in)</li>
  438. * <li>FR_DOUBLE_CAVALIER (620x920 mm ; 24.41x36.22 in)</li>
  439. * <li>FR_CLOCHE (600x800 mm ; 23.62x31.50 in)</li>
  440. * <li>FR_SOLEIL (600x800 mm ; 23.62x31.50 in)</li>
  441. * <li>FR_DOUBLE_CARRE (560x900 mm ; 22.05x35.43 in)</li>
  442. * <li>FR_DOUBLE_COQUILLE (560x880 mm ; 22.05x34.65 in)</li>
  443. * <li>FR_JESUS (560x760 mm ; 22.05x29.92 in)</li>
  444. * <li>FR_RAISIN (500x650 mm ; 19.69x25.59 in)</li>
  445. * <li>FR_CAVALIER (460x620 mm ; 18.11x24.41 in)</li>
  446. * <li>FR_DOUBLE_COURONNE (460x720 mm ; 18.11x28.35 in)</li>
  447. * <li>FR_CARRE (450x560 mm ; 17.72x22.05 in)</li>
  448. * <li>FR_COQUILLE (440x560 mm ; 17.32x22.05 in)</li>
  449. * <li>FR_DOUBLE_TELLIERE (440x680 mm ; 17.32x26.77 in)</li>
  450. * <li>FR_DOUBLE_CLOCHE (400x600 mm ; 15.75x23.62 in)</li>
  451. * <li>FR_DOUBLE_POT (400x620 mm ; 15.75x24.41 in)</li>
  452. * <li>FR_ECU (400x520 mm ; 15.75x20.47 in)</li>
  453. * <li>FR_COURONNE (360x460 mm ; 14.17x18.11 in)</li>
  454. * <li>FR_TELLIERE (340x440 mm ; 13.39x17.32 in)</li>
  455. * <li>FR_POT (310x400 mm ; 12.20x15.75 in)</li>
  456. * </ul>
  457. * @return array containing page width and height in points
  458. * @since 5.0.010 (2010-05-17)
  459. * @public static
  460. */
  461. public static function getPageSizeFromFormat($format) {
  462. // Paper cordinates are calculated in this way: (inches * 72) where (1 inch = 25.4 mm)
  463. switch (strtoupper($format)) {
  464. // ISO 216 A Series + 2 SIS 014711 extensions
  465. case 'A0' : {$pf = array( 2383.937, 3370.394); break;}
  466. case 'A1' : {$pf = array( 1683.780, 2383.937); break;}
  467. case 'A2' : {$pf = array( 1190.551, 1683.780); break;}
  468. case 'A3' : {$pf = array( 841.890, 1190.551); break;}
  469. case 'A4' : {$pf = array( 595.276, 841.890); break;}
  470. case 'A5' : {$pf = array( 419.528, 595.276); break;}
  471. case 'A6' : {$pf = array( 297.638, 419.528); break;}
  472. case 'A7' : {$pf = array( 209.764, 297.638); break;}
  473. case 'A8' : {$pf = array( 147.402, 209.764); break;}
  474. case 'A9' : {$pf = array( 104.882, 147.402); break;}
  475. case 'A10': {$pf = array( 73.701, 104.882); break;}
  476. case 'A11': {$pf = array( 51.024, 73.701); break;}
  477. case 'A12': {$pf = array( 36.850, 51.024); break;}
  478. // ISO 216 B Series + 2 SIS 014711 extensions
  479. case 'B0' : {$pf = array( 2834.646, 4008.189); break;}
  480. case 'B1' : {$pf = array( 2004.094, 2834.646); break;}
  481. case 'B2' : {$pf = array( 1417.323, 2004.094); break;}
  482. case 'B3' : {$pf = array( 1000.630, 1417.323); break;}
  483. case 'B4' : {$pf = array( 708.661, 1000.630); break;}
  484. case 'B5' : {$pf = array( 498.898, 708.661); break;}
  485. case 'B6' : {$pf = array( 354.331, 498.898); break;}
  486. case 'B7' : {$pf = array( 249.449, 354.331); break;}
  487. case 'B8' : {$pf = array( 175.748, 249.449); break;}
  488. case 'B9' : {$pf = array( 124.724, 175.748); break;}
  489. case 'B10': {$pf = array( 87.874, 124.724); break;}
  490. case 'B11': {$pf = array( 62.362, 87.874); break;}
  491. case 'B12': {$pf = array( 42.520, 62.362); break;}
  492. // ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION
  493. case 'C0' : {$pf = array( 2599.370, 3676.535); break;}
  494. case 'C1' : {$pf = array( 1836.850, 2599.370); break;}
  495. case 'C2' : {$pf = array( 1298.268, 1836.850); break;}
  496. case 'C3' : {$pf = array( 918.425, 1298.268); break;}
  497. case 'C4' : {$pf = array( 649.134, 918.425); break;}
  498. case 'C5' : {$pf = array( 459.213, 649.134); break;}
  499. case 'C6' : {$pf = array( 323.150, 459.213); break;}
  500. case 'C7' : {$pf = array( 229.606, 323.150); break;}
  501. case 'C8' : {$pf = array( 161.575, 229.606); break;}
  502. case 'C9' : {$pf = array( 113.386, 161.575); break;}
  503. case 'C10': {$pf = array( 79.370, 113.386); break;}
  504. case 'C11': {$pf = array( 56.693, 79.370); break;}
  505. case 'C12': {$pf = array( 39.685, 56.693); break;}
  506. case 'C76': {$pf = array( 229.606, 459.213); break;}
  507. case 'DL' : {$pf = array( 311.811, 623.622); break;}
  508. // SIS 014711 E Series
  509. case 'E0' : {$pf = array( 2491.654, 3517.795); break;}
  510. case 'E1' : {$pf = array( 1757.480, 2491.654); break;}
  511. case 'E2' : {$pf = array( 1247.244, 1757.480); break;}
  512. case 'E3' : {$pf = array( 878.740, 1247.244); break;}
  513. case 'E4' : {$pf = array( 623.622, 878.740); break;}
  514. case 'E5' : {$pf = array( 439.370, 623.622); break;}
  515. case 'E6' : {$pf = array( 311.811, 439.370); break;}
  516. case 'E7' : {$pf = array( 221.102, 311.811); break;}
  517. case 'E8' : {$pf = array( 155.906, 221.102); break;}
  518. case 'E9' : {$pf = array( 110.551, 155.906); break;}
  519. case 'E10': {$pf = array( 76.535, 110.551); break;}
  520. case 'E11': {$pf = array( 53.858, 76.535); break;}
  521. case 'E12': {$pf = array( 36.850, 53.858); break;}
  522. // SIS 014711 G Series
  523. case 'G0' : {$pf = array( 2715.591, 3838.110); break;}
  524. case 'G1' : {$pf = array( 1919.055, 2715.591); break;}
  525. case 'G2' : {$pf = array( 1357.795, 1919.055); break;}
  526. case 'G3' : {$pf = array( 958.110, 1357.795); break;}
  527. case 'G4' : {$pf = array( 677.480, 958.110); break;}
  528. case 'G5' : {$pf = array( 479.055, 677.480); break;}
  529. case 'G6' : {$pf = array( 337.323, 479.055); break;}
  530. case 'G7' : {$pf = array( 238.110, 337.323); break;}
  531. case 'G8' : {$pf = array( 167.244, 238.110); break;}
  532. case 'G9' : {$pf = array( 119.055, 167.244); break;}
  533. case 'G10': {$pf = array( 82.205, 119.055); break;}
  534. case 'G11': {$pf = array( 59.528, 82.205); break;}
  535. case 'G12': {$pf = array( 39.685, 59.528); break;}
  536. // ISO Press
  537. case 'RA0': {$pf = array( 2437.795, 3458.268); break;}
  538. case 'RA1': {$pf = array( 1729.134, 2437.795); break;}
  539. case 'RA2': {$pf = array( 1218.898, 1729.134); break;}
  540. case 'RA3': {$pf = array( 864.567, 1218.898); break;}
  541. case 'RA4': {$pf = array( 609.449, 864.567); break;}
  542. case 'SRA0': {$pf = array( 2551.181, 3628.346); break;}
  543. case 'SRA1': {$pf = array( 1814.173, 2551.181); break;}
  544. case 'SRA2': {$pf = array( 1275.591, 1814.173); break;}
  545. case 'SRA3': {$pf = array( 907.087, 1275.591); break;}
  546. case 'SRA4': {$pf = array( 637.795, 907.087); break;}
  547. // German DIN 476
  548. case '4A0': {$pf = array( 4767.874, 6740.787); break;}
  549. case '2A0': {$pf = array( 3370.394, 4767.874); break;}
  550. // Variations on the ISO Standard
  551. case 'A2_EXTRA' : {$pf = array( 1261.417, 1754.646); break;}
  552. case 'A3+' : {$pf = array( 932.598, 1369.134); break;}
  553. case 'A3_EXTRA' : {$pf = array( 912.756, 1261.417); break;}
  554. case 'A3_SUPER' : {$pf = array( 864.567, 1440.000); break;}
  555. case 'SUPER_A3' : {$pf = array( 864.567, 1380.472); break;}
  556. case 'A4_EXTRA' : {$pf = array( 666.142, 912.756); break;}
  557. case 'A4_SUPER' : {$pf = array( 649.134, 912.756); break;}
  558. case 'SUPER_A4' : {$pf = array( 643.465, 1009.134); break;}
  559. case 'A4_LONG' : {$pf = array( 595.276, 986.457); break;}
  560. case 'F4' : {$pf = array( 595.276, 935.433); break;}
  561. case 'SO_B5_EXTRA': {$pf = array( 572.598, 782.362); break;}
  562. case 'A5_EXTRA' : {$pf = array( 490.394, 666.142); break;}
  563. // ANSI Series
  564. case 'ANSI_E': {$pf = array( 2448.000, 3168.000); break;}
  565. case 'ANSI_D': {$pf = array( 1584.000, 2448.000); break;}
  566. case 'ANSI_C': {$pf = array( 1224.000, 1584.000); break;}
  567. case 'ANSI_B': {$pf = array( 792.000, 1224.000); break;}
  568. case 'ANSI_A': {$pf = array( 612.000, 792.000); break;}
  569. // Traditional 'Loose' North American Paper Sizes
  570. case 'USLEDGER':
  571. case 'LEDGER' : {$pf = array( 1224.000, 792.000); break;}
  572. case 'ORGANIZERK':
  573. case 'BIBLE':
  574. case 'USTABLOID':
  575. case 'TABLOID': {$pf = array( 792.000, 1224.000); break;}
  576. case 'ORGANIZERM':
  577. case 'USLETTER':
  578. case 'LETTER' : {$pf = array( 612.000, 792.000); break;}
  579. case 'USLEGAL':
  580. case 'LEGAL' : {$pf = array( 612.000, 1008.000); break;}
  581. case 'GOVERNMENTLETTER':
  582. case 'GLETTER': {$pf = array( 576.000, 756.000); break;}
  583. case 'JUNIORLEGAL':
  584. case 'JLEGAL' : {$pf = array( 576.000, 360.000); break;}
  585. // Other North American Paper Sizes
  586. case 'QUADDEMY': {$pf = array( 2520.000, 3240.000); break;}
  587. case 'SUPER_B': {$pf = array( 936.000, 1368.000); break;}
  588. case 'QUARTO': {$pf = array( 648.000, 792.000); break;}
  589. case 'GOVERNMENTLEGAL':
  590. case 'FOLIO': {$pf = array( 612.000, 936.000); break;}
  591. case 'MONARCH':
  592. case 'EXECUTIVE': {$pf = array( 522.000, 756.000); break;}
  593. case 'ORGANIZERL':
  594. case 'STATEMENT':
  595. case 'MEMO': {$pf = array( 396.000, 612.000); break;}
  596. case 'FOOLSCAP': {$pf = array( 595.440, 936.000); break;}
  597. case 'COMPACT': {$pf = array( 306.000, 486.000); break;}
  598. case 'ORGANIZERJ': {$pf = array( 198.000, 360.000); break;}
  599. // Canadian standard CAN 2-9.60M
  600. case 'P1': {$pf = array( 1587.402, 2437.795); break;}
  601. case 'P2': {$pf = array( 1218.898, 1587.402); break;}
  602. case 'P3': {$pf = array( 793.701, 1218.898); break;}
  603. case 'P4': {$pf = array( 609.449, 793.701); break;}
  604. case 'P5': {$pf = array( 396.850, 609.449); break;}
  605. case 'P6': {$pf = array( 303.307, 396.850); break;}
  606. // North American Architectural Sizes
  607. case 'ARCH_E' : {$pf = array( 2592.000, 3456.000); break;}
  608. case 'ARCH_E1': {$pf = array( 2160.000, 3024.000); break;}
  609. case 'ARCH_D' : {$pf = array( 1728.000, 2592.000); break;}
  610. case 'BROADSHEET':
  611. case 'ARCH_C' : {$pf = array( 1296.000, 1728.000); break;}
  612. case 'ARCH_B' : {$pf = array( 864.000, 1296.000); break;}
  613. case 'ARCH_A' : {$pf = array( 648.000, 864.000); break;}
  614. // --- North American Envelope Sizes ---
  615. // - Announcement Envelopes
  616. case 'ANNENV_A2' : {$pf = array( 314.640, 414.000); break;}
  617. case 'ANNENV_A6' : {$pf = array( 342.000, 468.000); break;}
  618. case 'ANNENV_A7' : {$pf = array( 378.000, 522.000); break;}
  619. case 'ANNENV_A8' : {$pf = array( 396.000, 584.640); break;}
  620. case 'ANNENV_A10' : {$pf = array( 450.000, 692.640); break;}
  621. case 'ANNENV_SLIM': {$pf = array( 278.640, 638.640); break;}
  622. // - Commercial Envelopes
  623. case 'COMMENV_N6_1/4': {$pf = array( 252.000, 432.000); break;}
  624. case 'COMMENV_N6_3/4': {$pf = array( 260.640, 468.000); break;}
  625. case 'COMMENV_N8' : {$pf = array( 278.640, 540.000); break;}
  626. case 'COMMENV_N9' : {$pf = array( 278.640, 638.640); break;}
  627. case 'COMMENV_N10' : {$pf = array( 296.640, 684.000); break;}
  628. case 'COMMENV_N11' : {$pf = array( 324.000, 746.640); break;}
  629. case 'COMMENV_N12' : {$pf = array( 342.000, 792.000); break;}
  630. case 'COMMENV_N14' : {$pf = array( 360.000, 828.000); break;}
  631. // - Catalogue Envelopes
  632. case 'CATENV_N1' : {$pf = array( 432.000, 648.000); break;}
  633. case 'CATENV_N1_3/4' : {$pf = array( 468.000, 684.000); break;}
  634. case 'CATENV_N2' : {$pf = array( 468.000, 720.000); break;}
  635. case 'CATENV_N3' : {$pf = array( 504.000, 720.000); break;}
  636. case 'CATENV_N6' : {$pf = array( 540.000, 756.000); break;}
  637. case 'CATENV_N7' : {$pf = array( 576.000, 792.000); break;}
  638. case 'CATENV_N8' : {$pf = array( 594.000, 810.000); break;}
  639. case 'CATENV_N9_1/2' : {$pf = array( 612.000, 756.000); break;}
  640. case 'CATENV_N9_3/4' : {$pf = array( 630.000, 810.000); break;}
  641. case 'CATENV_N10_1/2': {$pf = array( 648.000, 864.000); break;}
  642. case 'CATENV_N12_1/2': {$pf = array( 684.000, 900.000); break;}
  643. case 'CATENV_N13_1/2': {$pf = array( 720.000, 936.000); break;}
  644. case 'CATENV_N14_1/4': {$pf = array( 810.000, 882.000); break;}
  645. case 'CATENV_N14_1/2': {$pf = array( 828.000, 1044.000); break;}
  646. // Japanese (JIS P 0138-61) Standard B-Series
  647. case 'JIS_B0' : {$pf = array( 2919.685, 4127.244); break;}
  648. case 'JIS_B1' : {$pf = array( 2063.622, 2919.685); break;}
  649. case 'JIS_B2' : {$pf = array( 1459.843, 2063.622); break;}
  650. case 'JIS_B3' : {$pf = array( 1031.811, 1459.843); break;}
  651. case 'JIS_B4' : {$pf = array( 728.504, 1031.811); break;}
  652. case 'JIS_B5' : {$pf = array( 515.906, 728.504); break;}
  653. case 'JIS_B6' : {$pf = array( 362.835, 515.906); break;}
  654. case 'JIS_B7' : {$pf = array( 257.953, 362.835); break;}
  655. case 'JIS_B8' : {$pf = array( 181.417, 257.953); break;}
  656. case 'JIS_B9' : {$pf = array( 127.559, 181.417); break;}
  657. case 'JIS_B10': {$pf = array( 90.709, 127.559); break;}
  658. case 'JIS_B11': {$pf = array( 62.362, 90.709); break;}
  659. case 'JIS_B12': {$pf = array( 45.354, 62.362); break;}
  660. // PA Series
  661. case 'PA0' : {$pf = array( 2381.102, 3174.803,); break;}
  662. case 'PA1' : {$pf = array( 1587.402, 2381.102); break;}
  663. case 'PA2' : {$pf = array( 1190.551, 1587.402); break;}
  664. case 'PA3' : {$pf = array( 793.701, 1190.551); break;}
  665. case 'PA4' : {$pf = array( 595.276, 793.701); break;}
  666. case 'PA5' : {$pf = array( 396.850, 595.276); break;}
  667. case 'PA6' : {$pf = array( 297.638, 396.850); break;}
  668. case 'PA7' : {$pf = array( 198.425, 297.638); break;}
  669. case 'PA8' : {$pf = array( 147.402, 198.425); break;}
  670. case 'PA9' : {$pf = array( 99.213, 147.402); break;}
  671. case 'PA10': {$pf = array( 73.701, 99.213); break;}
  672. // Standard Photographic Print Sizes
  673. case 'PASSPORT_PHOTO': {$pf = array( 99.213, 127.559); break;}
  674. case 'E' : {$pf = array( 233.858, 340.157); break;}
  675. case 'L':
  676. case '3R' : {$pf = array( 252.283, 360.000); break;}
  677. case 'KG':
  678. case '4R' : {$pf = array( 289.134, 430.866); break;}
  679. case '4D' : {$pf = array( 340.157, 430.866); break;}
  680. case '2L':
  681. case '5R' : {$pf = array( 360.000, 504.567); break;}
  682. case '8P':
  683. case '6R' : {$pf = array( 430.866, 575.433); break;}
  684. case '6P':
  685. case '8R' : {$pf = array( 575.433, 720.000); break;}
  686. case '6PW':
  687. case 'S8R' : {$pf = array( 575.433, 864.567); break;}
  688. case '4P':
  689. case '10R' : {$pf = array( 720.000, 864.567); break;}
  690. case '4PW':
  691. case 'S10R': {$pf = array( 720.000, 1080.000); break;}
  692. case '11R' : {$pf = array( 790.866, 1009.134); break;}
  693. case 'S11R': {$pf = array( 790.866, 1224.567); break;}
  694. case '12R' : {$pf = array( 864.567, 1080.000); break;}
  695. case 'S12R': {$pf = array( 864.567, 1292.598); break;}
  696. // Common Newspaper Sizes
  697. case 'NEWSPAPER_BROADSHEET': {$pf = array( 2125.984, 1700.787); break;}
  698. case 'NEWSPAPER_BERLINER' : {$pf = array( 1332.283, 892.913); break;}
  699. case 'NEWSPAPER_TABLOID':
  700. case 'NEWSPAPER_COMPACT' : {$pf = array( 1218.898, 793.701); break;}
  701. // Business Cards
  702. case 'CREDIT_CARD':
  703. case 'BUSINESS_CARD':
  704. case 'BUSINESS_CARD_ISO7810': {$pf = array( 153.014, 242.646); break;}
  705. case 'BUSINESS_CARD_ISO216' : {$pf = array( 147.402, 209.764); break;}
  706. case 'BUSINESS_CARD_IT':
  707. case 'BUSINESS_CARD_UK':
  708. case 'BUSINESS_CARD_FR':
  709. case 'BUSINESS_CARD_DE':
  710. case 'BUSINESS_CARD_ES' : {$pf = array( 155.906, 240.945); break;}
  711. case 'BUSINESS_CARD_CA':
  712. case 'BUSINESS_CARD_US' : {$pf = array( 144.567, 252.283); break;}
  713. case 'BUSINESS_CARD_JP' : {$pf = array( 155.906, 257.953); break;}
  714. case 'BUSINESS_CARD_HK' : {$pf = array( 153.071, 255.118); break;}
  715. case 'BUSINESS_CARD_AU':
  716. case 'BUSINESS_CARD_DK':
  717. case 'BUSINESS_CARD_SE' : {$pf = array( 155.906, 255.118); break;}
  718. case 'BUSINESS_CARD_RU':
  719. case 'BUSINESS_CARD_CZ':
  720. case 'BUSINESS_CARD_FI':
  721. case 'BUSINESS_CARD_HU':
  722. case 'BUSINESS_CARD_IL' : {$pf = array( 141.732, 255.118); break;}
  723. // Billboards
  724. case '4SHEET' : {$pf = array( 2880.000, 4320.000); break;}
  725. case '6SHEET' : {$pf = array( 3401.575, 5102.362); break;}
  726. case '12SHEET': {$pf = array( 8640.000, 4320.000); break;}
  727. case '16SHEET': {$pf = array( 5760.000, 8640.000); break;}
  728. case '32SHEET': {$pf = array(11520.000, 8640.000); break;}
  729. case '48SHEET': {$pf = array(17280.000, 8640.000); break;}
  730. case '64SHEET': {$pf = array(23040.000, 8640.000); break;}
  731. case '96SHEET': {$pf = array(34560.000, 8640.000); break;}
  732. // Old European Sizes
  733. // - Old Imperial English Sizes
  734. case 'EN_EMPEROR' : {$pf = array( 3456.000, 5184.000); break;}
  735. case 'EN_ANTIQUARIAN' : {$pf = array( 2232.000, 3816.000); break;}
  736. case 'EN_GRAND_EAGLE' : {$pf = array( 2070.000, 3024.000); break;}
  737. case 'EN_DOUBLE_ELEPHANT' : {$pf = array( 1926.000, 2880.000); break;}
  738. case 'EN_ATLAS' : {$pf = array( 1872.000, 2448.000); break;}
  739. case 'EN_COLOMBIER' : {$pf = array( 1692.000, 2484.000); break;}
  740. case 'EN_ELEPHANT' : {$pf = array( 1656.000, 2016.000); break;}
  741. case 'EN_DOUBLE_DEMY' : {$pf = array( 1620.000, 2556.000); break;}
  742. case 'EN_IMPERIAL' : {$pf = array( 1584.000, 2160.000); break;}
  743. case 'EN_PRINCESS' : {$pf = array( 1548.000, 2016.000); break;}
  744. case 'EN_CARTRIDGE' : {$pf = array( 1512.000, 1872.000); break;}
  745. case 'EN_DOUBLE_LARGE_POST': {$pf = array( 1512.000, 2376.000); break;}
  746. case 'EN_ROYAL' : {$pf = array( 1440.000, 1800.000); break;}
  747. case 'EN_SHEET':
  748. case 'EN_HALF_POST' : {$pf = array( 1404.000, 1692.000); break;}
  749. case 'EN_SUPER_ROYAL' : {$pf = array( 1368.000, 1944.000); break;}
  750. case 'EN_DOUBLE_POST' : {$pf = array( 1368.000, 2196.000); break;}
  751. case 'EN_MEDIUM' : {$pf = array( 1260.000, 1656.000); break;}
  752. case 'EN_DEMY' : {$pf = array( 1260.000, 1620.000); break;}
  753. case 'EN_LARGE_POST' : {$pf = array( 1188.000, 1512.000); break;}
  754. case 'EN_COPY_DRAUGHT' : {$pf = array( 1152.000, 1440.000); break;}
  755. case 'EN_POST' : {$pf = array( 1116.000, 1386.000); break;}
  756. case 'EN_CROWN' : {$pf = array( 1080.000, 1440.000); break;}
  757. case 'EN_PINCHED_POST' : {$pf = array( 1062.000, 1332.000); break;}
  758. case 'EN_BRIEF' : {$pf = array( 972.000, 1152.000); break;}
  759. case 'EN_FOOLSCAP' : {$pf = array( 972.000, 1224.000); break;}
  760. case 'EN_SMALL_FOOLSCAP' : {$pf = array( 954.000, 1188.000); break;}
  761. case 'EN_POTT' : {$pf = array( 900.000, 1080.000); break;}
  762. // - Old Imperial Belgian Sizes
  763. case 'BE_GRAND_AIGLE' : {$pf = array( 1984.252, 2948.031); break;}
  764. case 'BE_COLOMBIER' : {$pf = array( 1757.480, 2409.449); break;}
  765. case 'BE_DOUBLE_CARRE': {$pf = array( 1757.480, 2607.874); break;}
  766. case 'BE_ELEPHANT' : {$pf = array( 1746.142, 2182.677); break;}
  767. case 'BE_PETIT_AIGLE' : {$pf = array( 1700.787, 2381.102); break;}
  768. case 'BE_GRAND_JESUS' : {$pf = array( 1559.055, 2069.291); break;}
  769. case 'BE_JESUS' : {$pf = array( 1530.709, 2069.291); break;}
  770. case 'BE_RAISIN' : {$pf = array( 1417.323, 1842.520); break;}
  771. case 'BE_GRAND_MEDIAN': {$pf = array( 1303.937, 1714.961); break;}
  772. case 'BE_DOUBLE_POSTE': {$pf = array( 1233.071, 1601.575); break;}
  773. case 'BE_COQUILLE' : {$pf = array( 1218.898, 1587.402); break;}
  774. case 'BE_PETIT_MEDIAN': {$pf = array( 1176.378, 1502.362); break;}
  775. case 'BE_RUCHE' : {$pf = array( 1020.472, 1303.937); break;}
  776. case 'BE_PROPATRIA' : {$pf = array( 977.953, 1218.898); break;}
  777. case 'BE_LYS' : {$pf = array( 898.583, 1125.354); break;}
  778. case 'BE_POT' : {$pf = array( 870.236, 1088.504); break;}
  779. case 'BE_ROSETTE' : {$pf = array( 765.354, 983.622); break;}
  780. // - Old Imperial French Sizes
  781. case 'FR_UNIVERS' : {$pf = array( 2834.646, 3685.039); break;}
  782. case 'FR_DOUBLE_COLOMBIER' : {$pf = array( 2551.181, 3571.654); break;}
  783. case 'FR_GRANDE_MONDE' : {$pf = array( 2551.181, 3571.654); break;}
  784. case 'FR_DOUBLE_SOLEIL' : {$pf = array( 2267.717, 3401.575); break;}
  785. case 'FR_DOUBLE_JESUS' : {$pf = array( 2154.331, 3174.803); break;}
  786. case 'FR_GRAND_AIGLE' : {$pf = array( 2125.984, 3004.724); break;}
  787. case 'FR_PETIT_AIGLE' : {$pf = array( 1984.252, 2664.567); break;}
  788. case 'FR_DOUBLE_RAISIN' : {$pf = array( 1842.520, 2834.646); break;}
  789. case 'FR_JOURNAL' : {$pf = array( 1842.520, 2664.567); break;}
  790. case 'FR_COLOMBIER_AFFICHE': {$pf = array( 1785.827, 2551.181); break;}
  791. case 'FR_DOUBLE_CAVALIER' : {$pf = array( 1757.480, 2607.874); break;}
  792. case 'FR_CLOCHE' : {$pf = array( 1700.787, 2267.717); break;}
  793. case 'FR_SOLEIL' : {$pf = array( 1700.787, 2267.717); break;}
  794. case 'FR_DOUBLE_CARRE' : {$pf = array( 1587.402, 2551.181); break;}
  795. case 'FR_DOUBLE_COQUILLE' : {$pf = array( 1587.402, 2494.488); break;}
  796. case 'FR_JESUS' : {$pf = array( 1587.402, 2154.331); break;}
  797. case 'FR_RAISIN' : {$pf = array( 1417.323, 1842.520); break;}
  798. case 'FR_CAVALIER' : {$pf = array( 1303.937, 1757.480); break;}
  799. case 'FR_DOUBLE_COURONNE' : {$pf = array( 1303.937, 2040.945); break;}
  800. case 'FR_CARRE' : {$pf = array( 1275.591, 1587.402); break;}
  801. case 'FR_COQUILLE' : {$pf = array( 1247.244, 1587.402); break;}
  802. case 'FR_DOUBLE_TELLIERE' : {$pf = array( 1247.244, 1927.559); break;}
  803. case 'FR_DOUBLE_CLOCHE' : {$pf = array( 1133.858, 1700.787); break;}
  804. case 'FR_DOUBLE_POT' : {$pf = array( 1133.858, 1757.480); break;}
  805. case 'FR_ECU' : {$pf = array( 1133.858, 1474.016); break;}
  806. case 'FR_COURONNE' : {$pf = array( 1020.472, 1303.937); break;}
  807. case 'FR_TELLIERE' : {$pf = array( 963.780, 1247.244); break;}
  808. case 'FR_POT' : {$pf = array( 878.740, 1133.858); break;}
  809. // DEFAULT ISO A4
  810. default: {$pf = array( 595.276, 841.890); break;}
  811. }
  812. return $pf;
  813. }
  814. /**
  815. * Set page boundaries.
  816. * @param $page (int) page number
  817. * @param $type (string) valid values are: <ul><li>'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;</li><li>'CropBox' : the visible region of default user space;</li><li>'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;</li><li>'TrimBox' : the intended dimensions of the finished page after trimming;</li><li>'ArtBox' : the page's meaningful content (including potential white space).</li></ul>
  818. * @param $llx (float) lower-left x coordinate in user units.
  819. * @param $lly (float) lower-left y coordinate in user units.
  820. * @param $urx (float) upper-right x coordinate in user units.
  821. * @param $ury (float) upper-right y coordinate in user units.
  822. * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points.
  823. * @param $k (float) Scale factor (number of points in user unit).
  824. * @param $pagedim (array) Array of page dimensions.
  825. * @return pagedim array of page dimensions.
  826. * @since 5.0.010 (2010-05-17)
  827. * @public static
  828. */
  829. public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) {
  830. if (!isset($pagedim[$page])) {
  831. // initialize array
  832. $pagedim[$page] = array();
  833. }
  834. if (!in_array($type, self::$pageboxes)) {
  835. return;
  836. }
  837. if ($points) {
  838. $k = 1;
  839. }
  840. $pagedim[$page][$type]['llx'] = ($llx * $k);
  841. $pagedim[$page][$type]['lly'] = ($lly * $k);
  842. $pagedim[$page][$type]['urx'] = ($urx * $k);
  843. $pagedim[$page][$type]['ury'] = ($ury * $k);
  844. return $pagedim;
  845. }
  846. /**
  847. * Swap X and Y coordinates of page boxes (change page boxes orientation).
  848. * @param $page (int) page number
  849. * @param $pagedim (array) Array of page dimensions.
  850. * @return pagedim array of page dimensions.
  851. * @since 5.0.010 (2010-05-17)
  852. * @public static
  853. */
  854. public static function swapPageBoxCoordinates($page, $pagedim) {
  855. foreach (self::$pageboxes as $type) {
  856. // swap X and Y coordinates
  857. if (isset($pagedim[$page][$type])) {
  858. $tmp = $pagedim[$page][$type]['llx'];
  859. $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly'];
  860. $pagedim[$page][$type]['lly'] = $tmp;
  861. $tmp = $pagedim[$page][$type]['urx'];
  862. $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury'];
  863. $pagedim[$page][$type]['ury'] = $tmp;
  864. }
  865. }
  866. return $pagedim;
  867. }
  868. /**
  869. * Get the canonical page layout mode.
  870. * @param $layout (string) The page layout. Possible values are:<ul><li>SinglePage Display one page at a time</li><li>OneColumn Display the pages in one column</li><li>TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left</li><li>TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right</li><li>TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left</li><li>TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right</li></ul>
  871. * @return (string) Canonical page layout name.
  872. * @public static
  873. */
  874. public static function getPageLayoutMode($layout='SinglePage') {
  875. switch ($layout) {
  876. case 'default':
  877. case 'single':
  878. case 'SinglePage': {
  879. $layout_mode = 'SinglePage';
  880. break;
  881. }
  882. case 'continuous':
  883. case 'OneColumn': {
  884. $layout_mode = 'OneColumn';
  885. break;
  886. }
  887. case 'two':
  888. case 'TwoColumnLeft': {
  889. $layout_mode = 'TwoColumnLeft';
  890. break;
  891. }
  892. case 'TwoColumnRight': {
  893. $layout_mode = 'TwoColumnRight';
  894. break;
  895. }
  896. case 'TwoPageLeft': {
  897. $layout_mode = 'TwoPageLeft';
  898. break;
  899. }
  900. case 'TwoPageRight': {
  901. $layout_mode = 'TwoPageRight';
  902. break;
  903. }
  904. default: {
  905. $layout_mode = 'SinglePage';
  906. }
  907. }
  908. return $layout_mode;
  909. }
  910. /**
  911. * Get the canonical page layout mode.
  912. * @param $mode (string) A name object specifying how the document should be displayed when opened:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible</li><li>UseOC (PDF 1.5) Optional content group panel visible</li><li>UseAttachments (PDF 1.6) Attachments panel visible</li></ul>
  913. * @return (string) Canonical page mode name.
  914. * @public static
  915. */
  916. public static function getPageMode($mode='UseNone') {
  917. switch ($mode) {
  918. case 'UseNone': {
  919. $page_mode = 'UseNone';
  920. break;
  921. }
  922. case 'UseOutlines': {
  923. $page_mode = 'UseOutlines';
  924. break;
  925. }
  926. case 'UseThumbs': {
  927. $page_mode = 'UseThumbs';
  928. break;
  929. }
  930. case 'FullScreen': {
  931. $page_mode = 'FullScreen';
  932. break;
  933. }
  934. case 'UseOC': {
  935. $page_mode = 'UseOC';
  936. break;
  937. }
  938. case '': {
  939. $page_mode = 'UseAttachments';
  940. break;
  941. }
  942. default: {
  943. $page_mode = 'UseNone';
  944. }
  945. }
  946. return $page_mode;
  947. }
  948. /**
  949. * Check if the URL exist.
  950. * @param $url (string) URL to check.
  951. * @return Boolean true if the URl exist, false otherwise.
  952. * @since 5.9.204 (2013-01-28)
  953. * @public static
  954. */
  955. public static function isValidURL($url) {
  956. $headers = @get_headers($url);
  957. return (strpos($headers[0], '200') !== false);
  958. }
  959. /**
  960. * Removes SHY characters from text.
  961. * Unicode Data:<ul>
  962. * <li>Name : SOFT HYPHEN, commonly abbreviated as SHY</li>
  963. * <li>HTML Entity (decimal): "&amp;#173;"</li>
  964. * <li>HTML Entity (hex): "&amp;#xad;"</li>
  965. * <li>HTML Entity (named): "&amp;shy;"</li>
  966. * <li>How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173]</li>
  967. * <li>UTF-8 (hex): 0xC2 0xAD (c2ad)</li>
  968. * <li>UTF-8 character: chr(194).chr(173)</li>
  969. * </ul>
  970. * @param $txt (string) input string
  971. * @param $unicode (boolean) True if we are in unicode mode, false otherwise.
  972. * @return string without SHY characters.
  973. * @since (4.5.019) 2009-02-28
  974. * @public static
  975. */
  976. public static function removeSHY($txt='', $unicode=true) {
  977. $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt);
  978. if (!$unicode) {
  979. $txt = preg_replace('/([\\xad]{1})/', '', $txt);
  980. }
  981. return $txt;
  982. }
  983. /**
  984. * Get the border mode accounting for multicell position (opens bottom side of multicell crossing pages)
  985. * @param $brd (mixed) Indicates if borders must be drawn around the cell block. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul>or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
  986. * @param $position (string) multicell position: 'start', 'middle', 'end'
  987. * @param $opencell (boolean) True when the cell is left open at the page bottom, false otherwise.
  988. * @return border mode array
  989. * @since 4.4.002 (2008-12-09)
  990. * @public static
  991. */
  992. public static function getBorderMode($brd, $position='start', $opencell=true) {
  993. if ((!$opencell) OR empty($brd)) {
  994. return $brd;
  995. }
  996. if ($brd == 1) {
  997. $brd = 'LTRB';
  998. }
  999. if (is_string($brd)) {
  1000. // convert string to array
  1001. $slen = strlen($brd);
  1002. $newbrd = array();
  1003. for ($i = 0; $i < $slen; ++$i) {
  1004. $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter');
  1005. }
  1006. $brd = $newbrd;
  1007. }
  1008. foreach ($brd as $border => $style) {
  1009. switch ($position) {
  1010. case 'start': {
  1011. if (strpos($border, 'B') !== false) {
  1012. // remove bottom line
  1013. $newkey = str_replace('B', '', $border);
  1014. if (strlen($newkey) > 0) {
  1015. $brd[$newkey] = $style;
  1016. }
  1017. unset($brd[$border]);
  1018. }
  1019. break;
  1020. }
  1021. case 'middle': {
  1022. if (strpos($border, 'B') !== false) {
  1023. // remove bottom line
  1024. $newkey = str_replace('B', '', $border);
  1025. if (strlen($newkey) > 0) {
  1026. $brd[$newkey] = $style;
  1027. }
  1028. unset($brd[$border]);
  1029. $border = $newkey;
  1030. }
  1031. if (strpos($border, 'T') !== false) {
  1032. // remove bottom line
  1033. $newkey = str_replace('T', '', $border);
  1034. if (strlen($newkey) > 0) {
  1035. $brd[$newkey] = $style;
  1036. }
  1037. unset($brd[$border]);
  1038. }
  1039. break;
  1040. }
  1041. case 'end': {
  1042. if (strpos($border, 'T') !== false) {
  1043. // remove bottom line
  1044. $newkey = str_replace('T', '', $border);
  1045. if (strlen($newkey) > 0) {
  1046. $brd[$newkey] = $style;
  1047. }
  1048. unset($brd[$border]);
  1049. }
  1050. break;
  1051. }
  1052. }
  1053. }
  1054. return $brd;
  1055. }
  1056. /**
  1057. * Determine whether a string is empty.
  1058. * @param $str (string) string to be checked
  1059. * @return boolean true if string is empty
  1060. * @since 4.5.044 (2009-04-16)
  1061. * @public static
  1062. */
  1063. public static f

Large files files are truncated, but you can click here to view the full file