@rejaul/react-native-printer-kit 0.2.0 → 0.3.1

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 CHANGED
@@ -169,9 +169,21 @@ type ConnectPrinterParams = { address: string };
169
169
 
170
170
  type PrintTextParams = { text: string; feedLines?: number };
171
171
 
172
- type PrintImageParams = { imagePath: string; printerWidthDots?: number; feedLines?: number };
172
+ type PrintImageParams = {
173
+ imagePath: string;
174
+ printerWidthDots?: number;
175
+ feedLines?: number;
176
+ bandHeightDots?: number; // default 16 - lower for printers that drop/garble large images
177
+ bandDelayMs?: number; // default 60 - raise for printers that drop/garble large images
178
+ };
173
179
 
174
- type PrintImageBase64Params = { base64: string; printerWidthDots?: number; feedLines?: number };
180
+ type PrintImageBase64Params = {
181
+ base64: string;
182
+ printerWidthDots?: number;
183
+ feedLines?: number;
184
+ bandHeightDots?: number;
185
+ bandDelayMs?: number;
186
+ };
175
187
 
176
188
  type PdfToImageParams = {
177
189
  pdfPath: string;
@@ -180,7 +192,14 @@ type PdfToImageParams = {
180
192
  targetWidthPx?: number;
181
193
  };
182
194
 
183
- type PrintPdfParams = { pdfPath: string; printerWidthDots?: number; page?: number; feedLines?: number };
195
+ type PrintPdfParams = {
196
+ pdfPath: string;
197
+ printerWidthDots?: number;
198
+ page?: number;
199
+ feedLines?: number;
200
+ bandHeightDots?: number;
201
+ bandDelayMs?: number;
202
+ };
184
203
 
185
204
  type HtmlToPdfParams = {
186
205
  html: string;
@@ -195,6 +214,8 @@ type PrintHtmlParams = {
195
214
  pageWidthDp?: number;
196
215
  heightDp?: number;
197
216
  minPageHeightDp?: number;
217
+ bandHeightDots?: number;
218
+ bandDelayMs?: number;
198
219
  };
199
220
  ```
200
221
 
@@ -202,6 +223,8 @@ type PrintHtmlParams = {
202
223
 
203
224
  Connecting through this library keeps the printer connected even if the app is swiped away from Recents — the native side runs a foreground service that outlives the Activity/JS runtime. Every successful `connectPrinter()` call also remembers the device, so the next time the app is opened (even after being fully killed) it reconnects automatically without the user having to pick the printer again.
204
225
 
226
+ `connectPrinter()` falls back to a direct RFCOMM channel if the standard SDP-based socket fails (common on printers with a broken SDP record), and `isConnectedPrinter()` reflects a real physical disconnect immediately (via Android's ACL-disconnect broadcast) instead of a stale flag that stays `true` after the printer silently drops the link.
227
+
205
228
  ## Printing Bangla / other non-Latin text
206
229
 
207
230
  ESC/POS printer firmware fonts only cover ASCII, so `printText()` can't render Bangla. For anything with non-Latin text, render it as an image instead — build a bitmap yourself and use `printImage()`/`printImageBase64()`, or write it as HTML/CSS and call `printHtml()`, which renders it with a real font via `WebView` and prints the result as a dithered raster image.
@@ -61,5 +61,5 @@ repositories {
61
61
 
62
62
  dependencies {
63
63
  implementation "com.facebook.react:react-android"
64
- implementation("com.github.DeveloperRejaul:android-printer-kit:v0.0.7")
64
+ implementation("com.github.DeveloperRejaul:android-printer-kit:v0.0.11")
65
65
  }
@@ -37,6 +37,10 @@ private fun ReadableMap.optInt(key: String, default: Int): Int =
37
37
  private fun ReadableMap.optIntOrNull(key: String): Int? =
38
38
  if (hasKey(key) && !isNull(key)) getDouble(key).toInt() else null
39
39
 
40
+ /** Reads an optional numeric field as a Long, falling back to [default] if absent/null. */
41
+ private fun ReadableMap.optLong(key: String, default: Long): Long =
42
+ if (hasKey(key) && !isNull(key)) getDouble(key).toLong() else default
43
+
40
44
  /**
41
45
  * Bridges [com.rezaul.printerkit.BluetoothPrinter] to React Native.
42
46
  *
@@ -233,7 +237,9 @@ class ReactNativePrinterKitModule(reactContext: ReactApplicationContext) :
233
237
  PrintImageFileParams(
234
238
  imagePath = imagePath,
235
239
  printerWidthDots = params.optInt("printerWidthDots", 384),
236
- feedLines = params.optInt("feedLines", 3)
240
+ feedLines = params.optInt("feedLines", 3),
241
+ bandHeightDots = params.optInt("bandHeightDots", 16),
242
+ bandDelayMs = params.optLong("bandDelayMs", 60L)
237
243
  )
238
244
  )
239
245
  promise.resolve(null)
@@ -257,7 +263,9 @@ class ReactNativePrinterKitModule(reactContext: ReactApplicationContext) :
257
263
  PrintImageBase64Params(
258
264
  base64 = base64,
259
265
  printerWidthDots = params.optInt("printerWidthDots", 384),
260
- feedLines = params.optInt("feedLines", 3)
266
+ feedLines = params.optInt("feedLines", 3),
267
+ bandHeightDots = params.optInt("bandHeightDots", 16),
268
+ bandDelayMs = params.optLong("bandDelayMs", 60L)
261
269
  )
262
270
  )
263
271
  promise.resolve(null)
@@ -312,7 +320,9 @@ class ReactNativePrinterKitModule(reactContext: ReactApplicationContext) :
312
320
  pdfPath = pdfPath,
313
321
  printerWidthDots = params.optInt("printerWidthDots", 384),
314
322
  page = params.optInt("page", 0),
315
- feedLines = params.optInt("feedLines", 3)
323
+ feedLines = params.optInt("feedLines", 3),
324
+ bandHeightDots = params.optInt("bandHeightDots", 16),
325
+ bandDelayMs = params.optLong("bandDelayMs", 60L)
316
326
  )
317
327
  )
318
328
  promise.resolve(null)
@@ -356,7 +366,9 @@ class ReactNativePrinterKitModule(reactContext: ReactApplicationContext) :
356
366
  printerWidthDots = params.optInt("printerWidthDots", 384),
357
367
  pageWidthDp = params.optInt("pageWidthDp", 412),
358
368
  heightDp = params.optIntOrNull("heightDp"),
359
- minPageHeightDp = params.optInt("minPageHeightDp", 1000)
369
+ minPageHeightDp = params.optInt("minPageHeightDp", 1000),
370
+ bandHeightDots = params.optInt("bandHeightDots", 16),
371
+ bandDelayMs = params.optLong("bandDelayMs", 60L)
360
372
  )
361
373
  ) { ok ->
362
374
  promise.resolve(ok)
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","Platform","getModule","OS","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactNativePrinterKit.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAoBC,QAAQ,QAAQ,cAAc;AAqJ9E,SAASC,SAASA,CAAA,EAAS;EACzB,OAAOD,QAAQ,CAACE,EAAE,KAAK,SAAS,GAC5BH,mBAAmB,CAACI,YAAY,CAAO,uBAAuB,CAAC,GAC9D,CAAC,CAAU;AAClB;AAEA,eAAeF,SAAS,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","Platform","getModule","OS","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactNativePrinterKit.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAoBC,QAAQ,QAAQ,cAAc;AAqK9E,SAASC,SAASA,CAAA,EAAS;EACzB,OAAOD,QAAQ,CAACE,EAAE,KAAK,SAAS,GAC5BH,mBAAmB,CAACI,YAAY,CAAO,uBAAuB,CAAC,GAC9D,CAAC,CAAU;AAClB;AAEA,eAAeF,SAAS,CAAC,CAAC","ignoreList":[]}
@@ -15,11 +15,19 @@ export type PrintImageParams = {
15
15
  imagePath: string;
16
16
  printerWidthDots?: number;
17
17
  feedLines?: number;
18
+ /** Height (in dots) of each raster band sent to the printer. Lower this for printers with a small receive buffer that drop or garble large images. Default 16. */
19
+ bandHeightDots?: number;
20
+ /** Pause (ms) between raster bands, giving the printer time to catch up. Default 60. */
21
+ bandDelayMs?: number;
18
22
  };
19
23
  export type PrintImageBase64Params = {
20
24
  base64: string;
21
25
  printerWidthDots?: number;
22
26
  feedLines?: number;
27
+ /** See PrintImageParams.bandHeightDots. */
28
+ bandHeightDots?: number;
29
+ /** See PrintImageParams.bandDelayMs. */
30
+ bandDelayMs?: number;
23
31
  };
24
32
  export type PdfToImageParams = {
25
33
  pdfPath: string;
@@ -32,6 +40,10 @@ export type PrintPdfParams = {
32
40
  printerWidthDots?: number;
33
41
  page?: number;
34
42
  feedLines?: number;
43
+ /** See PrintImageParams.bandHeightDots. */
44
+ bandHeightDots?: number;
45
+ /** See PrintImageParams.bandDelayMs. */
46
+ bandDelayMs?: number;
35
47
  };
36
48
  export type HtmlToPdfParams = {
37
49
  html: string;
@@ -45,6 +57,10 @@ export type PrintHtmlParams = {
45
57
  pageWidthDp?: number;
46
58
  heightDp?: number;
47
59
  minPageHeightDp?: number;
60
+ /** See PrintImageParams.bandHeightDots. */
61
+ bandHeightDots?: number;
62
+ /** See PrintImageParams.bandDelayMs. */
63
+ bandDelayMs?: number;
48
64
  };
49
65
  export interface Spec extends TurboModule {
50
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"NativeReactNativePrinterKit.d.ts","sourceRoot":"","sources":["../../../src/NativeReactNativePrinterKit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeReactNativePrinterKit.d.ts","sourceRoot":"","sources":["../../../src/NativeReactNativePrinterKit.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rejaul/react-native-printer-kit",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Direct Bluetooth POS/thermal (ESC/POS) printer integration for React Native on Android — print raw text, images, PDFs, and full HTML/CSS content including Bangla and other non-Latin scripts.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -20,12 +20,20 @@ export type PrintImageParams = {
20
20
  imagePath: string;
21
21
  printerWidthDots?: number;
22
22
  feedLines?: number;
23
+ /** Height (in dots) of each raster band sent to the printer. Lower this for printers with a small receive buffer that drop or garble large images. Default 16. */
24
+ bandHeightDots?: number;
25
+ /** Pause (ms) between raster bands, giving the printer time to catch up. Default 60. */
26
+ bandDelayMs?: number;
23
27
  };
24
28
 
25
29
  export type PrintImageBase64Params = {
26
30
  base64: string;
27
31
  printerWidthDots?: number;
28
32
  feedLines?: number;
33
+ /** See PrintImageParams.bandHeightDots. */
34
+ bandHeightDots?: number;
35
+ /** See PrintImageParams.bandDelayMs. */
36
+ bandDelayMs?: number;
29
37
  };
30
38
 
31
39
  export type PdfToImageParams = {
@@ -40,6 +48,10 @@ export type PrintPdfParams = {
40
48
  printerWidthDots?: number;
41
49
  page?: number;
42
50
  feedLines?: number;
51
+ /** See PrintImageParams.bandHeightDots. */
52
+ bandHeightDots?: number;
53
+ /** See PrintImageParams.bandDelayMs. */
54
+ bandDelayMs?: number;
43
55
  };
44
56
 
45
57
  export type HtmlToPdfParams = {
@@ -55,6 +67,10 @@ export type PrintHtmlParams = {
55
67
  pageWidthDp?: number;
56
68
  heightDp?: number;
57
69
  minPageHeightDp?: number;
70
+ /** See PrintImageParams.bandHeightDots. */
71
+ bandHeightDots?: number;
72
+ /** See PrintImageParams.bandDelayMs. */
73
+ bandDelayMs?: number;
58
74
  };
59
75
 
60
76
  export interface Spec extends TurboModule {