对象 - 在UIWebView中打开PDF?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象 - 在UIWebView中打开PDF?相关的知识,希望对你有一定的参考价值。

我正在尝试在我的UIWebView中打开PDF。出于某种原因,当我从NSString中提取URL,然后在我的代码中使用NSString时,webview返回空(即使字符串包含url数据)。但是,如果我将URL输入到URLWithString IN FULL(例如example.com/file.pdf),则PDF将按原样显示。也就是说,显示PDF的链接总是不同,这就是为什么我使用NSString来填充UIView的PDF链接。知道为什么这不起作用吗?

ViewController.m

NSString *browserLink = self.linkProgram[@"body"];
NSURL *url = [NSURL URLWithString:browserLink];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
答案

有时URL已损坏或其中包含UIWebView无法识别的字符,因此不会向您显示您感兴趣的页面/ PDF。尝试此操作,使用stringByAddingPercentEscapesUsingEncoding尝试删除任何空格并将其替换为百分比转义符可能在URL中。

NSURL *url = [NSURL URLWithString:
[browserLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

这通常是有效的,但是我过去曾经遇到过一些问题,这对我来说并没有解决问题。相反,我使用stringByReplacingOccurrencesOfString方法来替换字符。

NSURL *url = [NSURL URLWithString: 
[browserLink stringByReplacingOccurrencesOfString: @" " withString:@"%20"]];

编辑

布列塔尼问题就在于App Transport Security。确保您的info.plist文件包含以下密钥以应用您的ATS设置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>pdfpdf.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

enter image description here

通过此更改,以下代码将适用于您。

NSString *browserLink = self.linkProgram[@"body"];
NSURL *url = [NSURL URLWithString:browserLink];
UIWebView * webView = [[UIWebView alloc] initWithFrame: self.view.frame];
[self.view addSubview:webView];
[webView loadRequest:[NSURLRequest requestWithURL:url]];

结果

enter image description here

另一答案

enter image description here这是我如何使用它 -

#import <WebKit/WebKit.h>


NSString *urlString = _datadiction[@"doclink"];

    if(urlString != nil || [urlString isEqualToString:@""]){

        WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
        WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
        NSURLRequest *nsrequest=[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];

        [webView setBackgroundColor:[UIColor whiteColor]];

        [webView loadRequest:nsrequest];
        [self.view addSubview:webView];

    }
    else{

        NSLog(@"Error");
    }

#P.S -  Update info.plist with Transport Security... (allow arbitary loads = YES)

以上是关于对象 - 在UIWebView中打开PDF?的主要内容,如果未能解决你的问题,请参考以下文章

当 UIWebView 打开 PDF 时 webViewDidFinishLoad 未触发

我们可以在iOS上使用UIWebView打开pdf文件吗?

我们可以在iOS上使用UIWebView打开pdf文件吗?

我们可以在 iOS 上使用 UIWebView 打开 pdf 文件吗?

uiwebview中pdf的页码

在 IOS App 中打开 PDF