PrinterHelper.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php
  2. //获取字符串中中文字符和英文字符的个数
  3. function GetStringNum($string, &$ChineseCharNum, &$EnglishCharNum)
  4. {
  5. $encode = 'UTF-8';
  6. $str_num = mb_strlen($string, $encode);
  7. $j = 0;
  8. for($i=0; $i < $str_num; $i++)
  9. {
  10. if(ord(mb_substr($string, $i, 1, $encode)) > 0xa0)
  11. {
  12. $j++;
  13. }
  14. }
  15. $ChineseCharNum = $j;
  16. $EnglishCharNum = $str_num - $j;
  17. }
  18. function GetShowLength($string)
  19. {
  20. $stringChineseCharNum = 0;
  21. $stringEnglishCharNum = 0;
  22. GetStringNum($string, $stringChineseCharNum, $stringEnglishCharNum);
  23. $stringShowLength = $stringChineseCharNum*2 + $stringEnglishCharNum;
  24. return $stringShowLength;
  25. }
  26. function GetBigStringLewaimai($string)
  27. {
  28. $showString = "<1D2111>" . $string . "<1D2100>";
  29. return $showString;
  30. }
  31. function GetBigStringFeyin($string)
  32. {
  33. $showString = "<Font# Bold=0 Width=2 Height=2>" . $string . "</Font#>";
  34. return $showString;
  35. }
  36. function GetHalfWidthBigStringLewaimai($string)
  37. {
  38. $showString = "<1D2101>" . $string . "<1D2100>";
  39. return $showString;
  40. }
  41. function GetHalfWidthBigStringFeyin($string)
  42. {
  43. $showString = "<Font# Bold=0 Width=1 Height=2>" . $string . "</Font#>";
  44. return $showString;
  45. }
  46. function CenterTitleLeWaiMai($string)
  47. {
  48. $stringChineseCharNum = 0;
  49. $stringEnglishCharNum = 0;
  50. GetStringNum($string, $stringChineseCharNum, $stringEnglishCharNum);
  51. $stringShowLength = $stringChineseCharNum*4 + $stringEnglishCharNum*2;
  52. if ($stringShowLength > 32)
  53. {
  54. //如果超过一行,那么就不双倍宽度了
  55. return GetHalfWidthBigStringLewaimai(CenterString($string));
  56. }
  57. //计算左边需要的空格数量
  58. $spaceNum = (32 - $stringShowLength)/2;
  59. $spaceString = "";
  60. for ($i = 0; $i < $spaceNum; $i++)
  61. {
  62. $spaceString = $spaceString . " ";
  63. }
  64. $showString = $spaceString . "<1D2111>" . $string . "<1D2100>";
  65. return $showString;
  66. }
  67. //将标题居中显示
  68. function CenterTitleFeyin($string)
  69. {
  70. $stringChineseCharNum = 0;
  71. $stringEnglishCharNum = 0;
  72. GetStringNum($string, $stringChineseCharNum, $stringEnglishCharNum);
  73. $stringShowLength = $stringChineseCharNum*4 + $stringEnglishCharNum*2;
  74. if ($stringShowLength > 32)
  75. {
  76. //如果超过一行,那么就不双倍宽度了
  77. return GetHalfWidthBigStringFeyin(CenterString($string));
  78. }
  79. //计算左边需要的空格数量
  80. $spaceNum = (32 - $stringShowLength)/2;
  81. $spaceString = "";
  82. for ($i = 0; $i < $spaceNum; $i++)
  83. {
  84. $spaceString = $spaceString . " ";
  85. }
  86. $showString = $spaceString . "<Font# Bold=1 Width=2 Height=2>" . $string . "</Font#>";
  87. return $showString;
  88. }
  89. //将字符串居中显示(用空格补齐,一行按打印机的32位显示宽度,即最大16个汉字或32个字母算)
  90. function CenterString($string)
  91. {
  92. $stringChineseCharNum = 0;
  93. $stringEnglishCharNum = 0;
  94. GetStringNum($string, $stringChineseCharNum, $stringEnglishCharNum);
  95. $stringShowLength = $stringChineseCharNum*2 + $stringEnglishCharNum;
  96. if ($stringShowLength > 32)
  97. {
  98. //如果超过一行,那么就不用居中了
  99. return $string;
  100. }
  101. //计算左边需要的空格数量
  102. $spaceNum = (32 - $stringShowLength)/2;
  103. $spaceString = "";
  104. for ($i = 0; $i < $spaceNum; $i++)
  105. {
  106. $spaceString = $spaceString . " ";
  107. }
  108. $showString = $spaceString . $string;
  109. return $showString;
  110. }
  111. //将字符串右对齐显示
  112. function RightString($string)
  113. {
  114. $stringChineseCharNum = 0;
  115. $stringEnglishCharNum = 0;
  116. GetStringNum($string, $stringChineseCharNum, $stringEnglishCharNum);
  117. $stringShowLength = $stringChineseCharNum*2 + $stringEnglishCharNum;
  118. if ($stringShowLength > 32)
  119. {
  120. //如果超过一行,那么就不用右对齐
  121. return $string;
  122. }
  123. //计算左边需要的空格数量
  124. $spaceNum = 32 - $stringShowLength;
  125. $spaceString = "";
  126. for ($i = 0; $i < $spaceNum; $i++)
  127. {
  128. $spaceString = $spaceString . " ";
  129. }
  130. $showString = $spaceString . $string;
  131. return $showString;
  132. }
  133. function RightBigString($string)
  134. {
  135. $stringChineseCharNum = 0;
  136. $stringEnglishCharNum = 0;
  137. GetStringNum($string, $stringChineseCharNum, $stringEnglishCharNum);
  138. $stringShowLength = $stringChineseCharNum*4 + $stringEnglishCharNum*2;
  139. if ($stringShowLength > 32)
  140. {
  141. //如果超过一行,那么就不用右对齐
  142. return $string;
  143. }
  144. //计算左边需要的空格数量
  145. $spaceNum = 32 - $stringShowLength;
  146. $spaceString = "";
  147. for ($i = 0; $i < $spaceNum; $i++)
  148. {
  149. $spaceString = $spaceString . " ";
  150. }
  151. $showString = $spaceString . $string;
  152. return $showString;
  153. }
  154. function HandleFoodName($string)
  155. {
  156. $resultFoodName = $string;
  157. //如果少于16个显示长度,就不换行
  158. $showLength = GetShowLength($string);
  159. $lineShowLength = $showLength%32;
  160. if ($lineShowLength < 15)
  161. {
  162. $spaceNum = 15 - $lineShowLength;
  163. }
  164. else
  165. {
  166. $spaceNum = 32 - $lineShowLength + 15;
  167. }
  168. for ($i = 0; $i < $spaceNum; $i++)
  169. {
  170. $resultFoodName = $resultFoodName . " ";
  171. }
  172. return $resultFoodName;
  173. }
  174. function HandleNum($string)
  175. {
  176. $resultFoodName = $string;
  177. //如果少于16个显示长度,就不换行
  178. $showLength = GetShowLength($string);
  179. if ($showLength <= 5)
  180. {
  181. $spaceBeforeNum = floor((5 - $showLength)/2);
  182. $spaceAfterNum = 5 - $spaceBeforeNum - $showLength;
  183. for ($i = 0; $i < $spaceBeforeNum; $i++)
  184. {
  185. $resultFoodName = " " . $resultFoodName;
  186. }
  187. for ($i = 0; $i < $spaceAfterNum; $i++)
  188. {
  189. $resultFoodName = $resultFoodName . " ";
  190. }
  191. }
  192. else
  193. {
  194. //如果显示长度大于5,直接在后面加一个空格
  195. $resultFoodName = $resultFoodName . " ";
  196. }
  197. return $resultFoodName;
  198. }
  199. ?>