0

我在 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 正文作为字符串的原始输出。(文档

我是 Objective-C 的新手,所以我将AppBurger用于我的 Native/webview 桥(在 HTML/JS/CSS 中构建我的应用程序)。

到目前为止,这是我的 Xcode 项目: https ://github.com/josiaho/AppBurger-Print-Test

4

1 回答 1

1

如何调试:

  1. 在 PDFDocument *pdfDocument = [[PDFDocument alloc] initWithData:data]; 行上添加断点

  2. 测试应用程序。当应用程序遇到断点时,检查data.

  3. data是一个NSString并且initWithData:期望NSData

怎么修:

  1. 改名

- (void) printPDFwithPrinter: (NSString *) printerName andData: (NSData *) data

- (void) printPDFwithPrinter: (NSString *) printerName andString: (NSString *) string

  1. 转换stringNSData.

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

  1. 测试应用程序。
于 2019-08-17T10:53:04.577 回答