설명 없음

Paper.php 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. /**
  3. * This file is part of PHPWord - A pure PHP library for reading and writing
  4. * word processing documents.
  5. *
  6. * PHPWord is free software distributed under the terms of the GNU Lesser
  7. * General Public License version 3 as published by the Free Software Foundation.
  8. *
  9. * For the full copyright and license information, please read the LICENSE
  10. * file that was distributed with this source code. For the full list of
  11. * contributors, visit https://github.com/PHPOffice/PHPWord/contributors.
  12. *
  13. * @link https://github.com/PHPOffice/PHPWord
  14. * @copyright 2010-2014 PHPWord contributors
  15. * @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
  16. */
  17. namespace PhpOffice\PhpWord\Style;
  18. /**
  19. * Paper size from ISO/IEC 29500-1:2012 pg. 1656-1657
  20. *
  21. * 1 = Letter paper (8.5 in. by 11 in.)
  22. * 2 = Letter small paper (8.5 in. by 11 in.)
  23. * 3 = Tabloid paper (11 in. by 17 in.)
  24. * 4 = Ledger paper (17 in. by 11 in.)
  25. * 5 = Legal paper (8.5 in. by 14 in.)
  26. * 6 = Statement paper (5.5 in. by 8.5 in.)
  27. * 7 = Executive paper (7.25 in. by 10.5 in.)
  28. * 8 = A3 paper (297 mm by 420 mm)
  29. * 9 = A4 paper (210 mm by 297 mm)
  30. * 10 = A4 small paper (210 mm by 297 mm)
  31. * 11 = A5 paper (148 mm by 210 mm)
  32. * 12 = B4 paper (250 mm by 353 mm)
  33. * 13 = B5 paper (176 mm by 250 mm)
  34. * 14 = Folio paper (8.5 in. by 13 in.)
  35. * 15 = Quarto paper (215 mm by 275 mm)
  36. * 16 = Standard paper (10 in. by 14 in.)
  37. * 17 = Standard paper (11 in. by 17 in.)
  38. * 18 = Note paper (8.5 in. by 11 in.)
  39. * 19 = #9 envelope (3.875 in. by 8.875 in.)
  40. * 20 = #10 envelope (4.125 in. by 9.5 in.)
  41. * 21 = #11 envelope (4.5 in. by 10.375 in.)
  42. * 22 = #12 envelope (4.75 in. by 11 in.)
  43. * 23 = #14 envelope (5 in. by 11.5 in.)
  44. * 24 = C paper (17 in. by 22 in.)
  45. * 25 = D paper (22 in. by 34 in.)
  46. * 26 = E paper (34 in. by 44 in.)
  47. * 27 = DL envelope (110 mm by 220 mm)
  48. * 28 = C5 envelope (162 mm by 229 mm)
  49. * 29 = C3 envelope (324 mm by 458 mm)
  50. * 30 = C4 envelope (229 mm by 324 mm)
  51. * 31 = C6 envelope (114 mm by 162 mm)
  52. * 32 = C65 envelope (114 mm by 229 mm)
  53. * 33 = B4 envelope (250 mm by 353 mm)
  54. * 34 = B5 envelope (176 mm by 250 mm)
  55. * 35 = B6 envelope (176 mm by 125 mm)
  56. * 36 = Italy envelope (110 mm by 230 mm)
  57. * 37 = Monarch envelope (3.875 in. by 7.5 in.).
  58. * 38 = 6 3/4 envelope (3.625 in. by 6.5 in.)
  59. * 39 = US standard fanfold (14.875 in. by 11 in.)
  60. * 40 = German standard fanfold (8.5 in. by 12 in.)
  61. * 41 = German legal fanfold (8.5 in. by 13 in.)
  62. * 42 = ISO B4 (250 mm by 353 mm)
  63. * 43 = Japanese double postcard (200 mm by 148 mm)
  64. * 44 = Standard paper (9 in. by 11 in.)
  65. * 45 = Standard paper (10 in. by 11 in.)
  66. * 46 = Standard paper (15 in. by 11 in.)
  67. * 47 = Invite envelope (220 mm by 220 mm)
  68. * 50 = Letter extra paper (9.275 in. by 12 in.)
  69. * 51 = Legal extra paper (9.275 in. by 15 in.)
  70. * 52 = Tabloid extra paper (11.69 in. by 18 in.)
  71. * 53 = A4 extra paper (236 mm by 322 mm)
  72. * 54 = Letter transverse paper (8.275 in. by 11 in.)
  73. * 55 = A4 transverse paper (210 mm by 297 mm)
  74. * 56 = Letter extra transverse paper (9.275 in. by 12 in.)
  75. * 57 = SuperA/SuperA/A4 paper (227 mm by 356 mm)
  76. * 58 = SuperB/SuperB/A3 paper (305 mm by 487 mm)
  77. * 59 = Letter plus paper (8.5 in. by 12.69 in.)
  78. * 60 = A4 plus paper (210 mm by 330 mm)
  79. * 61 = A5 transverse paper (148 mm by 210 mm)
  80. * 62 = JIS B5 transverse paper (182 mm by 257 mm)
  81. * 63 = A3 extra paper (322 mm by 445 mm)
  82. * 64 = A5 extra paper (174 mm by 235 mm)
  83. * 65 = ISO B5 extra paper (201 mm by 276 mm)
  84. * 66 = A2 paper (420 mm by 594 mm)
  85. * 67 = A3 transverse paper (297 mm by 420 mm)
  86. * 68 = A3 extra transverse paper (322 mm by 445 mm)
  87. *
  88. * @since 0.12.0
  89. */
  90. class Paper extends AbstractStyle
  91. {
  92. /**
  93. * Paper sizes
  94. *
  95. * @var array
  96. */
  97. private $sizes = array(
  98. 'A3' => array(297, 420, 'mm'),
  99. 'A4' => array(210, 297, 'mm'),
  100. 'A5' => array(148, 210, 'mm'),
  101. 'Folio' => array(8.5, 13, 'in'),
  102. 'Legal' => array(8.5, 14, 'in'),
  103. 'Letter' => array(8.5, 11, 'in'),
  104. );
  105. /**
  106. * Paper size
  107. *
  108. * @var string
  109. */
  110. private $size = 'A4';
  111. /**
  112. * Width
  113. *
  114. * @var int (twip)
  115. */
  116. private $width;
  117. /**
  118. * Height
  119. *
  120. * @var int (twip)
  121. */
  122. private $height;
  123. /**
  124. * Create a new instance
  125. *
  126. * @param string $size
  127. */
  128. public function __construct($size = 'A4')
  129. {
  130. $this->setSize($size);
  131. }
  132. /**
  133. * Get size
  134. *
  135. * @return string
  136. */
  137. public function getSize()
  138. {
  139. return $this->size;
  140. }
  141. /**
  142. * Set size
  143. *
  144. * @param string $size
  145. * @return self
  146. */
  147. public function setSize($size)
  148. {
  149. $this->size = $this->setEnumVal($size, array_keys($this->sizes), $this->size);
  150. list($width, $height, $unit) = $this->sizes[$this->size];
  151. $multipliers = array('mm' => 56.5217, 'in' => 1440);
  152. $multiplier = $multipliers[$unit];
  153. $this->width = (int)round($width * $multiplier);
  154. $this->height = (int)round($height * $multiplier);
  155. return $this;
  156. }
  157. /**
  158. * Get width
  159. *
  160. * @return int
  161. */
  162. public function getWidth()
  163. {
  164. return $this->width;
  165. }
  166. /**
  167. * Get height
  168. *
  169. * @return int
  170. */
  171. public function getHeight()
  172. {
  173. return $this->height;
  174. }
  175. }