npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@kduma-autoid/capacitor-sunmi-printer

v0.5.6

Published

Adapter for printing on internal printers of Sunmi POS devices

Downloads

284

Readme

@kduma-autoid/capacitor-sunmi-printer

Adapter for printing on internal printers of Sunmi POS devices

Install

npm install @kduma-autoid/capacitor-sunmi-printer
npx cap sync

Configuration

You can disable auto binding of the service by setting bindOnLoad to false in the plugin configuration in capacitor.config.ts.

/// <reference types="@kduma-autoid/capacitor-sunmi-printer" />
import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: "com.company.app",
  ...
  plugins: {
    SunmiPrinter: {
      bindOnLoad: true
    }
  }
}
export default config;

Example Usage

You can interact with the printer in two ways:

  1. You can build the prints procedurally using method calls. It's ideal for smaller printouts and in new projects.
  2. Or you can print by sending commands from a subset of ESC/POS print language - it's ideal for larger documents, legacy applications or when receiving whole printouts from a remote server.

Example 1 - Printing using built-in methods

SunmiPrinter.enterPrinterBuffer();

SunmiPrinter.setFontSize({ size: 35 });
SunmiPrinter.setBold({ enable: true });
SunmiPrinter.setAlignment({ alignment: AlignmentModeEnum.LEFT });
SunmiPrinter.printText({ text: "This is an\n" });

SunmiPrinter.setFontSize({ size: 65 });
SunmiPrinter.setBold({ enable: false });
SunmiPrinter.setAlignment({ alignment: AlignmentModeEnum.CENTER });
SunmiPrinter.setAntiWhitePrintStyle({ enable: true });
SunmiPrinter.printText({ text: "EXAMPLE\n" });

SunmiPrinter.setFontSize({ size: 30 });
SunmiPrinter.setAlignment({ alignment: AlignmentModeEnum.RIGHT });
SunmiPrinter.setAntiWhitePrintStyle({ enable: false });
SunmiPrinter.printText({ text: "of a SunmiPrinter plugin\n" });

SunmiPrinter.setAlignment({ alignment: AlignmentModeEnum.CENTER });
SunmiPrinter.printBarCode({ content: "1234567890", symbology: BarcodeSymbologyEnum.CODE_128, height: 100, width: 2, text_position: BarcodeTextPositionEnum.BELOW });

SunmiPrinter.cutPaper(); // or SunmiPrinter.lineWrap({lines: 3});

SunmiPrinter.exitPrinterBuffer();

Example 2 - Printing already prepared ESC/POS commands

SunmiPrinter.enterPrinterBuffer();

const escpos = "\u001b@\u001ba\u0001\u001d!\u0011Hello\n\u001bE\u0001\u001d!\u0010SunmiPrinter\n\u001bE\u0000\u001d!\u0013EXAMPLE\n\u001d!\u0000\u001bE\u0001plugin\n\n\n\n\u001bE\u0000";
SunmiPrinter.sendRAWData({data: escpos});

SunmiPrinter.exitPrinterBuffer();

API

bindService()

bindService() => Promise<void>

bind print service


unBindService()

unBindService() => Promise<void>

unbind print service


getServiceStatus()

getServiceStatus() => Promise<{ status: ServiceStatusEnum; }>

Get the print service current status

Returns: Promise<{ status: ServiceStatusEnum; }>


printerInit()

printerInit() => Promise<void>

Printer initialization

Note: reset the printer's logical program, such as typography, bold, etc., without emptying the cached data, then the unfinished print tasks will continue after resetting.


printerSelfChecking()

printerSelfChecking() => Promise<void>

Printer self-checking


getPrinterSerialNo()

getPrinterSerialNo() => Promise<{ serial_number: string; }>

Get the printer’s serial no.

Returns: Promise<{ serial_number: string; }>


getPrinterModel()

getPrinterModel() => Promise<{ model: string; }>

Get the interface of printer model

Returns: Promise<{ model: string; }>


getPrinterVersion()

getPrinterVersion() => Promise<{ version: string; }>

Get the printer’s firmware version no.

Returns: Promise<{ version: string; }>


getDeviceName()

getDeviceName() => Promise<{ name: string; }>

Device name

Returns: Promise<{ name: string; }>


updatePrinterState()

updatePrinterState() => Promise<{ status: PrinterStatusEnum; code: number; }>

Get the printer’s latest status

1 → Printer is under normal operation 2 → Printer is under preparation 3 → Communication is abnormal 4 → Out of paper 5 → Overheated 6 → Cover is open 7 → Cutter error 8 → Cutter recovered 9 → Black mark not detected 505 → Printer not detected 507 → Printer firmware update failed

Note 1: these return values are applicable to all SUNMI devices, but some status can’t be obtained due to hardware configuration. For example, cover open detection is not applicable to handheld devices.

Note 2: V1 devices currently can’t support this interface; you can also get it asynchronously by registering broadcast apart from getting status proactively

