iphone - 如何使用 AirPrint 打印 NSString?

标签 iphone cocoa-touch printing nsstring airprint

我在这方面遇到了很大的麻烦。我不知道出了什么问题,但它吐出了这个:

错误:尝试在未设置打印源(item/items/formatter/renderer)的情况下显示打印选项

如果我将其设置为打印 png 图像,但不打印 NSString 的内容,则该代码可以工作。

这是我的代码:

- (IBAction)pushPrint:(id)sender {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterNoStyle];
    [dateFormatter setTimeStyle:NSDateFormatterLongStyle];
    [dateFormatter setDateFormat:@"dd/MM/YY     HH:mm:ss"];
    NSString* currentTime = [dateFormatter stringFromDate:[NSDate date]];
    [dateFormatter release]; 

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

    NSString *path = [[NSBundle mainBundle] pathForResource:t[NSString stringWithFormat:@"Results Printout\n"
                                                              "\n"
                                                              "%@\n"
                                                              "\n"
                                                              "\n"
                                                              "%@", currentTime, pasteboard.string] ofType:nil];

    NSData *myData = [NSData dataWithContentsOfFile:path];
    UIPrintInteractionController *print = [UIPrintInteractionController sharedPrintController];

    print.delegate = self;
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = [path lastPathComponent];
    printInfo.duplex = UIPrintInfoDuplexLongEdge;
    print.printInfo = printInfo;
    print.showsPageRange = YES;
    print.printingItem = myData;

    void (^completionHandler)(UIPrintInteractionController *,BOOL, NSError *) = ^(UIPrintInteractionController *print,BOOL completed, NSError *error) {
        if (!completed && error) {
            NSLog(@"houston we have a problem");
        }
    };
    [print presentAnimated:YES completionHandler:completionHandler];
}

最佳答案

您似乎想要打印一个普通的 NSString,但您正在尝试加载一个文件路径无效的文件。因此,myData很可能是nil(请与调试器确认),因此错误消息是正确的(print.printingItem不能是)。

要打印简单文本,请创建 UISimpleTextPrintFormatter 的实例(使用 initWithText:)并将该实例分配给 print.printFormatter

关于iphone - 如何使用 AirPrint 打印 NSString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068322/

相关文章:

iphone - 如果您不知道 tableView 有多少行,如何滚动到它的底部?

iphone - 在 iPhone SDK 中设置铃声

objective-c - 在 UITextView 中移动光标

python - 按值对字典进行排序并仅打印键

perl - 在 Perl 中如何打印到变量而不是文件?

iphone - 如何使用滚动操作从 subview Controller 中获取父 View Controller ?

javascript - 在 Retina iPhone 上正确设置设备宽度和比例? CSS

html - <tr> 在显示 <tbody> 时被压缩 :block

ios - 等到多个网络请求都执行完毕——包括它们的完成 block

iOS全时后台服务-基于位置追踪