使用 .dataRepresentation() 为 UIActivityViewController 加载 PDF

Issue loading PDF for UIActivityViewController with .dataRepresentation()

我认为我有一个简单的视图控制器来显示预加载的 PDF 文件。 PDF 的路径由先前的控制器传递到 var pdfPath

我有一个 action/share 按钮,我正在尝试使用 PDFDocument.dataRepresentation() 来共享和打印 PDF。根据多个在线来源,它 应该 可以工作,但我收到一个奇怪的错误:

[Unknown process name] Failed to load /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF

代码:

import UIKit
import PDFKit

class PDFViewController: UIViewController {

@IBOutlet weak var ActionBarButton: UIBarButtonItem!

var pdfPath: String? = nil

override func viewDidLoad() {
    super.viewDidLoad()
    let pdfView = PDFView(frame: self.view.bounds)
    self.view.addSubview(pdfView)
    pdfView.autoScales = true
    
    if let path = pdfPath {
        let fileURL = Bundle.main.url(forResource: path, withExtension: "pdf")
         pdfView.document = PDFDocument(url: fileURL!)!
    }
}

@IBAction func ActionButtonPressed(_ sender: UIBarButtonItem) {
    print("ActionButtonPressed():")
    
    if let path = pdfPath {
        let fileURL = Bundle.main.url(forResource: path, withExtension: "pdf")
        let pdfDocument = PDFDocument(url: fileURL!)
        
        guard let data = pdfDocument?.dataRepresentation() else {return}
        let activityController = UIActivityViewController(activityItems: [data], applicationActivities: nil)
        self.present(activityController, animated: true, completion: nil)
    }
}

如果有人知道为什么这不起作用的答案,我将不胜感激。

您可以传递文件的 URL 而不是传递数据,UIActivityViewController 将相应地识别并显示共享选项。

let activityController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)