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

如果是WebView,要签代理<UIWebViewDelegate>

- (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,要签代理<WKNavigationDelegate>

- (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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容