我在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
dataNSStringinitWithData:期望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/

10-10 19:13