【问题标题】:Getting 'unrecognized selector sent to instance' with PDFDocument initWithData?使用 PDFDocument initWithData 获取“无法识别的选择器发送到实例”?
【发布时间】:2019-08-14 05:17:06
【问题描述】:

我在 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 的新手,所以我将 AppBurger 用于我的 Native/webview 桥(用 HTML/JS/CSS 构建我的应用程序)。

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

【问题讨论】:

  • edit您的问题包含完整和准确的错误消息。
  • 您能否也显示生成 NSData 对象的代码,您可以从该对象调用您的 printPDF: 方法? NSString 上没有 bytes 函数,b.t.w.
  • @MichaelDautermann 我已经为整个 Xcode 项目添加了一个存储库。谢谢!

标签: objective-c xcode cocoa printing pdfdocument


【解决方案1】:

如何调试:

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

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

  3. dataNSStringinitWithData: 期望 NSData

如何解决:

  1. 重命名

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

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

  1. string 转换为NSData

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

  1. 测试应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2012-07-24
    相关资源
    最近更新 更多