Returns: Promise<{ status: PrinterStatusEnum; code: number; }>


getServiceVersion()

getServiceVersion() => Promise<{ version: string; }>

Get the printing service version no.

Returns: Promise<{ version: string; }>


getPrintedLength()

getPrintedLength() => Promise<{ length: number; }>

Get the print length of the printhead

Note: currently you can get the printed length since powering on the device.

Due to the hardware differences between desktop devices and handheld devices, the returns of printing results may vary. In other words, you can get the printed length through ICallback callback interface for handheld devices, and get the printed length directly through the return values for desktop devices.

Returns: Promise<{ length: number; }>


getPrinterPaper()

getPrinterPaper() => Promise<{ paper: number; }>

Get the printer’s current paper specification

Note 1: by default, 58mm paper specification is adopted for handheld printers, and 80mm paper specification for desktop printers but you can add a fixator and set the printer to use a 58mm paper roll by configuration, and the interface will return the current paper specification set for the printer.

Note 2: currently, desktop device T1 model with versions above v2.4.0 supports this interface; T2 and S2 models with versions above v1.0.5 support this interface; for other device models with versions above v4.1.2, they all support this interface for getting paper specification.

Returns: Promise<{ paper: number; }>


sendRAWData(...)

sendRAWData(options: { data: string; }) => Promise<void>

Commands of printing ESC/POS format

| Param | Type | | ------------- | ------------------------------ | | options | { data: string; } |


sendRAWBase64Data(...)

sendRAWBase64Data(options: { data: string; }) => Promise<void>

Commands of printing ESC/POS format encoded in Base64

| Param | Type | | ------------- | ------------------------------ | | options | { data: string; } |


setPrinterStyle(...)

setPrinterStyle(options: { key: PrinterStyleKeysEnum; value: number | PrinterStyleValuesEnum; }) => Promise<void>

Set printer style

Parameter: set the const class by referring to WoyouConsts.java printer style.

key → set different attributes according to the definition in the const class interface, usually being ENABLE_XXX and SET_XXX.

value → set status or size corresponding to the attributes Select ENABLE or DISABLE for ENABLE XXX attribute. Set the detailed size for SET_XXX attribute.

Note: this interface is available for the printing service with versions above v4.2.22.

| Param | Type | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | options | { key: PrinterStyleKeysEnum; value: number | PrinterStyleValuesEnum; } |


setDoubleWidthPrintStyle(...)

setDoubleWidthPrintStyle(options: { enable: boolean; }) => Promise<void>

Sets double-width print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setDoubleHeightPrintStyle(...)

setDoubleHeightPrintStyle(options: { enable: boolean; }) => Promise<void>

Sets double-height print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setBoldPrintStyle(...)

setBoldPrintStyle(options: { enable: boolean; }) => Promise<void>

Sets bold print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setUnderlinePrintStyle(...)

setUnderlinePrintStyle(options: { enable: boolean; }) => Promise<void>

Sets underline print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setAntiWhitePrintStyle(...)

setAntiWhitePrintStyle(options: { enable: boolean; }) => Promise<void>

Sets anti-white print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setStrikethroughPrintStyle(...)

setStrikethroughPrintStyle(options: { enable: boolean; }) => Promise<void>

Sets strikethrough print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setItalicPrintStyle(...)

setItalicPrintStyle(options: { enable: boolean; }) => Promise<void>

Sets italic print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setInvertPrintStyle(...)

setInvertPrintStyle(options: { enable: boolean; }) => Promise<void>

Sets inverted print style

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


setTextRightSpacingPrintStyle(...)

setTextRightSpacingPrintStyle(options: { value: number; }) => Promise<void>

Sets text right spacing print style

| Param | Type | | ------------- | ------------------------------- | | options | { value: number; } |


setRelativePositionPrintStyle(...)

setRelativePositionPrintStyle(options: { value: number; }) => Promise<void>

Sets relative position print style

| Param | Type | | ------------- | ------------------------------- | | options | { value: number; } |


setAbsolutePositionPrintStyle(...)

setAbsolutePositionPrintStyle(options: { value: number; }) => Promise<void>

Sets absolute position print style

| Param | Type | | ------------- | ------------------------------- | | options | { value: number; } |


setLineSpacingPrintStyle(...)

setLineSpacingPrintStyle(options: { value: number; }) => Promise<void>

Sets line spacing print style

| Param | Type | | ------------- | ------------------------------- | | options | { value: number; } |


setLeftSpacingPrintStyle(...)

setLeftSpacingPrintStyle(options: { value: number; }) => Promise<void>

Sets left spacing print style

| Param | Type | | ------------- | ------------------------------- | | options | { value: number; } |


setStrikethroughStylePrintStyle(...)

setStrikethroughStylePrintStyle(options: { value: number; }) => Promise<void>

Sets strikethrough style print style

| Param | Type | | ------------- | ------------------------------- | | options | { value: number; } |


