Obj-c - Открытие PDF в UIWebView? - PullRequest
       4

Obj-c - Открытие PDF в UIWebView?

0 голосов
/ 07 сентября 2018

Я пытаюсь открыть PDF в моем UIWebView. По какой-то причине, когда я извлекаю URL из NSString, а затем использую NSString в моем коде, веб-просмотр возвращается пустым (даже если строка содержит данные url). Однако, если я введу URL-адрес в URLWithString IN FULL (например, example.com/file.pdf), PDF-файл отобразится так, как должен. Тем не менее, ссылка на отображаемый PDF-файл постоянно отличается, поэтому я использую NSString для заполнения PDF-ссылки UIView. Есть идеи, почему это не работает?

ViewController.m

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

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

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)
0 голосов
/ 07 сентября 2018

Иногда URL-адрес поврежден или содержит символы, которые UIWebView не распознает и, следовательно, не покажет вам интересующую вас страницу / PDF-файл. Попробуйте это, используйте stringByAddingPercentEscapesUsingEncoding, чтобы попытаться удалить любые пробелы и замените их процентами, которые могут быть в URL.

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

Обычно это работает, однако в прошлом у меня были проблемы, когда это не решало проблему для меня. Вместо этого я использовал метод stringByReplacingOccurrencesOfString для замены символов.

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

EDIT

Бретань, проблема для вас в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...