如何使用wkwebview打开PDF链接

时间:2017-12-11 13:40:45

标签: ios wkwebview swift4

我创建了一个简单的iOS应用程序,它使用WKWebView打开一个URL。 进入网站的网站,有一个PDF文档的链接。 当我在浏览器中打开网站时,我可以点击链接,然后打开PDF文档。 但在我的应用程序中,当我点击链接时没有任何反应。 我该如何解决? 我是否必须在info.plist中添加一些内容?

感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

SWIFT 3. *& 4. * *

首先,您必须将该pdf文件下载到您的应用程序中,下载后您必须获取该文件路径,然后该文件路径应该像WKWebView中的以下方式一样使用。

let fileURL = URL(fileURLWithPath: filePathURLData as! String)
//print(fileURL)
webView.loadFileURL(fileURL, allowingReadAccessTo: fileURL)

此处filePathURLData是您已下载到应用中的实际文件路径,您必须将其转换为URL,然后您需要将该文件加载到WKWebView

由于

希望这会对你有所帮助。

这将显示WKWebView中的任何文件(doc,docx,xl​​sx,pdf,google doc,pages& Any textfile)

答案 1 :(得分:2)

很可能,您正在锚标记中使用target =“ _ blank”。这将打开一个新窗口以显示链接。 WKWebView阻止您尝试打开新窗口(至少默认情况下)。

下面的代码仍然不会创建新窗口,而是在当前WKWebView中打开PDF等链接。 另一个选择似乎是创建一个新的WKWebView并返回它,因此ios并在其中打开链接,但是我不希望每次在WKWebView内的网站上单击都可以创建额外的视图。

在您的ViewController.viewDidLoad

webView.uiDelegate = self

然后添加代表的扩展名

extension ViewController: WKUIDelegate {

    /**
     * Force all popup windows to remain in the current WKWebView.  
     * By default, WKWebView is blocking new windows from being created
     * ex <a href="link" target="_blank">text</a>.
     * This code catches those popup windows and displays them in the current WKWebView.
     */
    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {

        // open in current view
        webView.load(navigationAction.request)

        // don't return a new view to build a popup into (the default behavior).
        return nil;
    }
}

答案 2 :(得分:1)

我有同样的问题,发现pdf文件使用的是不安全的http。因此,该应用拒绝打开它。 尝试使用https链接进行检查,看看是否有效。

使用WKWebView,您也无需在打开pdf文件之前先下载它。只需直接加载网址,即

webView.load(URLRequest(url: URL(string: "https-pdf-link")!)

答案 3 :(得分:0)

目标 C:

 NSURL *fileUrl = [[NSURL alloc] initWithString:filePathURLData];
[webView loadFileURL:fileUrl allowingReadAccessToURL:fileUrl];

另一种打开保存在文档目录中的 PDF 的方法:

 NSData *data = [NSData dataWithContentsOfFile:fileURL];
[webView loadData:data MIMEType:@"application/pdf" characterEncodingName:@"" baseURL:[NSURL URLWithString:fileURL]];