react-native-earl-thermal-printer 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.
- package/README.md +441 -0
- package/android/build/.transforms/9bdecbc31aaf57a08a337d36d73153ec/results.bin +1 -0
- package/android/build/.transforms/9bdecbc31aaf57a08a337d36d73153ec/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/bc167481fd58833142c92ba32b0fc3e3/results.bin +1 -0
- package/android/build/.transforms/bc167481fd58833142c92ba32b0fc3e3/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/com/pinmi/react/printer/BuildConfig.java +10 -0
- package/android/build/generated/source/codegen/java/com/pinmi/react/printer/NativeBLEPrinterSpec.java +70 -0
- package/android/build/generated/source/codegen/java/com/pinmi/react/printer/NativeNetPrinterSpec.java +70 -0
- package/android/build/generated/source/codegen/java/com/pinmi/react/printer/NativeUSBPrinterSpec.java +62 -0
- package/android/build/generated/source/codegen/jni/CMakeLists.txt +46 -0
- package/android/build/generated/source/codegen/jni/RNThermalReceiptPrinterSpec-generated.cpp +190 -0
- package/android/build/generated/source/codegen/jni/RNThermalReceiptPrinterSpec.h +49 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/ComponentDescriptors.h +22 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/EventEmitters.cpp +18 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/EventEmitters.h +19 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/Props.cpp +21 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/Props.h +20 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/RNThermalReceiptPrinterSpecJSI-generated.cpp +205 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/RNThermalReceiptPrinterSpecJSI.h +355 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/ShadowNodes.cpp +19 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/ShadowNodes.h +25 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/States.cpp +18 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/RNThermalReceiptPrinterSpec/States.h +23 -0
- package/android/build/generated/source/codegen/schema.json +514 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +13 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +5 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +1 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml +4 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/NativeBLEPrinterSpec.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/NativeNetPrinterSpec.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/NativeUSBPrinterSpec.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/RNBLEPrinterModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/RNNetPrinterModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/RNPrinterModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/RNPrinterPackage.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/RNUSBPrinterModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/BLEPrinterAdapter$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/BLEPrinterAdapter.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/BLEPrinterDevice.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/BLEPrinterDeviceId.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/NetPrinterAdapter$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/NetPrinterAdapter$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/NetPrinterAdapter.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/NetPrinterDevice.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/NetPrinterDeviceId.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/PrinterAdapter.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/PrinterDevice.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/PrinterDeviceId.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/USBPrinterAdapter$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/USBPrinterAdapter$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/USBPrinterAdapter.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/USBPrinterDevice.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/pinmi/react/printer/adapter/USBPrinterDeviceId.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +3 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +23 -0
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +13 -0
- package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/build/intermediates/packaged_res/debug/values/values.xml +4 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +2 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +37 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +30 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/android/gradlew +160 -0
- package/android/gradlew.bat +90 -0
- package/android/src/androidTest/java/com/pinmi/react/printer/ExampleInstrumentedTest.java +26 -0
- package/android/src/main/AndroidManifest.xml +10 -0
- package/android/src/main/java/com/pinmi/react/printer/RNBLEPrinterModule.java +91 -0
- package/android/src/main/java/com/pinmi/react/printer/RNNetPrinterModule.java +95 -0
- package/android/src/main/java/com/pinmi/react/printer/RNPrinterModule.java +24 -0
- package/android/src/main/java/com/pinmi/react/printer/RNPrinterPackage.java +57 -0
- package/android/src/main/java/com/pinmi/react/printer/RNUSBPrinterModule.java +79 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/BLEPrinterAdapter.java +391 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/BLEPrinterDevice.java +33 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/BLEPrinterDeviceId.java +38 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/NetPrinterAdapter.java +433 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/NetPrinterDevice.java +30 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/NetPrinterDeviceId.java +48 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/PrinterAdapter.java +29 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/PrinterDevice.java +17 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/PrinterDeviceId.java +8 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/USBPrinterAdapter.java +468 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/USBPrinterDevice.java +41 -0
- package/android/src/main/java/com/pinmi/react/printer/adapter/USBPrinterDeviceId.java +49 -0
- package/android/src/main/res/values/strings.xml +3 -0
- package/android/src/test/java/com/pinmi/react/printer/ExampleUnitTest.java +17 -0
- package/dist/NativeBLEPrinter.d.ts +15 -0
- package/dist/NativeBLEPrinter.d.ts.map +1 -0
- package/dist/NativeBLEPrinter.js +3 -0
- package/dist/NativeBLEPrinter.js.map +1 -0
- package/dist/NativeNetPrinter.d.ts +15 -0
- package/dist/NativeNetPrinter.d.ts.map +1 -0
- package/dist/NativeNetPrinter.js +3 -0
- package/dist/NativeNetPrinter.js.map +1 -0
- package/dist/NativeUSBPrinter.d.ts +13 -0
- package/dist/NativeUSBPrinter.d.ts.map +1 -0
- package/dist/NativeUSBPrinter.js +3 -0
- package/dist/NativeUSBPrinter.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/EPToolkit.d.ts +9 -0
- package/dist/utils/EPToolkit.d.ts.map +1 -0
- package/dist/utils/EPToolkit.js +161 -0
- package/dist/utils/EPToolkit.js.map +1 -0
- package/dist/utils/buffer-helper.d.ts +12 -0
- package/dist/utils/buffer-helper.d.ts.map +1 -0
- package/dist/utils/buffer-helper.js +32 -0
- package/dist/utils/buffer-helper.js.map +1 -0
- package/ios/PrinterSDK/PrinterSDK.h +74 -0
- package/ios/PrinterSDK/libPrinterSDK.a +0 -0
- package/ios/RNBLEPrinter.h +24 -0
- package/ios/RNBLEPrinter.mm +251 -0
- package/ios/RNNetPrinter.h +25 -0
- package/ios/RNNetPrinter.mm +306 -0
- package/ios/RNThermalReceiptPrinter.xcodeproj/project.pbxproj +294 -0
- package/ios/RNThermalReceiptPrinter.xcworkspace/contents.xcworkspacedata +9 -0
- package/ios/RNUSBPrinter.h +19 -0
- package/ios/RNUSBPrinter.mm +80 -0
- package/package.json +70 -0
- package/react-native-earl-thermal-printer.podspec +22 -0
- package/src/NativeBLEPrinter.ts +16 -0
- package/src/NativeNetPrinter.ts +16 -0
- package/src/NativeUSBPrinter.ts +14 -0
- package/src/index.ts +160 -0
- package/src/utils/EPToolkit.ts +193 -0
- package/src/utils/buffer-helper.ts +42 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { NativeEventEmitter } from "react-native";
|
|
2
|
+
|
|
3
|
+
import NativeUSBPrinterModule from "./NativeUSBPrinter";
|
|
4
|
+
import NativeBLEPrinterModule from "./NativeBLEPrinter";
|
|
5
|
+
import NativeNetPrinterModule from "./NativeNetPrinter";
|
|
6
|
+
import * as EPToolkit from "./utils/EPToolkit";
|
|
7
|
+
|
|
8
|
+
// ── Types ───────────────────────────────────────────────────────────────────
|
|
9
|
+
|
|
10
|
+
export interface PrinterOptions {
|
|
11
|
+
beep?: boolean;
|
|
12
|
+
cut?: boolean;
|
|
13
|
+
tailingLine?: boolean;
|
|
14
|
+
encoding?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface IUSBPrinter {
|
|
18
|
+
device_name: string;
|
|
19
|
+
device_id: number;
|
|
20
|
+
vendor_id: number;
|
|
21
|
+
product_id: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface IBLEPrinter {
|
|
25
|
+
device_name: string;
|
|
26
|
+
inner_mac_address: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface INetPrinter {
|
|
30
|
+
device_name: string;
|
|
31
|
+
host: string;
|
|
32
|
+
port: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
36
|
+
|
|
37
|
+
const textTo64Buffer = (text: string, opts: PrinterOptions): string => {
|
|
38
|
+
const options = {
|
|
39
|
+
beep: false,
|
|
40
|
+
cut: false,
|
|
41
|
+
tailingLine: false,
|
|
42
|
+
encoding: "UTF8",
|
|
43
|
+
...opts,
|
|
44
|
+
};
|
|
45
|
+
const buffer = EPToolkit.exchange_text(text, options);
|
|
46
|
+
return buffer.toString("base64");
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const billTo64Buffer = (text: string, opts: PrinterOptions): string => {
|
|
50
|
+
const options = {
|
|
51
|
+
beep: true,
|
|
52
|
+
cut: true,
|
|
53
|
+
tailingLine: true,
|
|
54
|
+
encoding: "UTF8",
|
|
55
|
+
...opts,
|
|
56
|
+
};
|
|
57
|
+
const buffer = EPToolkit.exchange_text(text, options);
|
|
58
|
+
return buffer.toString("base64");
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// ── USB Printer ─────────────────────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
export const USBPrinter = {
|
|
64
|
+
init: (): Promise<string> => NativeUSBPrinterModule.init(),
|
|
65
|
+
|
|
66
|
+
getDeviceList: (): Promise<IUSBPrinter[]> =>
|
|
67
|
+
NativeUSBPrinterModule.getDeviceList() as Promise<IUSBPrinter[]>,
|
|
68
|
+
|
|
69
|
+
connectPrinter: (
|
|
70
|
+
vendorId: number,
|
|
71
|
+
productId: number,
|
|
72
|
+
): Promise<IUSBPrinter> =>
|
|
73
|
+
NativeUSBPrinterModule.connectPrinter(
|
|
74
|
+
vendorId,
|
|
75
|
+
productId,
|
|
76
|
+
) as Promise<IUSBPrinter>,
|
|
77
|
+
|
|
78
|
+
closeConn: (): void => NativeUSBPrinterModule.closeConn(),
|
|
79
|
+
|
|
80
|
+
printText: (text: string, opts: PrinterOptions = {}): Promise<void> =>
|
|
81
|
+
NativeUSBPrinterModule.printRawData(textTo64Buffer(text, opts)),
|
|
82
|
+
|
|
83
|
+
printBill: (text: string, opts: PrinterOptions = {}): Promise<void> =>
|
|
84
|
+
NativeUSBPrinterModule.printRawData(billTo64Buffer(text, opts)),
|
|
85
|
+
|
|
86
|
+
printImage: (imageUrl: string): Promise<void> =>
|
|
87
|
+
NativeUSBPrinterModule.printImageData(imageUrl),
|
|
88
|
+
|
|
89
|
+
printQrCode: (qrCode: string): Promise<void> =>
|
|
90
|
+
NativeUSBPrinterModule.printQrCode(qrCode),
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// ── BLE Printer ─────────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
export const BLEPrinter = {
|
|
96
|
+
init: (): Promise<string> => NativeBLEPrinterModule.init(),
|
|
97
|
+
|
|
98
|
+
getDeviceList: (): Promise<IBLEPrinter[]> =>
|
|
99
|
+
NativeBLEPrinterModule.getDeviceList() as Promise<IBLEPrinter[]>,
|
|
100
|
+
|
|
101
|
+
connectPrinter: (innerMacAddress: string): Promise<IBLEPrinter> =>
|
|
102
|
+
NativeBLEPrinterModule.connectPrinter(
|
|
103
|
+
innerMacAddress,
|
|
104
|
+
) as Promise<IBLEPrinter>,
|
|
105
|
+
|
|
106
|
+
closeConn: (): void => NativeBLEPrinterModule.closeConn(),
|
|
107
|
+
|
|
108
|
+
printText: (text: string, opts: PrinterOptions = {}): Promise<void> =>
|
|
109
|
+
NativeBLEPrinterModule.printRawData(textTo64Buffer(text, opts)),
|
|
110
|
+
|
|
111
|
+
printBill: (text: string, opts: PrinterOptions = {}): Promise<void> =>
|
|
112
|
+
NativeBLEPrinterModule.printRawData(billTo64Buffer(text, opts)),
|
|
113
|
+
|
|
114
|
+
printImage: (imageUrl: string): Promise<void> =>
|
|
115
|
+
NativeBLEPrinterModule.printImageData(imageUrl),
|
|
116
|
+
|
|
117
|
+
printQrCode: (qrCode: string): Promise<void> =>
|
|
118
|
+
NativeBLEPrinterModule.printQrCode(qrCode),
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// ── Net Printer ─────────────────────────────────────────────────────────────
|
|
122
|
+
|
|
123
|
+
export const NetPrinter = {
|
|
124
|
+
init: (): Promise<string> => NativeNetPrinterModule.init(),
|
|
125
|
+
|
|
126
|
+
getDeviceList: (): Promise<INetPrinter[]> =>
|
|
127
|
+
NativeNetPrinterModule.getDeviceList() as Promise<INetPrinter[]>,
|
|
128
|
+
|
|
129
|
+
connectPrinter: (host: string, port: number): Promise<INetPrinter> =>
|
|
130
|
+
NativeNetPrinterModule.connectPrinter(
|
|
131
|
+
host,
|
|
132
|
+
port,
|
|
133
|
+
) as Promise<INetPrinter>,
|
|
134
|
+
|
|
135
|
+
closeConn: (): void => NativeNetPrinterModule.closeConn(),
|
|
136
|
+
|
|
137
|
+
printText: (text: string, opts: PrinterOptions = {}): Promise<void> =>
|
|
138
|
+
NativeNetPrinterModule.printRawData(textTo64Buffer(text, opts)),
|
|
139
|
+
|
|
140
|
+
printBill: (text: string, opts: PrinterOptions = {}): Promise<void> =>
|
|
141
|
+
NativeNetPrinterModule.printRawData(billTo64Buffer(text, opts)),
|
|
142
|
+
|
|
143
|
+
printImage: (imageUrl: string): Promise<void> =>
|
|
144
|
+
NativeNetPrinterModule.printImageData(imageUrl),
|
|
145
|
+
|
|
146
|
+
printQrCode: (qrCode: string): Promise<void> =>
|
|
147
|
+
NativeNetPrinterModule.printQrCode(qrCode),
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// ── Events ──────────────────────────────────────────────────────────────────
|
|
151
|
+
|
|
152
|
+
export const NetPrinterEventEmitter = new NativeEventEmitter(
|
|
153
|
+
NativeNetPrinterModule,
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
export enum RN_THERMAL_RECEIPT_PRINTER_EVENTS {
|
|
157
|
+
EVENT_NET_PRINTER_SCANNED_SUCCESS = "scannerResolved",
|
|
158
|
+
EVENT_NET_PRINTER_SCANNING = "scannerRunning",
|
|
159
|
+
EVENT_NET_PRINTER_SCANNED_ERROR = "registerError",
|
|
160
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
import * as iconv from "iconv-lite";
|
|
3
|
+
// import * as Jimp from "jimp";
|
|
4
|
+
|
|
5
|
+
import BufferHelper from "./buffer-helper";
|
|
6
|
+
|
|
7
|
+
const init_printer_bytes = Buffer.from([27, 64]);
|
|
8
|
+
const l_start_bytes = Buffer.from([27, 97, 0]);
|
|
9
|
+
const l_end_bytes = Buffer.from([]);
|
|
10
|
+
const c_start_bytes = Buffer.from([27, 97, 1]);
|
|
11
|
+
const c_end_bytes = Buffer.from([]); // [ 27, 97, 0 ];
|
|
12
|
+
const r_start_bytes = Buffer.from([27, 97, 2]);
|
|
13
|
+
const r_end_bytes = Buffer.from([]);
|
|
14
|
+
|
|
15
|
+
const default_space_bytes = Buffer.from([27, 50]);
|
|
16
|
+
|
|
17
|
+
const reset_bytes = Buffer.from([27, 97, 0, 29, 33, 0, 27, 50]);
|
|
18
|
+
const m_start_bytes = Buffer.from([27, 33, 16, 28, 33, 8]);
|
|
19
|
+
const m_end_bytes = Buffer.from([27, 33, 0, 28, 33, 0]);
|
|
20
|
+
const b_start_bytes = Buffer.from([27, 33, 48, 28, 33, 12]);
|
|
21
|
+
const b_end_bytes = Buffer.from([27, 33, 0, 28, 33, 0]);
|
|
22
|
+
const cm_start_bytes = Buffer.from([27, 97, 1, 27, 33, 16, 28, 33, 8]);
|
|
23
|
+
const cm_end_bytes = Buffer.from([27, 33, 0, 28, 33, 0]);
|
|
24
|
+
const cb_start_bytes = Buffer.from([27, 97, 1, 27, 33, 48, 28, 33, 12]);
|
|
25
|
+
const cb_end_bytes = Buffer.from([27, 33, 0, 28, 33, 0]);
|
|
26
|
+
const cd_start_bytes = Buffer.from([27, 97, 1, 27, 33, 32, 28, 33, 4]);
|
|
27
|
+
const cd_end_bytes = Buffer.from([27, 33, 0, 28, 33, 0]);
|
|
28
|
+
const d_start_bytes = Buffer.from([27, 33, 32, 28, 33, 4]);
|
|
29
|
+
const d_end_bytes = Buffer.from([27, 33, 0, 28, 33, 0]);
|
|
30
|
+
|
|
31
|
+
const cut_bytes = Buffer.from([27, 105]);
|
|
32
|
+
const beep_bytes = Buffer.from([27, 66, 3, 2]);
|
|
33
|
+
const line_bytes = Buffer.from([10, 10, 10, 10, 10]);
|
|
34
|
+
|
|
35
|
+
const encoding_mappings_bytes: { [key: string]: Buffer } = {
|
|
36
|
+
// single byte encodings
|
|
37
|
+
CP437: Buffer.from([27, 116, 0]),
|
|
38
|
+
// multiple bit encodings
|
|
39
|
+
GB18030: Buffer.from([28, 38, 28, 67, 0]),
|
|
40
|
+
BIG5: Buffer.from([28, 38, 28, 67, 1]),
|
|
41
|
+
UTF8: Buffer.from([28, 38, 28, 67, 255]),
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const options_controller = {
|
|
45
|
+
cut: cut_bytes,
|
|
46
|
+
beep: beep_bytes,
|
|
47
|
+
tailingLine: line_bytes,
|
|
48
|
+
encoding: encoding_mappings_bytes,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const controller: { [key: string]: Buffer } = {
|
|
52
|
+
"<M>": m_start_bytes,
|
|
53
|
+
"</M>": m_end_bytes,
|
|
54
|
+
"<B>": b_start_bytes,
|
|
55
|
+
"</B>": b_end_bytes,
|
|
56
|
+
"<D>": d_start_bytes,
|
|
57
|
+
"</D>": d_end_bytes,
|
|
58
|
+
"<C>": c_start_bytes,
|
|
59
|
+
"</C>": c_end_bytes,
|
|
60
|
+
"<CM>": cm_start_bytes,
|
|
61
|
+
"</CM>": cm_end_bytes,
|
|
62
|
+
"<CD>": cd_start_bytes,
|
|
63
|
+
"</CD>": cd_end_bytes,
|
|
64
|
+
"<CB>": cb_start_bytes,
|
|
65
|
+
"</CB>": cb_end_bytes,
|
|
66
|
+
"<L>": l_start_bytes,
|
|
67
|
+
"</L>": l_end_bytes,
|
|
68
|
+
"<R>": r_start_bytes,
|
|
69
|
+
"</R>": r_end_bytes,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
type IOptions = {
|
|
73
|
+
beep: boolean;
|
|
74
|
+
cut: boolean;
|
|
75
|
+
tailingLine: boolean;
|
|
76
|
+
encoding: string;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const default_options: IOptions = {
|
|
80
|
+
beep: false,
|
|
81
|
+
cut: true,
|
|
82
|
+
tailingLine: true,
|
|
83
|
+
encoding: "UTF8",
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export function exchange_text(text: string, options: IOptions): Buffer {
|
|
87
|
+
const m_options = options || default_options;
|
|
88
|
+
|
|
89
|
+
let bytes = new BufferHelper();
|
|
90
|
+
bytes.concat(init_printer_bytes);
|
|
91
|
+
|
|
92
|
+
// set encoding
|
|
93
|
+
if (
|
|
94
|
+
m_options["encoding"] &&
|
|
95
|
+
options_controller["encoding"][m_options["encoding"]]
|
|
96
|
+
) {
|
|
97
|
+
bytes.concat(options_controller["encoding"][m_options["encoding"]]);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
bytes.concat(default_space_bytes);
|
|
101
|
+
|
|
102
|
+
let temp = "";
|
|
103
|
+
for (let i = 0; i < text.length; i++) {
|
|
104
|
+
let ch = text[i];
|
|
105
|
+
switch (ch) {
|
|
106
|
+
case "<":
|
|
107
|
+
bytes.concat(iconv.encode(temp, m_options.encoding));
|
|
108
|
+
temp = "";
|
|
109
|
+
// add bytes for changing font and justifying text
|
|
110
|
+
for (const tag in controller) {
|
|
111
|
+
if (text.substring(i, i + tag.length) === tag) {
|
|
112
|
+
bytes.concat(controller[tag]);
|
|
113
|
+
i += tag.length - 1;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case "\n":
|
|
118
|
+
temp = `${temp}${ch}`;
|
|
119
|
+
bytes.concat(iconv.encode(temp, m_options.encoding));
|
|
120
|
+
bytes.concat(reset_bytes);
|
|
121
|
+
temp = "";
|
|
122
|
+
break;
|
|
123
|
+
default:
|
|
124
|
+
temp = `${temp}${ch}`;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
temp.length && bytes.concat(iconv.encode(temp, m_options.encoding));
|
|
129
|
+
|
|
130
|
+
// check for "tailingLine" flag
|
|
131
|
+
if (
|
|
132
|
+
typeof m_options["tailingLine"] === "boolean" &&
|
|
133
|
+
options_controller["tailingLine"]
|
|
134
|
+
) {
|
|
135
|
+
bytes.concat(options_controller["tailingLine"]);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// check for "cut" flag
|
|
139
|
+
if (typeof m_options["cut"] === "boolean" && options_controller["cut"]) {
|
|
140
|
+
bytes.concat(options_controller["cut"]);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// check for "beep" flag
|
|
144
|
+
if (typeof m_options["beep"] === "boolean" && options_controller["beep"]) {
|
|
145
|
+
bytes.concat(options_controller["beep"]);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return bytes.toBuffer();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// export async function exchange_image(
|
|
152
|
+
// imagePath: string,
|
|
153
|
+
// threshold: number
|
|
154
|
+
// ): Promise<Buffer> {
|
|
155
|
+
// let bytes = new BufferHelper();
|
|
156
|
+
|
|
157
|
+
// try {
|
|
158
|
+
// // need to find other solution cause jimp is not working in RN
|
|
159
|
+
// const raw_image = await Jimp.read(imagePath);
|
|
160
|
+
// const img = raw_image.resize(250, 250).quality(60).greyscale();
|
|
161
|
+
|
|
162
|
+
// let hex;
|
|
163
|
+
// const nl = img.bitmap.width % 256;
|
|
164
|
+
// const nh = Math.round(img.bitmap.width / 256);
|
|
165
|
+
|
|
166
|
+
// // data
|
|
167
|
+
// const data = Buffer.from([0, 0, 0]);
|
|
168
|
+
// const line = Buffer.from([10]);
|
|
169
|
+
// for (let i = 0; i < Math.round(img.bitmap.height / 24) + 1; i++) {
|
|
170
|
+
// // ESC * m nL nH bitmap
|
|
171
|
+
// let header = Buffer.from([27, 42, 33, nl, nh]);
|
|
172
|
+
// bytes.concat(header);
|
|
173
|
+
// for (let j = 0; j < img.bitmap.width; j++) {
|
|
174
|
+
// data[0] = data[1] = data[2] = 0; // Clear to Zero.
|
|
175
|
+
// for (let k = 0; k < 24; k++) {
|
|
176
|
+
// if (i * 24 + k < img.bitmap.height) {
|
|
177
|
+
// // if within the BMP size
|
|
178
|
+
// hex = img.getPixelColor(j, i * 24 + k);
|
|
179
|
+
// if (Jimp.intToRGBA(hex).r <= threshold) {
|
|
180
|
+
// data[Math.round(k / 8)] += 128 >> k % 8;
|
|
181
|
+
// }
|
|
182
|
+
// }
|
|
183
|
+
// }
|
|
184
|
+
// const dit = Buffer.from([data[0], data[1], data[2]]);
|
|
185
|
+
// bytes.concat(dit);
|
|
186
|
+
// }
|
|
187
|
+
// bytes.concat(line);
|
|
188
|
+
// } // data
|
|
189
|
+
// } catch (error) {
|
|
190
|
+
// console.log(error);
|
|
191
|
+
// }
|
|
192
|
+
// return bytes.toBuffer();
|
|
193
|
+
// }
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
|
|
3
|
+
export default class BufferHelper {
|
|
4
|
+
buffers: Buffer[];
|
|
5
|
+
size: number;
|
|
6
|
+
|
|
7
|
+
constructor() {
|
|
8
|
+
this.buffers = [];
|
|
9
|
+
this.size = 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
get length() {
|
|
13
|
+
return this.size;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
concat = (buffer: Buffer): BufferHelper => {
|
|
17
|
+
this.buffers.push(buffer);
|
|
18
|
+
this.size += buffer.length;
|
|
19
|
+
return this;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
empty = (): BufferHelper => {
|
|
23
|
+
this.buffers = [];
|
|
24
|
+
this.size = 0;
|
|
25
|
+
return this;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
toBuffer = (): Buffer => Buffer.concat(this.buffers, this.size);
|
|
29
|
+
|
|
30
|
+
toString = (encoding: BufferEncoding): string =>
|
|
31
|
+
this.toBuffer().toString(encoding);
|
|
32
|
+
|
|
33
|
+
load = (stream: any, callback: any) => {
|
|
34
|
+
stream.on("data", (trunk: Buffer) => {
|
|
35
|
+
this.concat(trunk);
|
|
36
|
+
});
|
|
37
|
+
stream.on("end", () => {
|
|
38
|
+
callback(null, this.toBuffer());
|
|
39
|
+
});
|
|
40
|
+
stream.once("error", callback);
|
|
41
|
+
};
|
|
42
|
+
}
|