Проблема с загрузкой PDF-файла для UIActivityViewController с помощью .dataRepresentation () - PullRequest
0 голосов
/ 12 июля 2020

У меня есть то, что я считал простым контроллером представления для отображения предварительно загруженного файла PDF. Путь к PDF-файлу передается предыдущим контроллером в var pdfPath .

У меня есть кнопка действия / совместного использования, которую я пытаюсь использовать для публикации и печати PDF-файла, используя PDFDocument.dataRepresentation () . Согласно нескольким источникам в Интернете, он должен работать, но я получаю странную ошибку:

[Неизвестное имя процесса] Не удалось загрузить / 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)
    }
}

Если кто-нибудь знает ответ, почему это не работает, я был бы очень признателен.

1 Ответ

1 голос
/ 12 июля 2020

Вместо передачи данных вы можете передать URL-адрес файла, который UIActivityViewController распознает и соответствующим образом отобразит параметры общего доступа.

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