本文档详细描述了 react-native-printer-imin 的所有API接口。
初始化打印机。
initPrinter(): Promise<string>返回值: Promise - 初始化结果消息
示例:
try {
const result = await PrinterImin.initPrinter();
console.log('初始化成功:', result);
} catch (error) {
console.error('初始化失败:', error);
}获取打印机当前状态。
getPrinterStatus(): Promise<{code: number, message: string}>返回值:
code: 状态码 (0表示正常)message: 状态描述信息
示例:
const status = await PrinterImin.getPrinterStatus();
if (status.code === 0) {
console.log('打印机正常:', status.message);
} else {
console.error('打印机异常:', status.message);
}监听打印机状态广播。
receiveBroadcastStream: {
listen(callback: (payload: {eventName: string, eventData: any}) => void): () => void
}参数:
callback: 回调函数,接收广播数据
返回值: 取消监听的函数
示例:
const unsubscribe = PrinterImin.receiveBroadcastStream.listen((payload) => {
console.log('事件名:', payload.eventName);
console.log('事件数据:', payload.eventData);
});
// 取消监听
unsubscribe();打印文本内容。
printText(text: string, style?: IminTextStyle): Promise<void>参数:
text: 要打印的文本style: 可选的文本样式
IminTextStyle接口:
interface IminTextStyle {
wordWrap?: boolean; // 是否自动换行
fontSize?: number; // 字体大小
space?: number; // 行间距
width?: number; // 文本宽度
typeface?: IminTypeface; // 字体类型
fontStyle?: IminFontStyle; // 字体样式
align?: IminPrintAlign; // 对齐方式
}示例:
// 基础文本打印
await PrinterImin.printText('Hello World');
// 带样式的文本打印
await PrinterImin.printText('标题文本', {
fontSize: 32,
align: IminPrintAlign.center,
fontStyle: IminFontStyle.bold
});打印反白文本(黑底白字)。
printAntiWhiteText(text: string, style?: IminTextStyle): Promise<void>参数: 与 printText() 相同
示例:
await PrinterImin.printAntiWhiteText('重要提示', {
fontSize: 24,
align: IminPrintAlign.center
});设置文本大小。
setTextSize(size: number): Promise<void>设置字体类型。
setTextTypeface(typeface: IminTypeface): Promise<void>设置字体样式。
setTextStyle(style: IminFontStyle): Promise<void>设置对齐方式。
setAlignment(align: IminPrintAlign): Promise<void>设置行间距。
setTextLineSpacing(spacing: number): Promise<void>设置文本宽度。
setTextWidth(width: number): Promise<void>打印单张图片。
printSingleBitmap(uri: string, pictureStyle?: IminPictureStyle): Promise<void>参数:
uri: 图片URL或本地路径pictureStyle: 可选的图片样式
IminPictureStyle接口:
interface IminPictureStyle {
width?: number; // 图片宽度
height?: number; // 图片高度
align?: IminPrintAlign; // 对齐方式
}示例:
// 基础图片打印
await PrinterImin.printSingleBitmap('https://example.com/logo.png');
// 带样式的图片打印
await PrinterImin.printSingleBitmap('https://example.com/logo.png', {
width: 200,
height: 100,
align: IminPrintAlign.center
});打印多张图片。
printMultiBitmap(imgs: string[], pictureStyle?: IminPictureStyle): Promise<void>参数:
imgs: 图片URL数组pictureStyle: 可选的图片样式
打印反白图片。
printSingleBitmapBlackWhite(uri: string, baseStyle?: IminBaseStyle): Promise<void>打印二维码。
printQrCode(data: string, qrCodeStyle?: IminQrCodeStyle): Promise<void>参数:
data: 二维码内容qrCodeStyle: 可选的二维码样式
IminQrCodeStyle接口:
interface IminQrCodeStyle {
qrSize?: number; // 二维码大小
align?: IminPrintAlign; // 对齐方式
leftMargin?: number; // 左边距
errorCorrectionLevel?: IminQrcodeCorrectionLevel; // 纠错级别
}示例:
await PrinterImin.printQrCode('https://www.example.com', {
qrSize: 6,
align: IminPrintAlign.center,
errorCorrectionLevel: IminQrcodeCorrectionLevel.levelH
});打印双二维码。
printDoubleQR(
qrCode1: IminDoubleQRCodeStyle,
qrCode2: IminDoubleQRCodeStyle,
doubleQRSize: number
): Promise<void>IminDoubleQRCodeStyle接口:
interface IminDoubleQRCodeStyle {
text: string; // 二维码内容
level?: number; // 误差等级
leftMargin?: number; // 左边距
version?: number; // 版本
}setQrCodeSize(qrSize: number): Promise<void>setLeftMargin(margin: number): Promise<void>setQrCodeErrorCorrectionLev(level: IminQrcodeCorrectionLevel): Promise<void>打印条形码。
printBarCode(
barCodeType: IminBarcodeType,
barCodeContent: string,
style?: IminBarCodeStyle
): Promise<void>参数:
barCodeType: 条形码类型barCodeContent: 条形码内容style: 可选的条形码样式
IminBarCodeStyle接口:
interface IminBarCodeStyle {
width?: number; // 条形码宽度
height?: number; // 条形码高度
position?: IminBarcodeTextPos; // 文本位置
align?: IminPrintAlign; // 对齐方式
}示例:
await PrinterImin.printBarCode(
IminBarcodeType.code128,
'1234567890',
{
width: 2,
height: 100,
position: IminBarcodeTextPos.belowText,
align: IminPrintAlign.center
}
);setBarCodeWidth(width: number): Promise<void>setBarCodeHeight(height: number): Promise<void>setBarCodeContentPrintPos(position: IminBarcodeTextPos): Promise<void>打印表格/列文本。
printColumnsText(cols: ColumnMaker[]): Promise<void>ColumnMaker接口:
interface ColumnMaker {
text: string; // 列内容
width: number; // 列宽度
align: IminPrintAlign; // 对齐方式
fontSize: number; // 字体大小
}示例:
await PrinterImin.printColumnsText([
{
text: '商品名称',
width: 3,
fontSize: 20,
align: IminPrintAlign.left
},
{
text: '数量',
width: 1,
fontSize: 20,
align: IminPrintAlign.center
},
{
text: '价格',
width: 2,
fontSize: 20,
align: IminPrintAlign.right
}
]);走纸一行。
printAndLineFeed(): Promise<void>走纸指定高度。
printAndFeedPaper(height: number): Promise<void>参数:
height: 走纸高度 (1-1016)
设置纸张规格。
setPageFormat(style?: number): Promise<void>参数:
style: 纸张规格 (0-80mm, 1-58mm)
切纸(仅支持带切刀的设备)。
partialCut(): Promise<void>打开钱箱。
openCashBox(): Promise<void>重置打印机。
resetDevice(): Promise<void>设置初始化打印机。
setInitIminPrinter(isDefault: boolean): Promise<void>getPrinterSerialNumber(): Promise<string>getPrinterModelName(): Promise<string>getPrinterFirmwareVersion(): Promise<string>getPrinterHardwareVersion(): Promise<string>getPrinterDensity(): Promise<number>
setPrinterDensity(density: number): Promise<void>getPrinterSpeed(): Promise<number>
setPrinterSpeed(speed: number): Promise<void>enterPrinterBuffer(isClean: boolean): Promise<void>commitPrinterBuffer(): Promise<void>exitPrinterBuffer(isCommit: boolean): Promise<void>printTextBitmap(text: string, style?: IminTextPictureStyle): Promise<void>IminTextPictureStyle接口:
interface IminTextPictureStyle {
wordWrap?: boolean;
fontSize?: number;
typeface?: IminTypeface;
fontStyle?: IminFontStyle;
align?: IminPrintAlign;
letterSpacing?: number;
underline?: boolean;
throughline?: boolean;
lineHeight?: number;
reverseWhite?: boolean;
}初始化标签画布。
labelInitCanvas(labelCanvasStyle: LabelCanvasStyle): Promise<void>添加文本到标签。
labelAddText(labelTextStyle: LabelTextStyle): Promise<void>添加条形码到标签。
labelAddBarCode(labelBarCodeStyle: LabelBarCodeStyle): Promise<void>添加二维码到标签。
labelAddQrCode(labelQrCodeStyle: LabelQrCodeStyle): Promise<void>添加图片到标签。
labelAddBitmap(labelBitmapStyle: LabelBitmapStyle): Promise<void>打印标签画布。
labelPrintCanvas(printCount: number): Promise<{result: string, resultCode: number}>enum IminPrintAlign {
left = 0,
center = 1,
right = 2
}enum IminFontStyle {
normal = 0,
bold = 1,
italic = 2,
boldItalic = 3
}enum IminTypeface {
Default = 0,
Monospace = 1,
DefaultBold = 2,
SansSerif = 3,
Serif = 4
}enum IminQrcodeCorrectionLevel {
levelL = 48,
levelM = 49,
levelQ = 50,
levelH = 51
}enum IminBarcodeType {
upcA = 0,
upcE = 1,
jan13 = 2,
jan8 = 3,
code39 = 4,
itf = 5,
codabar = 6,
code93 = 7,
code128 = 8
}enum IminBarcodeTextPos {
none = 0,
aboveText = 1,
belowText = 2,
both = 3
}开启/关闭调试日志。
openLogs(open: number): Promise<void>参数:
open: 1-开启, 0-关闭
发送原始十六进制数据。
sendRAWDataHexStr(byteStr: string): Promise<void>所有API方法都返回Promise,可以使用try-catch进行错误处理:
try {
await PrinterImin.printText('测试文本');
} catch (error) {
console.error('打印失败:', error);
// 检查具体错误类型
if (error.toString().includes('paper')) {
// 处理缺纸错误
} else if (error.toString().includes('temperature')) {
// 处理过热错误
}
}- SDK 1.0: 基础打印功能
- SDK 2.0: 包含所有1.0功能 + 标签打印 + 高级设备控制
使用 PrinterImin.version 检查当前SDK版本。