在Swift 4中显示PDF文件

时间:2018-02-02 06:44:59

标签: ios swift pdf webview

break

以上代码我无法显示pdf文件。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

通过查看代码,您似乎错过了添加 UIDocumentInteractionControllerDelegate 委托方法。

    class ViewController: UIViewController,UIDocumentInteractionControllerDelegate {
        override func viewDidLoad() {
            super.viewDidLoad()

           var docController = UIDocumentInteractionController.init(url: URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(urlVal!))
            docController.delegate = self
            docController.presentPreview(animated: true)
        }
        func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
            return self
        }
    }

您还可以通过将PDF加载到 WKWebView 来查看PDF。

    override func viewDidLoad() {
        super.viewDidLoad()

        let pdfFilePath = Bundle.main.url(forResource: "iostutorial", withExtension: "pdf")
        let urlRequest = URLRequest.init(url: pdfFilePath!)
        webView = WKWebView(frame: self.view.frame)
        webView.load(request)
        self.view.addSubview(webView)

    }

enter image description here

答案 1 :(得分:0)

基本上你缺少UIDocumentInteractionControllerDelegate实现。对于预览,您应该实现此方法

    func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController

返回ViewController需要显示预览的内容。如果您通过自我视图控制器,它将以模态方式在现有视图控制器中显示PDF预览。如果要在同一个控制器中显示预览,只需在View控制器中执行此操作。

    func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
        return self
    }

如果您已在代码中执行此操作,则很有可能PDF URL路径可能出错。

答案 2 :(得分:0)

我会使用Quicklook框架,它支持多种文档类型:

  • iWork文件
  • Microsoft Office文档
  • PDF文件
  • 图片
  • 文本文件
  • 富文本格式文档
  • 逗号分隔值文件(csv)

支持共享相关文档,并且易于实施。

关于如何在Swift中执行此操作:https://www.appcoda.com/quick-look-framework/

答案 3 :(得分:0)

雨燕5

导入此框架

import SafariServices

然后在需要时调用此句子

if let url = URL(string: "YOUR_PDF_URL") {
  let config = SFSafariViewController.Configuration()
  config.entersReaderIfAvailable = true

  let vc = SFSafariViewController(url: url, configuration: config)
  present(vc, animated: true)
}

代码将显示带有pdf的Safari视图。