2016-08-11 2 views
1

В моем проекте я использую библиотеку PDFJS. Я загружаю локальный pdf на UIWebView. Но это занимает много памяти оперативной памяти и в какой-то момент ее сбой. Чтобы этого избежать, я хочу использовать WKWebView.Как загрузить файл html с pdf на iOS WKWebView

В UIWebview, я использую, как это (self относится к подклассу UIView)

UIWebView *uiWebview = [[UIWebView alloc] initWithFrame:self.frame]; 
[self addSubview:uiWebview]; 
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"swift_tutorial" ofType:@"pdf"]; 
NSString *sPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"PDFJS/web"]; 
NSString *finalPath = [NSString stringWithFormat:@"%@?file=%@#page=1",sPath,filePath]; 
self.urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:finalPath]]; 
[uiWebview loadRequest:self.urlRequest]; 

При печати finalPath в приведенном выше фрагменте, выход консоли /var/containers/Bundle/Application/DF419672-CF14-4B60-BE4F-EC0AC07C23AE/WebviewPOC.app/PDFJS/web/viewer.html?file=/var/containers/Bundle/Application/DF419672-CF14-4B60-BE4F-EC0AC07C23AE/WebviewPOC.app/swift_tutorial.pdf#page=1

В WKWebView, loadFileURL, loadHTMLString методы могут использоваться для загрузки локального файла html или локального файла pdf, который отлично работает. Но не оба. Для этого html-файла, как добавить локальный путь PDF и загрузить его в WKWebView?

Любая помощь приветствуется.

ответ

0

Позвольте мне ответить на мой собственный вопрос.

Я использовал WKWebViewLocal библиотеку для создания локального сервера. Теперь это создаст доступ к локальным файлам через имя хоста. Используя этот подход, использование памяти приложений сильно оптимизировалось (только из-за WKWebView).

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"swift_tutorial" ofType:@"pdf"];  
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"PDFJS/web"]; 
NSString *finalPath = [NSString stringWithFormat:@"http://localhost:8080%@?file=%@#page=1",htmlPath, filePath]; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:finalPath]]; 
[self.webView loadRequest:request]; 

Теперь finalpath будет

http://localhost:8080/~~~~~~~/PDFJS/web/viewer.html?file=/Users/~~~~~~/swift_tutorial.pdf#page=1 
Смежные вопросы