1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
<code>//=====================================================================================</code>
<code>// all rights reserved , copyright ? learun 2013</code>
<code>using</code>
<code>system;</code>
<code>system.collections;</code>
<code>system.collections.generic;</code>
<code>system.linq;</code>
<code>system.text;</code>
<code>system.text.regularexpressions;</code>
<code>system.threading.tasks;</code>
<code>namespace</code>
<code>dotnet.utilities</code>
<code>{</code>
<code> </code><code>/// <summary></code>
<code> </code><code>/// 生成條碼傳回html</code>
<code> </code><code>/// </summary></code>
<code> </code><code>public</code>
<code>class</code> <code>barcodetohtml</code>
<code> </code><code>{</code>
<code> </code><code>public</code>
<code>static</code> <code>string</code> <code>get39(</code><code>string</code>
<code>s,</code><code>int</code>
<code>width,</code><code>int</code>
<code>height)</code>
<code> </code><code>{</code>
<code> </code><code>hashtable ht =</code><code>new</code>
<code>hashtable();</code>
<code> </code><code>#region 39碼 12位</code>
<code> </code><code>ht.add(</code><code>‘a‘</code><code>,</code><code>"110101001011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘b‘</code><code>,</code><code>"101101001011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘c‘</code><code>,</code><code>"110110100101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘d‘</code><code>,</code><code>"101011001011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘e‘</code><code>,</code><code>"110101100101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘f‘</code><code>,</code><code>"101101100101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘g‘</code><code>,</code><code>"101010011011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘h‘</code><code>,</code><code>"110101001101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘i‘</code><code>,</code><code>"101101001101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘j‘</code><code>,</code><code>"101011001101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘k‘</code><code>,</code><code>"110101010011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘l‘</code><code>,</code><code>"101101010011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘m‘</code><code>,</code><code>"110110101001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘n‘</code><code>,</code><code>"101011010011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘o‘</code><code>,</code><code>"110101101001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘p‘</code><code>,</code><code>"101101101001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘q‘</code><code>,</code><code>"101010110011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘r‘</code><code>,</code><code>"110101011001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘s‘</code><code>,</code><code>"101101011001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘t‘</code><code>,</code><code>"101011011001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘u‘</code><code>,</code><code>"110010101011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘v‘</code><code>,</code><code>"100110101011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘w‘</code><code>,</code><code>"110011010101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘x‘</code><code>,</code><code>"100101101011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘y‘</code><code>,</code><code>"110010110101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘z‘</code><code>,</code><code>"100110110101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘0‘</code><code>,</code><code>"101001101101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘1‘</code><code>,</code><code>"110100101011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘2‘</code><code>,</code><code>"101100101011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘3‘</code><code>,</code><code>"110110010101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘4‘</code><code>,</code><code>"101001101011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘5‘</code><code>,</code><code>"110100110101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘6‘</code><code>,</code><code>"101100110101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘7‘</code><code>,</code><code>"101001011011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘8‘</code><code>,</code><code>"110100101101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘9‘</code><code>,</code><code>"101100101101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘+‘</code><code>,</code><code>"100101001001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘-‘</code><code>,</code><code>"100101011011"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘*‘</code><code>,</code><code>"100101101101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘/‘</code><code>,</code><code>"100100101001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘%‘</code><code>,</code><code>"101001001001"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘$‘</code><code>,</code><code>"100100100101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘.‘</code><code>,</code><code>"110010101101"</code><code>);</code>
<code> </code><code>ht.add(</code><code>‘ ‘</code><code>,</code><code>"100110101101"</code><code>);</code>
<code> </code><code>#endregion</code>
<code> </code><code>#region 39碼 9位</code>
<code> </code><code>//ht.add(‘0‘, "000110100");</code>
<code> </code><code>//ht.add(‘1‘, "100100001");</code>
<code> </code><code>//ht.add(‘2‘, "001100001");</code>
<code> </code><code>//ht.add(‘3‘, "101100000");</code>
<code> </code><code>//ht.add(‘4‘, "000110001");</code>
<code> </code><code>//ht.add(‘5‘, "100110000");</code>
<code> </code><code>//ht.add(‘6‘, "001110000");</code>
<code> </code><code>//ht.add(‘7‘, "000100101");</code>
<code> </code><code>//ht.add(‘8‘, "100100100");</code>
<code> </code><code>//ht.add(‘9‘, "001100100");</code>
<code> </code><code>//ht.add(‘a‘, "100001001");</code>
<code> </code><code>//ht.add(‘b‘, "001001001");</code>
<code> </code><code>//ht.add(‘c‘, "101001000");</code>
<code> </code><code>//ht.add(‘d‘, "000011001");</code>
<code> </code><code>//ht.add(‘e‘, "100011000");</code>
<code> </code><code>//ht.add(‘f‘, "001011000");</code>
<code> </code><code>//ht.add(‘g‘, "000001101");</code>
<code> </code><code>//ht.add(‘h‘, "100001100");</code>
<code> </code><code>//ht.add(‘i‘, "001001100");</code>
<code> </code><code>//ht.add(‘j‘, "000011100");</code>
<code> </code><code>//ht.add(‘k‘, "100000011");</code>
<code> </code><code>//ht.add(‘l‘, "001000011");</code>
<code> </code><code>//ht.add(‘m‘, "101000010");</code>
<code> </code><code>//ht.add(‘n‘, "000010011");</code>
<code> </code><code>//ht.add(‘o‘, "100010010");</code>
<code> </code><code>//ht.add(‘p‘, "001010010");</code>
<code> </code><code>//ht.add(‘q‘, "000000111");</code>
<code> </code><code>//ht.add(‘r‘, "100000110");</code>
<code> </code><code>//ht.add(‘s‘, "001000110");</code>
<code> </code><code>//ht.add(‘t‘, "000010110");</code>
<code> </code><code>//ht.add(‘u‘, "110000001");</code>
<code> </code><code>//ht.add(‘v‘, "011000001");</code>
<code> </code><code>//ht.add(‘w‘, "111000000");</code>
<code> </code><code>//ht.add(‘x‘, "010010001");</code>
<code> </code><code>//ht.add(‘y‘, "110010000");</code>
<code> </code><code>//ht.add(‘z‘, "011010000");</code>
<code> </code><code>//ht.add(‘-‘, "010000101");</code>
<code> </code><code>//ht.add(‘.‘, "110000100");</code>
<code> </code><code>//ht.add(‘ ‘, "011000100");</code>
<code> </code><code>//ht.add(‘*‘, "010010100");</code>
<code> </code><code>//ht.add(‘$‘, "010101000");</code>
<code> </code><code>//ht.add(‘/‘, "010100010");</code>
<code> </code><code>//ht.add(‘+‘, "010001010");</code>
<code> </code><code>//ht.add(‘%‘, "000101010");</code>
<code> </code><code>s =</code><code>"*"</code>
<code>+ s.toupper() +</code><code>"*"</code><code>;</code>
<code> </code><code>string</code>
<code>result_bin =</code><code>""</code><code>;</code><code>//二進制串</code>
<code> </code><code>try</code>
<code> </code><code>{</code>
<code> </code><code>foreach</code>
<code>(</code><code>char</code>
<code>ch</code><code>in</code>
<code>s)</code>
<code> </code><code>{</code>
<code> </code><code>result_bin += ht[ch].tostring();</code>
<code> </code><code>result_bin +=</code><code>"0"</code><code>;</code><code>//間隔,與一個機關的線條寬度相等</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>catch</code>
<code>{</code><code>return</code>
<code>"存在不允許的字元!"</code><code>; }</code>
<code>result_html =</code><code>""</code><code>;</code><code>//html代碼</code>
<code>color =</code><code>""</code><code>; </code><code>//顔色</code>
<code> </code><code>foreach</code>
<code>c</code><code>in</code>
<code>result_bin)</code>
<code> </code><code>color = c ==</code><code>‘0‘</code>
<code>?</code><code>"#ffffff"</code>
<code>:</code><code>"#000000"</code><code>;</code>
<code> </code><code>result_html +=</code><code>"<div style=\"width:"</code>
<code>+ width +</code><code>"px;height:"</code>
<code>+ height +</code><code>"px;float:left;background:"</code>
<code>+ color +</code><code>";\"></div>"</code><code>;</code>
<code> </code><code>result_html +=</code><code>"<div style=\"clear:both\"></div>"</code><code>;</code>
<code> </code><code>int</code>
<code>len = ht[</code><code>‘*‘</code><code>].tostring().length;</code>
<code>+ (width * (len + 1)) +</code><code>"px;float:left;color:#000000;text-align:center;\">"</code>
<code>+ c +</code><code>"</div>"</code><code>;</code>
<code> </code><code>return</code>
<code>"<div style=\"background:#ffffff;padding:5px;font-size:"</code>
<code>+ (width * 10) +</code><code>"px;font-family:‘楷體‘;\">"</code>
<code>+ result_html +</code><code>"</div>"</code><code>;</code>
<code> </code><code>}</code>
<code>static</code> <code>string</code> <code>getean13(</code><code>string</code>
<code>checkcode_input = -1;</code><code>//輸入的校驗碼</code>
<code> </code><code>if</code>
<code>(!regex.ismatch(s,</code><code>@"^\d{12}$"</code><code>))</code>
<code> </code><code>if</code>
<code>(!regex.ismatch(s,</code><code>@"^\d{13}$"</code><code>))</code>
<code> </code><code>return</code>
<code>"存在不允許的字元!"</code><code>;</code>
<code> </code><code>else</code>
<code> </code><code>checkcode_input =</code><code>int</code><code>.parse(s[12].tostring());</code>
<code> </code><code>s = s.substring(0, 12);</code>
<code>sum_even = 0;</code><code>//偶數位之和</code>
<code>sum_odd = 0;</code><code>//奇數位之和</code>
<code> </code><code>for</code>
<code>(</code><code>int</code>
<code>i = 0; i < 12; i++)</code>
<code>(i % 2 == 0)</code>
<code> </code><code>sum_odd +=</code><code>int</code><code>.parse(s[i].tostring());</code>
<code> </code><code>sum_even +=</code><code>int</code><code>.parse(s[i].tostring());</code>
<code>checkcode = (10 - (sum_even * 3 + sum_odd) % 10) % 10;</code><code>//校驗碼</code>
<code>(checkcode_input > 0 && checkcode_input != checkcode)</code>
<code> </code><code>return</code>
<code>"輸入的校驗碼錯誤!"</code><code>;</code>
<code> </code><code>s += checkcode;</code><code>//變成13位</code>
<code> </code><code>// 000000000101左側42個01010右側35個校驗7個101000000000</code>
<code> </code><code>// 6 101左側6位 01010右側5位校驗1位101000000000</code>
<code> </code><code>result_bin +=</code><code>"000000000101"</code><code>;</code>
<code>type = ean13type(s[0]);</code>
<code>i = 1; i < 7; i++)</code>
<code> </code><code>result_bin += ean13(s[i], type[i - 1]);</code>
<code> </code><code>result_bin +=</code><code>"01010"</code><code>;</code>
<code>i = 7; i < 13; i++)</code>
<code> </code><code>result_bin += ean13(s[i],</code><code>‘c‘</code><code>);</code>
<code> </code><code>result_bin +=</code><code>"101000000000"</code><code>;</code>
<code>height_bottom = width * 5;</code>
<code> </code><code>result_html +=</code><code>"<div style=\"float:left;color:#000000;width:"</code>
<code>+ (width * 9) +</code><code>"px;text-align:center;\">"</code>
<code>+ s[0] +</code><code>"</div>"</code><code>;</code>
<code> </code><code>result_html +=</code><code>"<div style=\"float:left;width:"</code>
<code>+ height_bottom +</code><code>"px;background:#000000;\"></div>"</code><code>;</code>
<code>+ height_bottom +</code><code>"px;background:#ffffff;\"></div>"</code><code>;</code>
<code> </code><code>result_html +=</code><code>"<div style=\"float:left;width:"</code>
<code>+ (width * 7) +</code><code>"px;color:#000000;text-align:center;\">"</code>
<code>+ s[i] +</code><code>"</div>"</code><code>;</code>
<code>+ (width * 9) +</code><code>"px;\"></div>"</code><code>;</code>
<code>"<div style=\"background:#ffffff;padding:0px;font-size:"</code>
<code> </code><code>private</code>
<code>static</code> <code>string</code> <code>ean13(</code><code>char</code>
<code>c,</code><code>char</code>
<code>type)</code>
<code> </code><code>switch</code>
<code>(type)</code>
<code> </code><code>case</code>
<code>‘a‘</code><code>:</code>
<code> </code><code>{</code>
<code> </code><code>switch</code>
<code>(c)</code>
<code> </code><code>{</code>
<code> </code><code>case</code>
<code>‘0‘</code><code>:</code><code>return</code>
<code>"0001101"</code><code>;</code>
<code>‘1‘</code><code>:</code><code>return</code>
<code>"0011001"</code><code>;</code>
<code>‘2‘</code><code>:</code><code>return</code>
<code>"0010011"</code><code>;</code>
<code>‘3‘</code><code>:</code><code>return</code>
<code>"0111101"</code><code>;</code><code>//011101</code>
<code>‘4‘</code><code>:</code><code>return</code>
<code>"0100011"</code><code>;</code>
<code>‘5‘</code><code>:</code><code>return</code>
<code>"0110001"</code><code>;</code>
<code>‘6‘</code><code>:</code><code>return</code>
<code>"0101111"</code><code>;</code>
<code>‘7‘</code><code>:</code><code>return</code>
<code>"0111011"</code><code>;</code>
<code>‘8‘</code><code>:</code><code>return</code>
<code>"0110111"</code><code>;</code>
<code>‘9‘</code><code>:</code><code>return</code>
<code>"0001011"</code><code>;</code>
<code> </code><code>default</code><code>:</code><code>return</code>
<code>"error!"</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code>‘b‘</code><code>:</code>
<code>"0100111"</code><code>;</code>
<code>"0110011"</code><code>;</code>
<code>"0011011"</code><code>;</code>
<code>"0100001"</code><code>;</code>
<code>"0011101"</code><code>;</code>
<code>"0111001"</code><code>;</code>
<code>"0000101"</code><code>;</code><code>//000101</code>
<code>"0010001"</code><code>;</code>
<code>"0001001"</code><code>;</code>
<code>"0010111"</code><code>;</code>
<code>‘c‘</code><code>:</code>
<code>"1110010"</code><code>;</code>
<code>"1100110"</code><code>;</code>
<code>"1101100"</code><code>;</code>
<code>"1000010"</code><code>;</code>
<code>"1011100"</code><code>;</code>
<code>"1001110"</code><code>;</code>
<code>"1010000"</code><code>;</code>
<code>"1000100"</code><code>;</code>
<code>"1001000"</code><code>;</code>
<code>"1110100"</code><code>;</code>
<code> </code><code>default</code><code>:</code><code>return</code>
<code>static</code> <code>string</code> <code>ean13type(</code><code>char</code>
<code>c)</code>
<code>"aaaaaa"</code><code>;</code>
<code>"aababb"</code><code>;</code>
<code>"aabbab"</code><code>;</code>
<code>"aabbba"</code><code>;</code>
<code>"abaabb"</code><code>;</code>
<code>"abbaab"</code><code>;</code>
<code>"abbbaa"</code><code>;</code><code>//中國</code>
<code>"ababab"</code><code>;</code>
<code>"ababba"</code><code>;</code>
<code>"abbaba"</code><code>;</code>
<code> </code><code>}</code>
<code>}</code>
調用時傳入 13位的數字字元串("1405042033235"),寬度(2),高度(50)
barcodetohtml.getean13(string s, int width, int height);
barcodetohtml.getean13("1405042033235", 2, 50);