Как распечатать NSString с помощью AirPrint? - PullRequest
5 голосов
/ 21 февраля 2011

У меня настоящие проблемы с этим.Я не знаю, что не так, но это выплевывает:

ОШИБКА: попытка отобразить параметры печати без источника печати (item / items / formatter / renderer) set

Код работает, еслиЯ установил его для печати PNG-изображения, но не содержимого строки NSS.

Вот мой код:

- (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];
}

1 Ответ

8 голосов
/ 21 февраля 2011

Похоже, вы хотите напечатать обычный NSString, но вы пытаетесь загрузить файл с путем к файлу, который не может быть действительным. Таким образом, myData очень вероятно nil (пожалуйста, подтвердите с помощью отладчика) и, следовательно, сообщение об ошибке является правильным (print.printingItem не должно быть nil).

Чтобы напечатать простой текст, создайте экземпляр UISimpleTextPrintFormatterinitWithText:) и назначьте этот экземпляр print.printFormatter.

...