flutter_jc_printer_plugin/ios/Classes/JcPrinterPlugin.m
2023-10-24 15:20:03 +08:00

192 lines
7.4 KiB
Objective-C

#import "JcPrinterPlugin.h"
#import <JCPrinterSDK/JCPrinterSDK.h>
@implementation JcPrinterPlugin
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
FlutterMethodChannel* channel = [FlutterMethodChannel methodChannelWithName:@"jc_printer" binaryMessenger:[registrar messenger]];
JcPrinterPlugin* instance = [[JcPrinterPlugin alloc] init];
[registrar addMethodCallDelegate:instance channel:channel];
FlutterEventChannel* eventChannel = [FlutterEventChannel eventChannelWithName:@"printer_stream" binaryMessenger:[registrar messenger]];
[eventChannel setStreamHandler:instance];
}
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
// NSLog(@"arguments is :%@", call.arguments);
[self printingCount];
[self errorInfo];
if ([@"getPlatformVersion" isEqualToString:call.method]) {
result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);
} else if ([@"connect" isEqualToString:call.method]) {
[self connect:call.arguments];
result(nil);
} else if ([@"disconnect" isEqualToString:call.method]) {
[self disconnect];
result(nil);
} else if ([@"setTotalPrints" isEqualToString:call.method]) {
[self setTotalPrints:call.arguments];
result(nil);
} else if ([@"initDrawingBoard" isEqualToString:call.method]) {
[self initDrawingBoard:call.arguments result:result];
} else if ([@"drawLabelImage" isEqualToString:call.method]) {
[self drawLabelImage:call.arguments result:result];
} else if ([@"drawLabelText" isEqualToString:call.method]) {
[self drawLabelText:call.arguments result:result];
} else if ([@"drawLabelBarcode" isEqualToString:call.method]) {
[self drawLabelBarcode:call.arguments result:result];
} else if ([@"getLabelData" isEqualToString:call.method]) {
[self getLabelData:result];
} else if ([@"startJob" isEqualToString:call.method]) {
[self startJob:call.arguments result:result];
} else if ([@"endJob" isEqualToString:call.method]) {
[self endJob:result];
} else if ([@"commit" isEqualToString:call.method]) {
[self commit:call.arguments result:result];
} else {
result(FlutterMethodNotImplemented);
}
}
- (void) disconnect {
[JCAPI closePrinter];
}
- (void) setTotalPrints:(NSString *)args {
NSInteger page = [args integerValue];
[JCAPI setTotalQuantityOfPrints:page];
}
- (void)initDrawingBoard:(NSDictionary *)args result:(FlutterResult)result {
NSNumber *width = args[@"width"];
NSNumber *height = args[@"height"];
NSNumber *horizontalShift = args[@"horizontalShift"];
NSNumber *verticalShift = args[@"verticalShift"];
NSNumber *rotate = args[@"rotate"];
NSString *font = args[@"font"];
[JCAPI initDrawingBoard:width.floatValue withHeight:height.floatValue withHorizontalShift:horizontalShift.floatValue withVerticalShift:verticalShift.floatValue rotate:rotate.intValue font:font];
result(nil);
}
- (void)drawLabelImage:(NSDictionary *)args result:(FlutterResult)result {
NSNumber *x = args[@"x"];
NSNumber *y = args[@"y"];
NSNumber *width = args[@"width"];
NSNumber *height = args[@"height"];
NSNumber *rotate = args[@"rotate"];
NSNumber *type = args[@"type"];
NSNumber *threshold = args[@"threshold"];
NSString *base64 = args[@"base64"];
BOOL isSuccess = [JCAPI DrawLableImage:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withImageData:base64 withRotate:rotate.intValue withImageProcessingType:type.intValue withImageProcessingValue:threshold.floatValue];
result(@(isSuccess));
}
- (void)drawLabelText:(NSDictionary *)args result:(FlutterResult)result {
NSNumber *x = args[@"x"];
NSNumber *y = args[@"y"];
NSNumber *width = args[@"width"];
NSNumber *height = args[@"height"];
NSNumber *fontSize = args[@"fontSize"];
NSNumber *rotate = args[@"rotate"];
NSNumber *textAlignHorizontal = args[@"textAlignHorizontal"];
NSNumber *textAlignVertical = args[@"textAlignVertical"];
NSNumber *lineMode = args[@"lineMode"];
NSNumber *letterSpacing = args[@"letterSpacing"];
NSNumber *lineSpacing = args[@"lineSpacing"];
NSString *content = args[@"content"];
BOOL isSuccess = [JCAPI drawLableText:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withString:content withFontFamily:@"" withFontSize:fontSize.floatValue withRotate:rotate.intValue withTextAlignHorizonral:textAlignHorizontal.intValue withTextAlignVertical:textAlignVertical.intValue withLineMode:lineMode.intValue withLetterSpacing:letterSpacing.floatValue withLineSpacing:lineSpacing.floatValue withFontStyle:@[@0,@0,@0,@0]];
result(@(isSuccess));
}
- (void)drawLabelBarcode:(NSDictionary *)args result:(FlutterResult)result {
NSNumber *x = args[@"x"];
NSNumber *y = args[@"y"];
NSNumber *width = args[@"width"];
NSNumber *height = args[@"height"];
NSNumber *fontSize = args[@"fontSize"];
NSNumber *rotate = args[@"rotate"];
NSNumber *codeType = args[@"codeType"];
NSNumber *textPosition = args[@"textPosition"];
NSNumber *textHeight = args[@"textHeight"];
NSString *text = args[@"text"];
BOOL isSuccess = [JCAPI drawLableBarCode:x.floatValue withY:y.floatValue withWidth:width.floatValue withHeight:height.floatValue withString:text withFontSize:fontSize.floatValue withRotate:rotate.intValue withCodeType:codeType.intValue withTextHeight:textHeight.floatValue withTextPosition:textPosition.intValue];
result(@(isSuccess));
}
- (void)getLabelData:(FlutterResult)result {
NSString *data = [JCAPI GenerateLableJson];
result(data);
}
- (void)startJob:(NSDictionary *)args result:(FlutterResult)result {
NSNumber *blackRules = args[@"blackRules"];
NSNumber *paperStyle = args[@"paperStyle"];
[JCAPI startJob:blackRules.intValue withPaperStyle:paperStyle.intValue withCompletion:^(BOOL isSuccess) {
result(@(isSuccess));
}];
}
- (void)commit:(NSDictionary *)args result:(FlutterResult)result {
NSString *data = args[@"data"];
NSNumber *count = args[@"count"];
[JCAPI commit:data withOnePageNumbers:count.intValue withComplete:^(BOOL isSuccess) {
result(@(isSuccess));
}];
}
- (void)endJob:(FlutterResult)result {
[JCAPI endPrint:^(BOOL isSuccess) {
result(@(isSuccess));
}];
}
#pragma mark - FlutterStreamHandler
- (FlutterError *)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink)events {
self.eventSink = events;
return nil;
}
- (FlutterError *)onCancelWithArguments:(id)arguments {
return nil;
}
- (void)connect:(NSString *)name {
[JCAPI openPrinter:name completion:^(BOOL isSuccess) {
NSDictionary *params = @{
@"type": @"connectState",
@"result": @(isSuccess),
};
!self.eventSink ? : self.eventSink(params);
}];
}
-(void)errorInfo {
[JCAPI getPrintingErrorInfo:^(NSString *printInfo) {
NSDictionary *params = @{
@"type": @"errorInfo",
@"result": printInfo,
};
!self.eventSink ? : self.eventSink(params);
}];
}
- (void)printingCount {
[JCAPI getPrintingCountInfo:^(NSDictionary *printDicInfo) {
NSDictionary *params = @{
@"type": @"printingCount",
@"result": printDicInfo,
};
!self.eventSink ? : self.eventSink(params);
}];
}
@end