Obj-c - 在 UIWebView 中打开 PDF?
Obj-c - Opening PDF in UIWebView?
我正在尝试在 UIWebView
中打开 PDF。出于某种原因,当我从 NSString
中拉出 URL,然后在我的代码中使用 NSString
时,webview returns 为空(即使字符串包含 url数据)。但是,如果我将 URL 键入 URLWithString
IN FULL(例如 example.com/file.pdf),PDF 将按原样显示。也就是说,显示的 PDF link 始终不同,这就是为什么我使用 NSString
来填充 UIView
的 PDF link。知道为什么这不起作用吗?
ViewController.m
NSString *browserLink = self.linkProgram[@"body"];
NSURL *url = [NSURL URLWithString:browserLink];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
有时 URL 已损坏或其中包含 UIWebView
无法识别的字符,因此不会向您显示您感兴趣的 page/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。出于某种原因,当我从 NSString
中拉出 URL,然后在我的代码中使用 NSString
时,webview returns 为空(即使字符串包含 url数据)。但是,如果我将 URL 键入 URLWithString
IN FULL(例如 example.com/file.pdf),PDF 将按原样显示。也就是说,显示的 PDF link 始终不同,这就是为什么我使用 NSString
来填充 UIView
的 PDF link。知道为什么这不起作用吗?
ViewController.m
NSString *browserLink = self.linkProgram[@"body"];
NSURL *url = [NSURL URLWithString:browserLink];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
有时 URL 已损坏或其中包含 UIWebView
无法识别的字符,因此不会向您显示您感兴趣的 page/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)