Как открыть PDF в iOS, не используя UIWebView? - PullRequest
0 голосов
/ 26 апреля 2018

Как открыть файл PDF внутри приложения iOS без UIWebView?Я знаю, но его проще открыть в UIWebView, но у меня есть требование.Я получаю источник PDF от службы SOAP.

Любые идеи?

Я ищу в Google, но не нашел никакой подсказки.

РЕДАКТИРОВАТЬ: Я предпочитаю, чтобы код был в Objective-C, если это возможно.

Я нашел ответ: Как отобразить NSData с содержимым PDF в iOS UIWebView?

Извините, что сделалдубликат, но я не задал правильный вопрос.

1 Ответ

0 голосов
/ 26 апреля 2018

Опция 1:

        let theFileName = (self.my_object.my_pdf as NSString).lastPathComponent

        let url = URL(string:self.my_object.my_pdf)
        let task = URLSession.shared.dataTask(with: url!) { data, response, error in
            guard error == nil else {
                print(error!)
                return
            }

            guard let data = data else {
                print("Data is empty")
                return
            }

            print(data)

            do {
                let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
                let filePath = "\(documentsPath)/\(theFileName)"
                let url = URL.init(fileURLWithPath: filePath)
                try data.write(to: url)
                self.documentController = UIDocumentInteractionController.init(url: url)
                self.documentController.delegate = self
                self.documentController.presentPreview(animated: true)
                self.downloadBtn.action = #selector(self.downloadButtonTapped)
                //self.documentController.presentOpenInMenu(from: self.downloadBtn, animated: true)

            } catch let error as NSError {
                self.downloadBtn.action = #selector(self.downloadButtonTapped)
                print(error.localizedDescription)
            }
        }

        task.resume()

Опция 2:

работает только и после iOS 11.0+ && MacOS 10.4+

import PDFKit
let pdfView = PDFView()


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.topAnchor).isActive = true

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

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

Источник: https://developer.apple.com/documentation/pdfkit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...