5

很直接...

这些天,我认为自己是一位经验丰富的 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];

在此处输入图像描述

4

1 回答 1

0

我遇到了同样的问题,并通过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)
            }
        }
    }
}
于 2021-03-07T19:02:42.807 回答