对象 - 在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>
通过此更改,以下代码将适用于您。
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]];
结果
另一答案
#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 未触发