taro-bluetooth-print 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/bluetooth/adapter.d.ts +31 -0
  4. package/dist/bluetooth/adapter.js +47 -0
  5. package/dist/bluetooth/adapter.js.map +1 -0
  6. package/dist/bluetooth/h5.d.ts +66 -0
  7. package/dist/bluetooth/h5.js +302 -0
  8. package/dist/bluetooth/h5.js.map +1 -0
  9. package/dist/bluetooth/harmony.d.ts +82 -0
  10. package/dist/bluetooth/harmony.js +342 -0
  11. package/dist/bluetooth/harmony.js.map +1 -0
  12. package/dist/bluetooth/index.d.ts +45 -0
  13. package/dist/bluetooth/index.js +175 -0
  14. package/dist/bluetooth/index.js.map +1 -0
  15. package/dist/bluetooth/rn.d.ts +35 -0
  16. package/dist/bluetooth/rn.js +368 -0
  17. package/dist/bluetooth/rn.js.map +1 -0
  18. package/dist/bluetooth/weapp.d.ts +16 -0
  19. package/dist/bluetooth/weapp.js +177 -0
  20. package/dist/bluetooth/weapp.js.map +1 -0
  21. package/dist/index.d.ts +16 -0
  22. package/dist/index.js +35 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/printer/commands.d.ts +28 -0
  25. package/dist/printer/commands.js +90 -0
  26. package/dist/printer/commands.js.map +1 -0
  27. package/dist/printer/image.d.ts +59 -0
  28. package/dist/printer/image.js +258 -0
  29. package/dist/printer/image.js.map +1 -0
  30. package/dist/printer/index.d.ts +87 -0
  31. package/dist/printer/index.js +362 -0
  32. package/dist/printer/index.js.map +1 -0
  33. package/dist/printer/template.d.ts +95 -0
  34. package/dist/printer/template.js +262 -0
  35. package/dist/printer/template.js.map +1 -0
  36. package/dist/utils/buffer.d.ts +35 -0
  37. package/dist/utils/buffer.js +96 -0
  38. package/dist/utils/buffer.js.map +1 -0
  39. package/dist/utils/encoding.d.ts +26 -0
  40. package/dist/utils/encoding.js +149 -0
  41. package/dist/utils/encoding.js.map +1 -0
  42. package/dist/utils/logger.d.ts +18 -0
  43. package/dist/utils/logger.js +91 -0
  44. package/dist/utils/logger.js.map +1 -0
  45. package/package.json +57 -0
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrinterManager = void 0;
4
+ const commands_1 = require("./commands");
5
+ const encoding_1 = require("../utils/encoding");
6
+ const image_1 = require("./image");
7
+ const logger_1 = require("../utils/logger");
8
+ class PrinterManager {
9
+ constructor(bluetooth) {
10
+ this.lastError = null;
11
+ this.bluetooth = bluetooth;
12
+ }
13
+ /**
14
+ * 获取最后一次错误
15
+ */
16
+ getLastError() {
17
+ return this.lastError;
18
+ }
19
+ /**
20
+ * 发送指令
21
+ * @param commands 指令数组
22
+ */
23
+ async sendCommands(commands) {
24
+ this.lastError = null;
25
+ try {
26
+ for (const command of commands) {
27
+ const result = await this.bluetooth.writeData(command.buffer);
28
+ if (!result) {
29
+ this.lastError = new Error('发送命令失败');
30
+ return false;
31
+ }
32
+ // 添加延迟以确保命令被处理
33
+ await new Promise(resolve => setTimeout(resolve, 20));
34
+ }
35
+ return true;
36
+ }
37
+ catch (error) {
38
+ this.lastError = error instanceof Error ? error : new Error(String(error));
39
+ logger_1.logger.error('发送命令失败', error);
40
+ return false;
41
+ }
42
+ }
43
+ /**
44
+ * 打印文本
45
+ * @param text 文本内容
46
+ * @param options 打印选项
47
+ */
48
+ async printText(text, options = {}) {
49
+ try {
50
+ const commands = [commands_1.Commands.INIT];
51
+ // 对齐方式
52
+ if (options.align === 'center') {
53
+ commands.push(commands_1.Commands.ALIGN_CENTER);
54
+ }
55
+ else if (options.align === 'right') {
56
+ commands.push(commands_1.Commands.ALIGN_RIGHT);
57
+ }
58
+ else {
59
+ commands.push(commands_1.Commands.ALIGN_LEFT);
60
+ }
61
+ // 字体样式
62
+ if (options.bold) {
63
+ commands.push(commands_1.Commands.BOLD_ON);
64
+ }
65
+ if (options.underline) {
66
+ commands.push(commands_1.Commands.UNDERLINE_ON);
67
+ }
68
+ // 字体大小
69
+ if (options.doubleHeight && options.doubleWidth) {
70
+ commands.push(commands_1.Commands.TEXT_LARGE);
71
+ }
72
+ else if (options.doubleHeight) {
73
+ commands.push(commands_1.Commands.TEXT_MEDIUM);
74
+ }
75
+ else {
76
+ commands.push(commands_1.Commands.TEXT_NORMAL);
77
+ }
78
+ // 打印文本
79
+ commands.push((0, encoding_1.textToBuffer)(text));
80
+ // 走纸
81
+ const feed = options.feed !== undefined ? options.feed : 2;
82
+ for (let i = 0; i < feed; i++) {
83
+ commands.push(commands_1.Commands.LF);
84
+ }
85
+ // 切纸
86
+ if (options.cut !== false) {
87
+ commands.push(commands_1.Commands.CUT);
88
+ }
89
+ return await this.sendCommands(commands);
90
+ }
91
+ catch (error) {
92
+ this.lastError = error instanceof Error ? error : new Error(String(error));
93
+ logger_1.logger.error('打印文本失败', error);
94
+ return false;
95
+ }
96
+ }
97
+ /**
98
+ * 打印图片
99
+ * @param imageUrlOrBase64 图片URL或Base64字符串
100
+ * @param options 图片打印选项
101
+ */
102
+ async printImage(imageUrlOrBase64, options = {}) {
103
+ try {
104
+ const commands = [commands_1.Commands.INIT];
105
+ // 对齐方式
106
+ if (options.align === 'center') {
107
+ commands.push(commands_1.Commands.ALIGN_CENTER);
108
+ }
109
+ else if (options.align === 'right') {
110
+ commands.push(commands_1.Commands.ALIGN_RIGHT);
111
+ }
112
+ else {
113
+ commands.push(commands_1.Commands.ALIGN_LEFT);
114
+ }
115
+ // 处理图片数据
116
+ let imageCommands;
117
+ if (imageUrlOrBase64.startsWith('data:')) {
118
+ // Base64图片
119
+ imageCommands = await image_1.PrinterImage.processBase64Image(imageUrlOrBase64, {
120
+ maxWidth: options.maxWidth,
121
+ threshold: options.threshold,
122
+ dithering: options.dithering
123
+ });
124
+ }
125
+ else {
126
+ // URL图片
127
+ imageCommands = await image_1.PrinterImage.processImage(imageUrlOrBase64, {
128
+ maxWidth: options.maxWidth,
129
+ threshold: options.threshold,
130
+ dithering: options.dithering
131
+ });
132
+ }
133
+ commands.push(imageCommands);
134
+ commands.push(commands_1.Commands.LF);
135
+ commands.push(commands_1.Commands.CUT);
136
+ return await this.sendCommands(commands);
137
+ }
138
+ catch (error) {
139
+ this.lastError = error instanceof Error ? error : new Error(String(error));
140
+ logger_1.logger.error('打印图片失败', error);
141
+ return false;
142
+ }
143
+ }
144
+ /**
145
+ * 打印条形码
146
+ * @param content 条码内容
147
+ * @param options 条码选项
148
+ */
149
+ async printBarcode(content, options = {}) {
150
+ try {
151
+ const type = options.type || 73; // 默认CODE128
152
+ const height = options.height || 80;
153
+ const commands = [commands_1.Commands.INIT];
154
+ // 对齐方式
155
+ if (options.align === 'center') {
156
+ commands.push(commands_1.Commands.ALIGN_CENTER);
157
+ }
158
+ else if (options.align === 'right') {
159
+ commands.push(commands_1.Commands.ALIGN_RIGHT);
160
+ }
161
+ else {
162
+ commands.push(commands_1.Commands.ALIGN_LEFT);
163
+ }
164
+ // 设置条码高度
165
+ commands.push(commands_1.Commands.setBarcodeHeight(height));
166
+ // 打印条码
167
+ commands.push(commands_1.Commands.printBarcode(content, type));
168
+ commands.push(commands_1.Commands.LF);
169
+ commands.push(commands_1.Commands.LF);
170
+ commands.push(commands_1.Commands.CUT);
171
+ return await this.sendCommands(commands);
172
+ }
173
+ catch (error) {
174
+ this.lastError = error instanceof Error ? error : new Error(String(error));
175
+ logger_1.logger.error('打印条形码失败', error);
176
+ return false;
177
+ }
178
+ }
179
+ /**
180
+ * 打印二维码
181
+ * @param content 二维码内容
182
+ * @param options 二维码选项
183
+ */
184
+ async printQRCode(content, options = {}) {
185
+ try {
186
+ const size = options.size || 6;
187
+ const commands = [commands_1.Commands.INIT];
188
+ // 对齐方式
189
+ if (options.align === 'center') {
190
+ commands.push(commands_1.Commands.ALIGN_CENTER);
191
+ }
192
+ else if (options.align === 'right') {
193
+ commands.push(commands_1.Commands.ALIGN_RIGHT);
194
+ }
195
+ else {
196
+ commands.push(commands_1.Commands.ALIGN_LEFT);
197
+ }
198
+ // 添加二维码命令
199
+ commands.push(...commands_1.Commands.printQRCode(content, size));
200
+ commands.push(commands_1.Commands.LF);
201
+ commands.push(commands_1.Commands.LF);
202
+ commands.push(commands_1.Commands.CUT);
203
+ return await this.sendCommands(commands);
204
+ }
205
+ catch (error) {
206
+ this.lastError = error instanceof Error ? error : new Error(String(error));
207
+ logger_1.logger.error('打印二维码失败', error);
208
+ return false;
209
+ }
210
+ }
211
+ /**
212
+ * 打印收据
213
+ * @param data 收据数据
214
+ */
215
+ async printReceipt(data) {
216
+ try {
217
+ const commands = [commands_1.Commands.INIT];
218
+ // 打印徽标(如果有)
219
+ if (data.logo) {
220
+ try {
221
+ const logoImage = await image_1.PrinterImage.processImage(data.logo, {
222
+ maxWidth: 300,
223
+ dithering: true
224
+ });
225
+ commands.push(commands_1.Commands.ALIGN_CENTER);
226
+ commands.push(logoImage);
227
+ commands.push(commands_1.Commands.LF);
228
+ }
229
+ catch (error) {
230
+ logger_1.logger.warn('徽标打印失败,继续打印收据', error);
231
+ }
232
+ }
233
+ // 标题和商户信息
234
+ commands.push(commands_1.Commands.ALIGN_CENTER);
235
+ commands.push(commands_1.Commands.TEXT_LARGE);
236
+ commands.push((0, encoding_1.textToBuffer)(data.title));
237
+ commands.push(commands_1.Commands.LF);
238
+ commands.push(commands_1.Commands.TEXT_NORMAL);
239
+ commands.push((0, encoding_1.textToBuffer)(data.merchant));
240
+ commands.push(commands_1.Commands.LF);
241
+ commands.push((0, encoding_1.textToBuffer)('--------------------------------'));
242
+ commands.push(commands_1.Commands.LF);
243
+ // 商品明细
244
+ commands.push(commands_1.Commands.ALIGN_LEFT);
245
+ const headers = "商品名称 数量 单价 金额";
246
+ commands.push((0, encoding_1.textToBuffer)(headers));
247
+ commands.push(commands_1.Commands.LF);
248
+ for (const item of data.items) {
249
+ const price = item.price.toFixed(2);
250
+ const amount = (item.price * item.quantity).toFixed(2);
251
+ // 格式化商品行,确保对齐
252
+ let line = item.name.padEnd(20, ' ');
253
+ line += String(item.quantity).padStart(5, ' ');
254
+ line += price.padStart(7, ' ');
255
+ line += amount.padStart(8, ' ');
256
+ commands.push((0, encoding_1.textToBuffer)(line));
257
+ commands.push(commands_1.Commands.LF);
258
+ }
259
+ // 分隔线和总计
260
+ commands.push((0, encoding_1.textToBuffer)('--------------------------------'));
261
+ commands.push(commands_1.Commands.LF);
262
+ commands.push(commands_1.Commands.ALIGN_RIGHT);
263
+ commands.push(commands_1.Commands.BOLD_ON);
264
+ commands.push((0, encoding_1.textToBuffer)(`总计: ${data.total.toFixed(2)}元`));
265
+ commands.push(commands_1.Commands.BOLD_OFF);
266
+ commands.push(commands_1.Commands.LF);
267
+ // 日期和页脚
268
+ commands.push(commands_1.Commands.ALIGN_CENTER);
269
+ commands.push((0, encoding_1.textToBuffer)(data.date));
270
+ commands.push(commands_1.Commands.LF);
271
+ if (data.footer) {
272
+ commands.push(commands_1.Commands.LF);
273
+ commands.push((0, encoding_1.textToBuffer)(data.footer));
274
+ commands.push(commands_1.Commands.LF);
275
+ }
276
+ commands.push(commands_1.Commands.LF);
277
+ commands.push(commands_1.Commands.CUT);
278
+ return await this.sendCommands(commands);
279
+ }
280
+ catch (error) {
281
+ this.lastError = error instanceof Error ? error : new Error(String(error));
282
+ logger_1.logger.error('打印收据失败', error);
283
+ return false;
284
+ }
285
+ }
286
+ /**
287
+ * 打印测试页
288
+ */
289
+ async printTestPage() {
290
+ try {
291
+ const commands = [commands_1.Commands.INIT];
292
+ // 标题
293
+ commands.push(commands_1.Commands.ALIGN_CENTER);
294
+ commands.push(commands_1.Commands.TEXT_LARGE);
295
+ commands.push((0, encoding_1.textToBuffer)('打印测试页'));
296
+ commands.push(commands_1.Commands.LF);
297
+ commands.push(commands_1.Commands.TEXT_NORMAL);
298
+ commands.push((0, encoding_1.textToBuffer)('Taro蓝牙打印库'));
299
+ commands.push(commands_1.Commands.LF);
300
+ commands.push((0, encoding_1.textToBuffer)('--------------------------------'));
301
+ commands.push(commands_1.Commands.LF);
302
+ // 文本样式测试
303
+ commands.push(commands_1.Commands.ALIGN_LEFT);
304
+ commands.push((0, encoding_1.textToBuffer)('【文本样式测试】'));
305
+ commands.push(commands_1.Commands.LF);
306
+ commands.push((0, encoding_1.textToBuffer)('标准文本'));
307
+ commands.push(commands_1.Commands.LF);
308
+ commands.push(commands_1.Commands.BOLD_ON);
309
+ commands.push((0, encoding_1.textToBuffer)('粗体文本'));
310
+ commands.push(commands_1.Commands.BOLD_OFF);
311
+ commands.push(commands_1.Commands.LF);
312
+ commands.push(commands_1.Commands.UNDERLINE_ON);
313
+ commands.push((0, encoding_1.textToBuffer)('下划线文本'));
314
+ commands.push(commands_1.Commands.UNDERLINE_OFF);
315
+ commands.push(commands_1.Commands.LF);
316
+ commands.push(commands_1.Commands.TEXT_LARGE);
317
+ commands.push((0, encoding_1.textToBuffer)('大号文本'));
318
+ commands.push(commands_1.Commands.TEXT_NORMAL);
319
+ commands.push(commands_1.Commands.LF);
320
+ // 对齐方式测试
321
+ commands.push((0, encoding_1.textToBuffer)('【对齐方式测试】'));
322
+ commands.push(commands_1.Commands.LF);
323
+ commands.push(commands_1.Commands.ALIGN_LEFT);
324
+ commands.push((0, encoding_1.textToBuffer)('左对齐文本'));
325
+ commands.push(commands_1.Commands.LF);
326
+ commands.push(commands_1.Commands.ALIGN_CENTER);
327
+ commands.push((0, encoding_1.textToBuffer)('居中对齐文本'));
328
+ commands.push(commands_1.Commands.LF);
329
+ commands.push(commands_1.Commands.ALIGN_RIGHT);
330
+ commands.push((0, encoding_1.textToBuffer)('右对齐文本'));
331
+ commands.push(commands_1.Commands.LF);
332
+ // 条码测试
333
+ commands.push(commands_1.Commands.ALIGN_CENTER);
334
+ commands.push((0, encoding_1.textToBuffer)('【条码测试】'));
335
+ commands.push(commands_1.Commands.LF);
336
+ commands.push(commands_1.Commands.setBarcodeHeight(60));
337
+ commands.push(commands_1.Commands.printBarcode('12345678', 73));
338
+ commands.push(commands_1.Commands.LF);
339
+ // 二维码测试
340
+ commands.push((0, encoding_1.textToBuffer)('【二维码测试】'));
341
+ commands.push(commands_1.Commands.LF);
342
+ const qrCommands = commands_1.Commands.printQRCode('https://github.com/yourusername/taro-bluetooth-print');
343
+ commands.push(...qrCommands);
344
+ commands.push(commands_1.Commands.LF);
345
+ // 结束
346
+ commands.push((0, encoding_1.textToBuffer)('--------------------------------'));
347
+ commands.push(commands_1.Commands.LF);
348
+ commands.push((0, encoding_1.textToBuffer)('测试完成'));
349
+ commands.push(commands_1.Commands.LF);
350
+ commands.push(commands_1.Commands.LF);
351
+ commands.push(commands_1.Commands.CUT);
352
+ return await this.sendCommands(commands);
353
+ }
354
+ catch (error) {
355
+ this.lastError = error instanceof Error ? error : new Error(String(error));
356
+ logger_1.logger.error('打印测试页失败', error);
357
+ return false;
358
+ }
359
+ }
360
+ }
361
+ exports.PrinterManager = PrinterManager;
362
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/printer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * 打印模板基类
3
+ */
4
+ export declare abstract class PrintTemplate {
5
+ protected commands: Uint8Array[];
6
+ /**
7
+ * 生成打印命令
8
+ */
9
+ abstract build(): Promise<Uint8Array[]>;
10
+ /**
11
+ * 重置模板
12
+ */
13
+ reset(): void;
14
+ /**
15
+ * 添加文本
16
+ */
17
+ addText(text: string, options?: {
18
+ align?: 'left' | 'center' | 'right';
19
+ bold?: boolean;
20
+ doubleHeight?: boolean;
21
+ doubleWidth?: boolean;
22
+ underline?: boolean;
23
+ }): this;
24
+ /**
25
+ * 添加换行
26
+ */
27
+ addNewLine(count?: number): this;
28
+ /**
29
+ * 添加分隔线
30
+ */
31
+ addDivider(char?: string, count?: number): this;
32
+ /**
33
+ * 添加条形码
34
+ */
35
+ addBarcode(content: string, options?: {
36
+ type?: number;
37
+ height?: number;
38
+ align?: 'left' | 'center' | 'right';
39
+ }): this;
40
+ /**
41
+ * 添加二维码
42
+ */
43
+ addQRCode(content: string, options?: {
44
+ size?: number;
45
+ align?: 'left' | 'center' | 'right';
46
+ }): this;
47
+ /**
48
+ * 添加切纸命令
49
+ */
50
+ addCut(): this;
51
+ }
52
+ /**
53
+ * 收据模板
54
+ */
55
+ export declare class ReceiptTemplate extends PrintTemplate {
56
+ private title;
57
+ private merchant;
58
+ private items;
59
+ private total;
60
+ private date;
61
+ private footer?;
62
+ private logo?;
63
+ constructor(data: {
64
+ title: string;
65
+ merchant: string;
66
+ items: Array<{
67
+ name: string;
68
+ price: number;
69
+ quantity: number;
70
+ }>;
71
+ total?: number;
72
+ date?: string;
73
+ footer?: string;
74
+ logo?: string;
75
+ });
76
+ /**
77
+ * 计算总金额
78
+ */
79
+ private calculateTotal;
80
+ /**
81
+ * 生成打印命令
82
+ */
83
+ build(): Promise<Uint8Array[]>;
84
+ }
85
+ /**
86
+ * 测试页模板
87
+ */
88
+ export declare class TestPageTemplate extends PrintTemplate {
89
+ private packageInfo;
90
+ constructor(packageInfo?: string);
91
+ /**
92
+ * 生成打印命令
93
+ */
94
+ build(): Promise<Uint8Array[]>;
95
+ }