1 # -*- coding: utf-8 -*-
3 """ ESC/POS Commands (Constants) """
5 # Feed control sequences
6 CTL_LF = '\x0a' # Print and line feed
7 CTL_FF = '\x0c' # Form feed
8 CTL_CR = '\x0d' # Carriage return
9 CTL_HT = '\x09' # Horizontal tab
10 CTL_VT = '\x0b' # Vertical tab
12 HW_INIT = '\x1b\x40' # Clear data in buffer and reset modes
13 HW_SELECT = '\x1b\x3d\x01' # Printer select
14 HW_RESET = '\x1b\x3f\x0a\x00' # Reset printer hardware
16 CD_KICK_2 = '\x1b\x70\x00' # Sends a pulse to pin 2 []
17 CD_KICK_5 = '\x1b\x70\x01' # Sends a pulse to pin 5 []
19 PAPER_FULL_CUT = '\x1d\x56\x00' # Full cut paper
20 PAPER_PART_CUT = '\x1d\x56\x01' # Partial cut paper
22 TXT_NORMAL = '\x1b\x21\x00' # Normal text
23 TXT_2HEIGHT = '\x1b\x21\x10' # Double height text
24 TXT_2WIDTH = '\x1b\x21\x20' # Double width text
25 TXT_DOUBLE = '\x1b\x21\x30' # Double height & Width
26 TXT_UNDERL_OFF = '\x1b\x2d\x00' # Underline font OFF
27 TXT_UNDERL_ON = '\x1b\x2d\x01' # Underline font 1-dot ON
28 TXT_UNDERL2_ON = '\x1b\x2d\x02' # Underline font 2-dot ON
29 TXT_BOLD_OFF = '\x1b\x45\x00' # Bold font OFF
30 TXT_BOLD_ON = '\x1b\x45\x01' # Bold font ON
31 TXT_FONT_A = '\x1b\x4d\x00' # Font type A
32 TXT_FONT_B = '\x1b\x4d\x01' # Font type B
33 TXT_ALIGN_LT = '\x1b\x61\x00' # Left justification
34 TXT_ALIGN_CT = '\x1b\x61\x01' # Centering
35 TXT_ALIGN_RT = '\x1b\x61\x02' # Right justification
39 TXT_ENC_PC437 = '\x1b\x74\x00' # PC437 USA
40 TXT_ENC_KATAKANA= '\x1b\x74\x01' # KATAKANA (JAPAN)
41 TXT_ENC_PC850 = '\x1b\x74\x02' # PC850 Multilingual
42 TXT_ENC_PC860 = '\x1b\x74\x03' # PC860 Portuguese
43 TXT_ENC_PC863 = '\x1b\x74\x04' # PC863 Canadian-French
44 TXT_ENC_PC865 = '\x1b\x74\x05' # PC865 Nordic
45 TXT_ENC_KANJI6 = '\x1b\x74\x06' # One-pass Kanji, Hiragana
46 TXT_ENC_KANJI7 = '\x1b\x74\x07' # One-pass Kanji
47 TXT_ENC_KANJI8 = '\x1b\x74\x08' # One-pass Kanji
48 TXT_ENC_PC851 = '\x1b\x74\x0b' # PC851 Greek
49 TXT_ENC_PC853 = '\x1b\x74\x0c' # PC853 Turkish
50 TXT_ENC_PC857 = '\x1b\x74\x0d' # PC857 Turkish
51 TXT_ENC_PC737 = '\x1b\x74\x0e' # PC737 Greek
52 TXT_ENC_8859_7 = '\x1b\x74\x0f' # ISO8859-7 Greek
53 TXT_ENC_WPC1252 = '\x1b\x74\x10' # WPC1252
54 TXT_ENC_PC866 = '\x1b\x74\x11' # PC866 Cyrillic #2
55 TXT_ENC_PC852 = '\x1b\x74\x12' # PC852 Latin2
56 TXT_ENC_PC858 = '\x1b\x74\x13' # PC858 Euro
57 TXT_ENC_KU42 = '\x1b\x74\x14' # KU42 Thai
58 TXT_ENC_TIS11 = '\x1b\x74\x15' # TIS11 Thai
59 TXT_ENC_TIS18 = '\x1b\x74\x1a' # TIS18 Thai
60 TXT_ENC_TCVN3 = '\x1b\x74\x1e' # TCVN3 Vietnamese
61 TXT_ENC_TCVN3B = '\x1b\x74\x1f' # TCVN3 Vietnamese
62 TXT_ENC_PC720 = '\x1b\x74\x20' # PC720 Arabic
63 TXT_ENC_WPC775 = '\x1b\x74\x21' # WPC775 Baltic Rim
64 TXT_ENC_PC855 = '\x1b\x74\x22' # PC855 Cyrillic
65 TXT_ENC_PC861 = '\x1b\x74\x23' # PC861 Icelandic
66 TXT_ENC_PC862 = '\x1b\x74\x24' # PC862 Hebrew
67 TXT_ENC_PC864 = '\x1b\x74\x25' # PC864 Arabic
68 TXT_ENC_PC869 = '\x1b\x74\x26' # PC869 Greek
69 TXT_ENC_8859_2 = '\x1b\x74\x27' # ISO8859-2 Latin2
70 TXT_ENC_8859_9 = '\x1b\x74\x28' # ISO8859-2 Latin9
71 TXT_ENC_PC1098 = '\x1b\x74\x29' # PC1098 Farsi
72 TXT_ENC_PC1118 = '\x1b\x74\x2a' # PC1118 Lithuanian
73 TXT_ENC_PC1119 = '\x1b\x74\x2b' # PC1119 Lithuanian
74 TXT_ENC_PC1125 = '\x1b\x74\x2c' # PC1125 Ukrainian
75 TXT_ENC_WPC1250 = '\x1b\x74\x2d' # WPC1250 Latin2
76 TXT_ENC_WPC1251 = '\x1b\x74\x2e' # WPC1251 Cyrillic
77 TXT_ENC_WPC1253 = '\x1b\x74\x2f' # WPC1253 Greek
78 TXT_ENC_WPC1254 = '\x1b\x74\x30' # WPC1254 Turkish
79 TXT_ENC_WPC1255 = '\x1b\x74\x31' # WPC1255 Hebrew
80 TXT_ENC_WPC1256 = '\x1b\x74\x32' # WPC1256 Arabic
81 TXT_ENC_WPC1257 = '\x1b\x74\x33' # WPC1257 Baltic Rim
82 TXT_ENC_WPC1258 = '\x1b\x74\x34' # WPC1258 Vietnamese
83 TXT_ENC_KZ1048 = '\x1b\x74\x35' # KZ-1048 Kazakhstan
85 TXT_ENC_KATAKANA_MAP = {
86 # Maps UTF-8 Katakana symbols to KATAKANA Page Codes
88 # Half-Width Katakanas
89 '\xef\xbd\xa1':'\xa1', # 。
90 '\xef\xbd\xa2':'\xa2', # 「
91 '\xef\xbd\xa3':'\xa3', # 」
92 '\xef\xbd\xa4':'\xa4', # 、
93 '\xef\xbd\xa5':'\xa5', # ・
95 '\xef\xbd\xa6':'\xa6', # ヲ
96 '\xef\xbd\xa7':'\xa7', # ァ
97 '\xef\xbd\xa8':'\xa8', # ィ
98 '\xef\xbd\xa9':'\xa9', # ゥ
99 '\xef\xbd\xaa':'\xaa', # ェ
100 '\xef\xbd\xab':'\xab', # ォ
101 '\xef\xbd\xac':'\xac', # ャ
102 '\xef\xbd\xad':'\xad', # ュ
103 '\xef\xbd\xae':'\xae', # ョ
104 '\xef\xbd\xaf':'\xaf', # ッ
105 '\xef\xbd\xb0':'\xb0', # ー
106 '\xef\xbd\xb1':'\xb1', # ア
107 '\xef\xbd\xb2':'\xb2', # イ
108 '\xef\xbd\xb3':'\xb3', # ウ
109 '\xef\xbd\xb4':'\xb4', # エ
110 '\xef\xbd\xb5':'\xb5', # オ
111 '\xef\xbd\xb6':'\xb6', # カ
112 '\xef\xbd\xb7':'\xb7', # キ
113 '\xef\xbd\xb8':'\xb8', # ク
114 '\xef\xbd\xb9':'\xb9', # ケ
115 '\xef\xbd\xba':'\xba', # コ
116 '\xef\xbd\xbb':'\xbb', # サ
117 '\xef\xbd\xbc':'\xbc', # シ
118 '\xef\xbd\xbd':'\xbd', # ス
119 '\xef\xbd\xbe':'\xbe', # セ
120 '\xef\xbd\xbf':'\xbf', # ソ
121 '\xef\xbe\x80':'\xc0', # タ
122 '\xef\xbe\x81':'\xc1', # チ
123 '\xef\xbe\x82':'\xc2', # ツ
124 '\xef\xbe\x83':'\xc3', # テ
125 '\xef\xbe\x84':'\xc4', # ト
126 '\xef\xbe\x85':'\xc5', # ナ
127 '\xef\xbe\x86':'\xc6', # ニ
128 '\xef\xbe\x87':'\xc7', # ヌ
129 '\xef\xbe\x88':'\xc8', # ネ
130 '\xef\xbe\x89':'\xc9', # ノ
131 '\xef\xbe\x8a':'\xca', # ハ
132 '\xef\xbe\x8b':'\xcb', # ヒ
133 '\xef\xbe\x8c':'\xcc', # フ
134 '\xef\xbe\x8d':'\xcd', # ヘ
135 '\xef\xbe\x8e':'\xce', # ホ
136 '\xef\xbe\x8f':'\xcf', # マ
137 '\xef\xbe\x90':'\xd0', # ミ
138 '\xef\xbe\x91':'\xd1', # ム
139 '\xef\xbe\x92':'\xd2', # メ
140 '\xef\xbe\x93':'\xd3', # モ
141 '\xef\xbe\x94':'\xd4', # ヤ
142 '\xef\xbe\x95':'\xd5', # ユ
143 '\xef\xbe\x96':'\xd6', # ヨ
144 '\xef\xbe\x97':'\xd7', # ラ
145 '\xef\xbe\x98':'\xd8', # リ
146 '\xef\xbe\x99':'\xd9', # ル
147 '\xef\xbe\x9a':'\xda', # レ
148 '\xef\xbe\x9b':'\xdb', # ロ
149 '\xef\xbe\x9c':'\xdc', # ワ
150 '\xef\xbe\x9d':'\xdd', # ン
152 '\xef\xbe\x9e':'\xde', # ゙
153 '\xef\xbe\x9f':'\xdf', # ゚
157 BARCODE_TXT_OFF = '\x1d\x48\x00' # HRI barcode chars OFF
158 BARCODE_TXT_ABV = '\x1d\x48\x01' # HRI barcode chars above
159 BARCODE_TXT_BLW = '\x1d\x48\x02' # HRI barcode chars below
160 BARCODE_TXT_BTH = '\x1d\x48\x03' # HRI barcode chars both above and below
161 BARCODE_FONT_A = '\x1d\x66\x00' # Font type A for HRI barcode chars
162 BARCODE_FONT_B = '\x1d\x66\x01' # Font type B for HRI barcode chars
163 BARCODE_HEIGHT = '\x1d\x68\x64' # Barcode Height [1-255]
164 BARCODE_WIDTH = '\x1d\x77\x03' # Barcode Width [2-6]
165 BARCODE_UPC_A = '\x1d\x6b\x00' # Barcode type UPC-A
166 BARCODE_UPC_E = '\x1d\x6b\x01' # Barcode type UPC-E
167 BARCODE_EAN13 = '\x1d\x6b\x02' # Barcode type EAN13
168 BARCODE_EAN8 = '\x1d\x6b\x03' # Barcode type EAN8
169 BARCODE_CODE39 = '\x1d\x6b\x04' # Barcode type CODE39
170 BARCODE_ITF = '\x1d\x6b\x05' # Barcode type ITF
171 BARCODE_NW7 = '\x1d\x6b\x06' # Barcode type NW7
173 S_RASTER_N = '\x1d\x76\x30\x00' # Set raster image normal size
174 S_RASTER_2W = '\x1d\x76\x30\x01' # Set raster image double width
175 S_RASTER_2H = '\x1d\x76\x30\x02' # Set raster image double height
176 S_RASTER_Q = '\x1d\x76\x30\x03' # Set raster image quadruple