如何在没有UIWebView的iOS应用程序中打开PDF文件?我知道,但是在UIWebView中打开它更容易,但是我有要求。
我从SOAP服务接收PDF的来源。
有任何想法吗?
我搜索了Google,但没有找到任何线索。
编辑:如果可能,我希望代码位于Objective-C中。
我找到答案:
How to display NSData with PDF content in iOS UIWebView?
很抱歉重复,但我没有提出适当的问题。
最佳答案
选项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
关于ios - 如何不使用UIWebView在iOS中打开PDF?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50037487/