如何在没有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/

10-11 23:18
查看更多