PDFKit не отображается с помощью средства выбора документов? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь разрешить просмотр PDF в приложении с помощью PDFKit и использую DocumentPicker, чтобы пользователь мог выбрать, какой PDF он хотел бы просмотреть. Конечной целью будет получение URL PDF из базы данных, чтобы файлы не сохранялись локально. Однако PDFView будет пустым при выборе файла с помощью DocumentPicker. Единственные различия, которые я вижу между путями, кажутся подписью .tmp, и я не был уверен, что именно это мешает отображению документа. file:///private/var/mobile/Containers/Data/Application/[Device]/tmp/com.company.app-Inbox/Welcome.pdf на пути, по которому я читаю или выбран, и это путь, который должен отображаться в PDFView file:///var/mobile/Containers/Data/Application/[Device]/Documents/Welcome.pdf. Я использую кнопку, чтобы войти в средство выбора документов, а затем вызвать переход к PFDView.



    var urlPath: URL!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {

        let pdfView = PDFView(frame: self.view.bounds)
        self.view.addSubview(pdfView)

        let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let sandboxUrl = dir.appendingPathComponent(urlPath.lastPathComponent)

        if !FileManager.default.fileExists(atPath: sandboxUrl.path) {
            do {
                try FileManager.default.copyItem(at: urlPath, to: sandboxUrl)
            } catch {
                print("error copying")
            }
        } else {

        }
        print("here is the urlpath: \(urlPath!.absoluteString)")
        print("here is the pdfpath: \(sandboxUrl)")

        pdfView.translatesAutoresizingMaskIntoConstraints = false
//        view.addSubview(pdfView)

        pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
        pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
        pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
        pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true

        guard let path = Bundle.main.url(forResource: sandboxUrl.absoluteString, withExtension: "pdf") else { return }


        if let document = PDFDocument(url: path) {
            pdfView.document = document
        }
    }
}```
...