Опция 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