我在Web视图中使用jsPDF生成要在连接的USB标签打印机上打印的PDF。我收到“无法识别的选择器发送到实例”错误。
这是来自Xcode控制台的错误:
-[__NSCFString bytes]: unrecognized selector sent to instance 0x1089cb868
这是供参考的功能:
- (void) printPDFwithPrinter: (NSString *) printerName andData: (NSData *) data{
NSLog(@"%@", printerName);
PDFDocument *pdfDocument = [[PDFDocument alloc] initWithData:data];
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
[printInfo setTopMargin:0.0];
[printInfo setBottomMargin:0.0];
[printInfo setLeftMargin:0.0];
[printInfo setRightMargin:0.0];
[printInfo setHorizontalPagination:NSFitPagination];
[printInfo setVerticalPagination:NSFitPagination];
[printInfo setPrinter:[NSPrinter printerWithName:printerName]];
PDFPrintScalingMode scale = kPDFPrintPageScaleDownToFit;
NSPrintOperation *op = [pdfDocument printOperationForPrintInfo: printInfo scalingMode: scale autoRotate: YES];
[op setShowsPrintPanel:NO];
[op setShowsProgressPanel:NO];
[op runOperation];
}
pdf数据是pdf主体作为字符串的原始输出。 (Docs)
我是Objective-C的新手,因此我在Native / webview桥中使用AppBurger(在HTML / JS / CSS中构建应用)。
到目前为止,这是我的Xcode项目:
https://github.com/josiaho/AppBurger-Print-Test
最佳答案
如何调试:
在行上添加断点
PDFDocument * pdfDocument = [[PDFDocument分配] initWithData:data];
测试应用程序。当应用程序达到断点时,检查data
。data
是NSString
,initWithData:
期望NSData
。
怎么修:
改名- (void) printPDFwithPrinter: (NSString *) printerName andData: (NSData *) data
至- (void) printPDFwithPrinter: (NSString *) printerName andString: (NSString *) string
将string
转换为NSData
。NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
测试应用程序。
关于objective-c - 使用PDFDocument initWithData获取“无法识别的选择器发送到实例”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57488509/