SetLeftMargin(...)

SetLeftMargin(options: { width: number; }) => Promise<void>

Sets the left margin

| Param | Type | | ------------- | ------------------------------- | | options | { width: number; } |


SetPrintingAreaWidth(...)

SetPrintingAreaWidth(options: { width: number; }) => Promise<void>

Set printing area width

| Param | Type | | ------------- | ------------------------------- | | options | { width: number; } |


getPrinterMode()

getPrinterMode() => Promise<{ mode: PrinterModeEnum; code: number; }>

Get printer mode

Return value:

0 → General mode 1 → Black mark mode 2 → Label mode

Note: black mark mode currently is available for SUNMI T1, T2 desktop terminals; Label mode currently is available for SUNMI V2, V2 Pro handheld terminals.

Returns: Promise<{ mode: PrinterModeEnum; code: number; }>


isLabelMode()

isLabelMode() => Promise<{ label_mode: boolean; }>

Checks whether the printer is in label mode

Returns: Promise<{ label_mode: boolean; }>


getPrinterBBMDistance()

getPrinterBBMDistance() => Promise<{ distance: number; }>

Get paper moving distance set under black mark mode

Return value: paper moving distance (number of pixels)

Note: only available for T1, T2 devices.

Returns: Promise<{ distance: number; }>


setAlignment(...)

setAlignment(options: { alignment: AlignmentModeEnum; }) => Promise<void>

Set alignment mode.

Note: global method may influence the subsequent print implementation, and you can cancel the related settings when initializing the printer.

| Param | Type | | ------------- | ------------------------------------------------------------------------------- | | options | { alignment: AlignmentModeEnum; } |


setFontName(...)

setFontName(options: { typeface: string; }) => Promise<void>

Set custom print font.

typeface → specify the custom font name you’re about to use. Currently only vector font supported, and the font needs to be preset in the app assets directory.

Note 1: this interface can expand the default font type in the printer for you to use a custom font. However, you have to adjust the line spacing and line width due to the inconsistent inner width of each font.

Note 2: this interface is available for the printing service with versions above v4.14.0.

| Param | Type | | ------------- | ---------------------------------- | | options | { typeface: string; } |


setFontSize(...)

setFontSize(options: { size: number; }) => Promise<void>

Set font size.

Note: global method may influence the subsequent printing, and you can cancel this setting using printer initialization. The font size adopts the printing method exceeding the standard international commands, and the adjustment of font size may affect the character width, which leads to the change to the number of each line’s characters. So typography of monospaced fonts can be confusing some time.

| Param | Type | | ------------- | ------------------------------ | | options | { size: number; } |


setBold(...)

setBold(options: { enable: boolean; }) => Promise<void>

Set bold

| Param | Type | | ------------- | --------------------------------- | | options | { enable: boolean; } |


printText(...)

printText(options: { text: string; }) => Promise<void>

Print text.

text → text to be printed; automatic linefeed will be implemented when the text width exceeds one line, and the forced newline character "\n" shall be added at the end of one line when the text width is less than one line or exceeds one line but not meeting one line before being printed, or it will be cached.

Note: if you need to change the style of print text, such as alignment mode, font size, bold, etc., please set it before calling printText method.

| Param | Type | | ------------- | ------------------------------ | | options | { text: string; } |


printTextWithFont(...)

printTextWithFont(options: { text: string; typeface: string; size: number; }) => Promise<void>

Print text with designated font and size.

text → text to be printed; automatic linefeed will be implemented when the text width exceeds one line, and the forced newline character "\n" shall be added at the end of one line when the text width is less than one line or exceeds one line but not meeting one line before being printed, or it will be cached. Typeface → the custom font name. Currently only vector fonts are supported, and the font needs to be preset in the app assets directory. fontSize → font size; only available for this method.

Note: the font setting of this interface is available for the printing service with versions above v4.14.0.

| Param | Type | | ------------- | -------------------------------------------------------------- | | options | { text: string; typeface: string; size: number; } |


printOriginalText(...)

printOriginalText(options: { text: string; }) => Promise<void>

Print vector font.

text → text to be printed; automatic linefeed will be implemented when the text width exceeds one line, and the forced newline character "\n" shall be added at the end of one line when the text width is less than one line or exceeds one line but not meeting one line before being printed, or it will be cached.

Note: the text is printed according to the vector text width, which means that each character is not monospaced.

| Param | Type | | ------------- | ------------------------------ | | options | { text: string; } |


printColumnsText(...)

printColumnsText(options: { lines: { text: string; width: number; align: AlignmentModeEnum; }[]; }) => Promise<void>

Print a column of a table (Arabic characters are not supported)

colsTextArr → Array of column text strings. colsWidthArr → Array of each column width, calculated in English characters, and each Chinese character is equal to two English characters, with each width > 0. colsAlign → Alignment mode of each column: 0: left; 1: center; 2: right.

