WebView、WKWEbView打开pdf文件乱码问题

如果是WebView,要签代理

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

    NSString *pageUrl = request.URL.absoluteString;

    NSString *lastName =[[pageUrl lastPathComponent] lowercaseString];


    if ([lastName containsString:@".pdf"])

    {

        NSData *data = [NSData dataWithContentsOfURL:request.URL];

        [self.webview loadData:data MIMEType:@"application/pdf" textEncodingName:@"GBK" baseURL:nil];

    }

    return YES;

}


如果是WKWebView,要签代理

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

{

    NSString *_webUrlStr = navigationAction.request.URL.absoluteString;

    NSString *lastName =[[_webUrlStr lastPathComponent] lowercaseString];


    if ([lastName containsString:@".pdf"])

    {

        NSData *data = [NSData dataWithContentsOfURL:navigationAction.request.URL];

        [self.webView loadData:data MIMEType:@"application/pdf" characterEncodingName:@"GBK" baseURL:nil];

    }

    decisionHandler(WKNavigationActionPolicyAllow);

}



iOS AFNetWorking 下载pdf文档

+ (void)downLoadPdf:(NSString *)url pdf_id:(NSString *)pdf_id block:(APIFilePath)pdfFilePath {

NSMutableDictionary *mPdf_dic = [NSMutableDictionary dictionaryWithDictionary:[Tool getLocalKey:PDFLOCAL_DIC]];

NSURL *URL = [NSURL URLWithString:url];

NSURLRequest *request = [NSURLRequest requestWithURL:URL];

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {

NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];

NSLog(@"###%@", targetPath);  //原始文件

NSLog(@"**%@", [response suggestedFilename]);  //文件名

return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];

} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

NSLog(@"File downloaded to: %@", filePath);//下载成功后本地保存id以及文件路径

NSString *stringUrl = [filePath absoluteString];

mPdf_dic[pdf_id] = stringUrl;

NSDictionary *pdfDic = [NSDictionary dictionaryWithDictionary:mPdf_dic];

[Tool saveLocalvalue:pdfDic key:PDFLOCAL_DIC];

pdfFilePath(stringUrl);

}];

[downloadTask resume];

}



查看文档时判断本地是否已经下载

#pragma mark - read

- (void)read {

//本地已下载pdf文件

NSDictionary *pdfDic = [Tool getLocalKey:PDFLOCAL_DIC];

if (pdfDic == nil) {

[Tool saveLocalvalue:pdfDic key:PDFLOCAL_DIC];

}

//文件路径

NSString *filePathLocal;

NSString *fileUrl = @"pdf的URL";

NSString *fileKey = @"1471509244417_1471509259460";

NSArray *keys = [pdfDic allKeys];

BOOL isDownload = NO; //是否已经下载

for (NSString *key in keys) {

if ([key isEqualToString:fileKey]) {

isDownload = YES;

break;

} else {

isDownload = NO;

}

}

if (isDownload) {

filePathLocal = pdfDic[fileKey];

[self openPdf:filePathLocal];

} else {

[WYAPI downLoadPdf:fileUrl pdf_id:fileKey block:^(NSString *filePath) {

[self openPdf:filePath];

}];

}

}


————————————————

版权声明:本文为CSDN博主「萤火虫儿飞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_41886208/article/details/87891758

你可能感兴趣的:(WebView、WKWEbView打开pdf文件乱码问题)