UIPrintInteractionController printItems не отображаются / работают
Довольно просто...
Я считаю себя довольно опытным разработчиком iOS в эти дни, но этот выглядит как явная ошибка в iOS, если я что-то не пропустил.
Пожалуйста, смотрите код ниже.
Пути к файлам указывают на два одностраничных PDF-файла.
То, что обнаруживается, является Контроллером взаимодействия Печати без содержания для печати.
Если бы я вместо этого делал только 1 файл за один раз, как это:
pc.printingItem = [NSURL fileURLWithPath:filePath1];
это работает как чемпион.
Что мне здесь не хватает?!
UIPrintInteractionController *pc = [UIPrintInteractionController sharedPrintController];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputPhoto;
printInfo.orientation = UIPrintInfoOrientationLandscape;
pc.printInfo = printInfo;
pc.printingItems = @[[NSURL fileURLWithPath:filePath1],
[NSURL fileURLWithPath:filePath2]];
[pc presentAnimated:YES completionHandler:completionHandler];
1 ответ
У меня была такая же проблема, и я решил ее, установив
printingItem
свойство с необработанными данными моего файла PDF.
// Here is a class I created that works with `UIActivityViewController`,
// feel free to tweak to your needs.
final class CustomActivityViewController: UIActivityViewController {
init(with filePath: URL, and fileData: Data?) {
super.init(activityItems: [filePath], applicationActivities: [])
completionWithItemsHandler = { activity, complete, items, error in
if activity == .print {
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = filePath.lastPathComponent
printInfo.outputType = .general
let printer = UIPrintInteractionController.shared
printer.printingItem = fileData // <-- This is the cure.
printer.printInfo = printInfo
printer.present(animated: true, completionHandler: nil)
}
}
}
}