Note: the array length of the above three parameters should be consistent. If the width of colsText[i] is larger than that of colsWidth[i], the text will be changed to another line, and Arabic characters are not supported.

| Param | Type | | ------------- | ---------------------------------------------------------------------------------------------------------------------- | | options | { lines: { text: string; width: number; align: AlignmentModeEnum; }[]; } |


printColumnsString(...)

printColumnsString(options: { lines: { text: string; proportion: number; align: AlignmentModeEnum; }[]; }) => Promise<void>

Print a column of a table, and you can specify the column width and alignment mode.

olsTextArr → Array of column text strings. colsWidthArr → The width weight of each column is the proportion of each column. colsAlign → Alignment mode of each column: 0: left; 1: center; 2: right.

Note: the array length of the above three parameters should be consistent. If the width of colsText[i] is larger than that of colsWidth[i], the text will be changed to another line.

| Param | Type | | ------------- | --------------------------------------------------------------------------------------------------------------------------- | | options | { lines: { text: string; proportion: number; align: AlignmentModeEnum; }[]; } |


printBitmap(...)

printBitmap(options: { bitmap: string; }) => Promise<void>

Print an image

Note: the maximum pixel size of the image should be less than 2.5 million pixels of width x height, and the width should be set according to the size of paper specification (384 pixels for 58mm paper, and 576 pixels for 80mm paper). If it exceeds the width of the paper, it will not be displayed.

| Param | Type | | ------------- | -------------------------------- | | options | { bitmap: string; } |


printBitmapCustom(...)

printBitmapCustom(options: { bitmap: string; type: BitmapPrintTypeEnum; }) => Promise<void>

Print an image (2)

bitmap → image: bitmap object; the biggest width is 384 pixels, and the image can’t be printed when exceeding 1M. type → currently two printing methods are available: 0 → the same as printBitmap(); 1 → black and white image with a threshold of 200 2 → grayscale image

Note: the image resolution is less than 2 million pixels, and the width should be set according to the size of paper specification (384 pixels for 58mm paper, and 576 pixels for 80mm paper). If it exceeds the width of the paper, it will not be displayed.

Versions supported: v3.2.0 above for P1; v1.2.0 above for P14g; v3.2.0 above for V1s; v1.0.0 above for V2; v2.4.0 above for T1; v1.0.5 above for T2, S2; v2.4.1 above for T1mini; v1.0.0 above for T2mini.

| Param | Type | | ------------- | ---------------------------------------------------------------------------------------------- | | options | { bitmap: string; type: BitmapPrintTypeEnum; } |


printBarCode(...)

printBarCode(options: { content: string; symbology: BarcodeSymbologyEnum; height: number; width: number; text_position: BarcodeTextPositionEnum; }) => Promise<void>

Print a 1D barcode.

data → 1D barcode content symbology → barcode type (0 – 8): 0 → UPC-A 1 → UPC-E 2 → JAN13 (EAN13) 3 → JAN8 (EAN8) 4 → CODE39 5 → ITF 6 → CODABAR 7 → CODE 93 8 → CODE128 height → barcode height from 1 – 255, with default value of 162 width → barcode width from 2 – 6, with default value of 2 textPosition → text position (0 -3) 0 → not to print text 1 → text is above barcode 2 → text is below barcode 3 → print text above and below the barcode

Note: different barcode types have the following differences:

code39 A maximum of 13 digits can be printed code93 A maximum of 17 digits can be printed ean8 8 digits required, with the last one as a check digit, and the valid length of 8 digits ean13 The valid length consists of 13 digits, the last of which is a check digit ITF Require to enter number, with valid length less than 14 digits, and must be an even number Codebar Require to enter numbers from 0 – 9, with 6 special characters, and a maximum of 18 digits can be printed UPC-E 8 digits required, with the last one as a check digit UPC-A 12 digits required, with the last one as a check digit code128 Three types for Code128:

  • Type A: including uppercase letters, numbers, and punctuation marks;
  • Type B: uppercase letters, lowercase letters, and numbers;
  • Type C: pure digits, plural characters, and the last digit is ignored if it is a singular digit; The interface adopts type B code by default. To use type A and C codes, you need to add“{A” and “{C” before the content, for example, “{A2344A”,”{C123123”,”{A1A{B13B{C12”.

| Param | Type | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | options | { content: string; symbology: BarcodeSymbologyEnum; height: number; width: number; text_position: BarcodeTextPositionEnum; } |


printQRCode(...)

printQRCode(options: { content: string; size: number; error_correction?: number; }) => Promise<void>

Print a QR code.

data → QR barcode content modulesize → the size of QR barcode; unit: pixel; value from 4 to 16; errorlevel → barcode error correction level (0-3): 0 → error correction level L (7%) 1 → error correction level M (15%) 2 → error correction level Q (25%) 3 → error correction level H (30%)

Note: the printing content will be directly output after calling this method under normal printing status, and each barcode has 4 pixels (if the pixels are less than 4, the barcode scanning may fail). A maximum version19 (93*93) mode is supported.

| Param | Type | | ------------- | -------------------------------------------------------------------------- | | options | { content: string; size: number; error_correction?: number; } |


print2DCode(...)

print2DCode(options: { content: string; symbology: Barcode2DSymbologyEnum; size: number; error_correction: number; }) => Promise<void>

Print a 2D barcode.

data → 2D barcode content symbology → 2D barcode type 1 Qr (same as printQRCode interface) 2 PDF417 3 DataMatrix modulesize → the size of effective 2D barcode; the supported optimum barcode size varies according to different barcode types. Qr barcode: 4 – 16 (the same as printQRCode interface) PDF417: 1 – 4 DataMatrix: 4 – 16 errorlevel → 2D barcode error correction level; the supported level varies according to different barcode types. Qr barcode: 0 – 3 (same as printQRCode interface) PDF417: 0 – 8 DataMatrix: ECC200 auto error correction is adopted by default, and it cannot be modified.

Note: the printing content will be directly output after calling this method under normal printing status; this interface is available for versions above v4.1.2.

| Param | Type | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | options | { content: string; symbology: Barcode2DSymbologyEnum; size: number; error_correction: number; } |


enterPrinterBuffer(...)

enterPrinterBuffer(options?: { clean?: boolean | undefined; } | undefined) => Promise<void>

Enable transaction printing mode

clear → whether to clear the content in the buffer area

  • true → clear the content unsubmitted in the last transaction printing
  • false → not clear the content unsubmitted in the last transaction printing, which will be included in the next submission

Note:

  1. After enabling transaction printing mode, the printer won’t print the data immediately under this mode, until you submit transaction or disable submitting transaction;
  2. Transaction printing mode is available for all devices except for V1 model.

| Param | Type | | ------------- | --------------------------------- | | options | { clean?: boolean; } |


exitPrinterBuffer(...)

exitPrinterBuffer(options?: { commit?: boolean | undefined; } | undefined) => Promise<void>

Disable transaction printing mode

commit → whether to print the content in the buffer area;

  • true → the printer will print all the contents in the transaction queue;
  • false → the printer will not print all the contents in the transaction queue, which will be saved for the next submission

Note: transaction printing mode is available for all devices except for V1 model.

| Param | Type | | ------------- | ---------------------------------- | | options | { commit?: boolean; } |


exitPrinterBufferWithCallback(...)

exitPrinterBufferWithCallback(options?: { commit?: boolean | undefined; } | undefined) => Promise<void>

Disable transaction printing mode and call back result

commit → whether to print the content in the buffer area;

  • true → the printer will print all the contents in the transaction queue;
  • false → the printer will not print all the contents in the transaction queue, which will be saved for the next submission

Note: transaction printing mode is available for all devices except for V1 model.

| Param | Type | | ------------- | ---------------------------------- | | options | { commit?: boolean; } |


commitPrinterBuffer()

commitPrinterBuffer() => Promise<void>

Submit transaction printing

Note:

  1. Submit all the contents in the transaction queue and print all. The printer remains in the transaction printing mode;
  2. Transaction printing mode is available for all devices except for V1 model.

commitPrinterBufferWithCallback()

commitPrinterBufferWithCallback() => Promise<void>

Submit transaction printing and call back result

Note: transaction printing mode is available for all devices except for V1 model.


lineWrap(...)

lineWrap(options?: { lines?: number | undefined; } | undefined) => Promise<void>

The printer moves the paper for n lines

Note: forced linefeed is adopted, and the printer will move the paper for n lines after completing the previous printing.

| Param | Type | | ------------- | -------------------------------- | | options | { lines?: number; } |


cutPaper()

cutPaper() => Promise<void>

Paper cutting

Note: there’s some distance between printhead and cutter, which will be automatically complemented by calling the interface.

Note: Only available for desktop terminals with cutter function.


getCutPaperTimes()

getCutPaperTimes() => Promise<{ times: number; }>

Get the cutter’s cumulative cutting times

Note: Only available for desktop terminals with cutter function.

Returns: Promise<{ times: number; }>


openDrawer()

openDrawer() => Promise<void>

Open the cash drawer

Note: Only available for desktop terminals with cash drawer function.


getOpenDrawerTimes()

getOpenDrawerTimes() => Promise<{ times: number; }>

Get the cumulative open times of the cash drawer

Note: Only available for desktop terminals with cash drawer function.

Returns: Promise<{ times: number; }>


getDrawerStatus()

getDrawerStatus() => Promise<{ opened: boolean; }>

Get the current status of the cash drawer

Note 1: you can get the cash drawer status of some models with cash drawer function by calling this interface.

Note 2: this interface is only available for device models of S2, T2, and T2mini with versions above v4.0.0.

Returns: Promise<{ opened: boolean; }>


getForcedDouble()

getForcedDouble() => Promise<{ status: number; }>

Get global font height and width status

Note: currently, these interfaces, except ‘get print density’ interface, are only available for handheld terminals of models V1, V1s, and P1 with versions above v3.2.0, and model P14g with versions above v1.2.0.

Returns: Promise<{ status: number; }>


isForcedAntiWhite()

isForcedAntiWhite() => Promise<{ status: boolean; }>

Get global font anti-white style enabled

Note: currently, these interfaces, except ‘get print density’ interface, are only available for handheld terminals of models V1, V1s, and P1 with versions above v3.2.0, and model P14g with versions above v1.2.0.

Returns: Promise<{ status: boolean; }>


isForcedBold()

isForcedBold() => Promise<{ status: boolean; }>

Get global font bold style enabled

Note: currently, these interfaces, except ‘get print density’ interface, are only available for handheld terminals of models V1, V1s, and P1 with versions above v3.2.0, and model P14g with versions above v1.2.0.

Returns: Promise<{ status: boolean; }>


isForcedUnderline()

isForcedUnderline() => Promise<{ status: boolean; }>

Get global font underline style enabled

Note: currently, these interfaces, except ‘get print density’ interface, are only available for handheld terminals of models V1, V1s, and P1 with versions above v3.2.0, and model P14g with versions above v1.2.0.

Returns: Promise<{ status: boolean; }>


getForcedRowHeight()

getForcedRowHeight() => Promise<{ height: number; }>

Get global line height set value

Note: currently, these interfaces, except ‘get print density’ interface, are only available for handheld terminals of models V1, V1s, and P1 with versions above v3.2.0, and model P14g with versions above v1.2.0.

Returns: Promise<{ height: number; }>


getFontName()

getFontName() => Promise<{ font: number; }>

Get current font used

Note: currently, these interfaces, except ‘get print density’ interface, are only available for handheld terminals of models V1, V1s, and P1 with versions above v3.2.0, and model P14g with versions above v1.2.0.

Returns: Promise<{ font: number; }>


getPrinterDensity()

getPrinterDensity() => Promise<{ density: number; }>

Get print density

Returns: Promise<{ density: number; }>


sendLCDCommand(...)

sendLCDCommand(options: { command: LcdCommandEnum; }) => Promise<void>

Send control commands

parameter: flag → 1. Initialization; 2. Wake up LCD; 3. LCD hibernation; 4. Clear screen

Note: only available for desktop terminals of mini series with customer display function.

| Param | Type | | ------------- | ----------------------------------------------------------------------- | | options | { command: LcdCommandEnum; } |


sendLCDInitializationCommand()

sendLCDInitializationCommand() => Promise<void>

Send initialization command


sendLCDWakeUpCommand()

sendLCDWakeUpCommand() => Promise<void>

Send wake up command


sendLCDHibernateCommand()

sendLCDHibernateCommand() => Promise<void>

Send hibernation command


sendLCDClearCommand()

sendLCDClearCommand() => Promise<void>

Send clear command


sendLCDString(...)

sendLCDString(options: { text: string; }) => Promise<void>

Send single line text

string → the text to be displayed

Note: only available for desktop terminals of mini series with customer display function, and it won’t be displayed if the text is too long.

| Param | Type | | ------------- | ------------------------------ | | options | { text: string; } |


sendLCDDoubleString(...)

sendLCDDoubleString(options: { top: string; bottom: string; }) => Promise<void>

Send double lines text

topText → display the top text bottomText → display the bottom text

Note: only available for desktop terminals of mini series with customer display function, and it won’t be displayed if the text is too long.

| Param | Type | | ------------- | --------------------------------------------- | | options | { top: string; bottom: string; } |


sendLCDMultiString(...)

sendLCDMultiString(options: { lines: { text: string; proportion: number; }[]; }) => Promise<void>

Send multiple lines text, and each line’s content will be automatically sized based on its weight

text → arrays displaying the text of each line. You need to confirm the line number according to array element. If a line is empty, no text will be displayed align → The weight ratio of the area occupied by each line of text, and the size of array elements must be the same size as the text array

Note: only available for desktop terminals of mini series with customer display function, with versions above v4.0.0. It won’t be displayed if the text is too long.

| Param | Type | | ------------- | ---------------------------------------------------------------- | | options | { lines: { text: string; proportion: number; }[]; } |


sendLCDFillString(...)

sendLCDFillString(options: { text: string; size: number; fill: boolean; }) => Promise<void>

Send single line text (font size and filling method can be customized for the text)

string → text to be displayed size → the font size of the text to be displayed, center by default fill → whether to magnify the font to fill the display area

Note: only available for desktop terminals of mini series with customer display function, with versions above v4.0.0. It won’t be displayed if the text is too long.

| Param | Type | | ------------- | ----------------------------------------------------------- | | options | { text: string; size: number; fill: boolean; } |


sendLCDBase64Bitmap(...)

sendLCDBase64Bitmap(options: { bitmap: string; }) => Promise<void>

Send bitmap image

bitmap → the image to be displayed

Note: only available for desktop terminals of mini series with customer display function, and the customer display can only display the image with the maximum pixel of 128*40.

| Param | Type | | ------------- | -------------------------------- | | options | { bitmap: string; } |


sendLCDAsciiBitmap(...)

sendLCDAsciiBitmap(options: { bitmap: string; }) => Promise<void>

Send ascii bitmap image

| Param | Type | | ------------- | -------------------------------- | | options | { bitmap: string; } |


sendLCDBarcode(...)

sendLCDBarcode(options: { content: string; format?: LcdBarcodeFormatEnum; }) => Promise<void>

Prints barcode on the customer display

| Param | Type | | ------------- | ---------------------------------------------------------------------------------------------------- | | options | { content: string; format?: LcdBarcodeFormatEnum; } |


labelLocate()

labelLocate() => Promise<void>

Locate the next label

You can only implement the location output operation specific to the label by calling the label interfaces, while the label content needs to be customized by yourself according to your own needs, like the operation of thermal printing.

Please note that the height of printing content shall be within the label paper, or the printing content may exceed the label paper, which can result in printing to the next label or inaccurate location of the next label.

If you use a label paper with 30mm height, you can print the content with 240 pixels (30mm x 8 pixels), and the printer defaults to 32 pixels of line spacing, which allows you to print about 8 lines of text or a 384x240 image.

After printing the content, you can choose to implement labelLocate and print the content circularly according to your own needs.

If you don’t need to print any more, you can implement labelOutput(), which can output the label to the paper cutting position, facilitating you to add other APIs according to needs to design your own label content.

Note: You need to locate the label position every time before sending the printing content


labelOutput()

labelOutput() => Promise<void>

Output the label to the paper cutting position


addListener('onPrinterStatusUpdated', ...)

addListener(eventName: 'onPrinterStatusUpdated', listenerFunc: (event: { status: PrinterStatusEventEnum; broadcast?: string; }) => void) => Promise<PluginListenerHandle>

Listens for printer status changed events.

| Param | Type | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | | eventName | 'onPrinterStatusUpdated' | | listenerFunc | (event: { status: PrinterStatusEventEnum; broadcast?: string; }) => void |

Returns: Promise<PluginListenerHandle>


removeAllListeners()

removeAllListeners() => Promise<void>

Removes all listeners


Interfaces

PluginListenerHandle

| Prop | Type | | ------------ | ----------------------------------------- | | remove | () => Promise<void> |

Enums

ServiceStatusEnum

| Members | Value | | ------------------- | --------------------------- | | NO_PRINTER | "NoPrinter" | | CHECK_PRINTER | "CheckPrinter" | | FOUND_PRINTER | "FoundPrinter" | | LOST_PRINTER | "LostPrinter" |

PrinterStatusEnum

| Members | Value | | ----------------------------- | ------------------------------------ | | NORMAL_OPERATION | 'NormalOperation' | | UNDER_PREPARATION | 'UnderPreparation' | | ABNORMAL_COMMUNICATION | 'AbnormalCommunication' | | OUT_OF_PAPER | 'OutOfPaper' | | OVERHEATED | 'Overheated' | | COVER_IS_OPEN | 'CoverIsOpen' | | CUTTER_ERROR | 'CutterError' | | CUTTER_RECOVERED | 'CutterRecovered' | | BLACK_MARK_NOT_DETECTED | 'BlackMarkNotDetected' | | PRINTER_NOT_DETECTED | 'PrinterNotDetected' | | FIRMWARE_UPDATE_FAILED | 'FirmwareUpdateFailed' | | UNKNOWN | 'Unknown' |

PrinterStyleKeysEnum

| Members | Value | | ----------------------------- | ------------------------------------ | | ENABLE_DOUBLE_WIDTH | "EnableDoubleWidth" | | ENABLE_DOUBLE_HEIGHT | "EnableDoubleHeight" | | ENABLE_BOLD | "EnableBold" | | ENABLE_UNDERLINE | "EnableUnderline" | | ENABLE_ANTI_WHITE | "EnableAntiWhite" | | ENABLE_STRIKETHROUGH | "EnableStrikethrough" | | ENABLE_ITALIC | "EnableItalic" | | ENABLE_INVERT | "EnableInvert" | | SET_TEXT_RIGHT_SPACING | "SetTextRightSpacing" | | SET_RELATIVE_POSITION | "SetRelativePosition" | | SET_ABSOLUTE_POSITION | "SetAbsolutePosition" | | SET_LINE_SPACING | "SetLineSpacing" | | SET_LEFT_SPACING | "SetLeftSpacing" | | SET_STRIKETHROUGH_STYLE | "SetStrikethroughStyle" |

PrinterStyleValuesEnum

| Members | Value | | ------------- | ---------------------- | | ENABLE | "Enable" | | DISABLE | "Disable" |

PrinterModeEnum

| Members | Value | | ---------------- | ------------------------ | | GENERAL | "General" | | BLACK_MARK | "BlackMark" | | LABEL | "Label" | | UNKNOWN | "Unknown" |

AlignmentModeEnum

| Members | Value | | ------------ | --------------------- | | LEFT | "left" | | CENTER | "center" | | RIGHT | "right" |

BitmapPrintTypeEnum

| Members | Value | | --------------------- | ---------------------------- | | DEFAULT | "Default" | | BLACK_AND_WHITE | "blackAndWhite" | | GRAYSCALE | "Grayscale" |

BarcodeSymbologyEnum

| Members | Value | | -------------- | ----------------------- | | UPC_A | "UPC_A" | | UPC_E | "UPC_E" | | EAN_13 | "EAN_13" | | EAN_8 | "EAN_8" | | CODE_39 | "CODE_39" | | ITF | "ITF" | | CODABAR | "CODABAR" | | CODE_93 | "CODE_93" | | CODE_128 | "CODE_128" |

BarcodeTextPositionEnum

| Members | Value | | --------------------- | ---------------------------- | | NO_TEXT | "NoText" | | ABOVE | "Above" | | BELOW | "Below" | | ABOVE_AND_BELOW | "AboveAndBelow" |

Barcode2DSymbologyEnum

| Members | Value | | ---------------- | -------------------------- | | QR_CODE | "QR_CODE" | | PDF417 | "PDF417" | | DataMatrix | "DATA_MATRIX" |

LcdCommandEnum

| Members | Value | | -------------------- | ----------------------------- | | INITIALIZATION | "Initialization" | | WAKE_UP | "WakeUp" | | HIBERNATE | "Hibernate" | | CLEAR | "Clear" |

LcdBarcodeFormatEnum

| Members | Value | | -------------- | ----------------------- | | UPC_A | "UPC_A" | | UPC_E | "UPC_E" | | EAN_13 | "EAN_13" | | EAN_8 | "EAN_8" | | CODE_39 | "CODE_39" | | ITF | "ITF" | | CODABAR | "CODABAR" | | CODE_93 | "CODE_93" | | CODE_128 | "CODE_128" | | QR_CODE | "QR_CODE" |

PrinterStatusEventEnum

| Members | Value | Description | | ----------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | UNDER_PREPARATION | "UnderPreparation" | Printer is under preparation. see woyou.aidlservice.jiuv5.INIT_ACTION in documentation. | | NORMAL_OPERATION | "NormalOperation" | Printing is ready. see woyou.aidlservice.jiuv5.NORMAL_ACTION in documentation. | | PRINTING_ERROR | "PrintingError" | Printing error. see woyou.aidlservice.jiuv5.ERROR_ACTION in documentation. | | OUT_OF_PAPER | "OutOfPaper" | Out of paper. see woyou.aidlservice.jiuv5.OUT_OF_PAPER_ACTION in documentation. | | OVERHEATED | "Overheated" | Printhead is overheated. see woyou.aidlservice.jiuv5.OVER_HEATING_ACITON in documentation. | | NORMAL_HEAT | "NormalHeat" | Printhead temperature back to normal. see woyou.aidlservice.jiuv5.NORMAL_HEATING_ACITON in documentation. | | COVER_IS_OPEN | "CoverIsOpen" | Cover open. see woyou.aidlservice.jiuv5.COVER_OPEN_ACTION in documentation. | | COVER_ERROR | "CoverError" | Cover closing exception. see woyou.aidlservice.jiuv5.COVER_ERROR_ACTION in documentation. | | CUTTER_ERROR | "CutterError" | Cutter exception 1 – cutter stuck. see woyou.aidlservice.jiuv5.KNIFE_ERROR_ACTION_1 in documentation. | | CUTTER_RECOVERED | "CutterRecovered" | Cutter exception 2 – cutter back to normal. see woyou.aidlservice.jiuv5.KNIFE_ERROR_ACTION_2 in documentation. | | FIRMWARE_UPDATING | "FirmwareUpdating" | Printer firmware updating. see woyou.aidlservice.jiuv5.FIRMWARE_UPDATING_ACITON in documentation. | | FIRMWARE_UPDATE_FAILED | "FirmwareUpdateFailed" | Printer firmware updating failed. see woyou.aidlservice.jiuv5.FIRMWARE_FAILURE_ACITON in documentation. | | PRINTER_NOT_DETECTED | "PrinterNotDetected" | Printer not detected. see woyou.aidlservice.jiuv5.PRINTER_NON_EXISTENT_ACITON in documentation. | | BLACK_MARK_NOT_DETECTED | "BlackMarkNotDetected" | Black mark not detected. see woyou.aidlservice.jiuv5.BLACKLABEL_NON_EXISTENT_ACITON in documentation. |