1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > IOS 打开预览pdf ppt excel word tet rtf csv格式的文件 微信文件分享

IOS 打开预览pdf ppt excel word tet rtf csv格式的文件 微信文件分享

时间:2020-07-27 11:23:14

相关推荐

IOS 打开预览pdf ppt excel word tet rtf csv格式的文件 微信文件分享

前言:打开预览pdf、ppt、excel、word、tet、rtf、csv格式的文件有两种一方,一种是利用 UIWebView或者WKWebView 来直接打开,另一种就是利用

QLPreviewController来打开,但是现在这种方法只能打开本地文件,也就是说如果您是链接,那就需要将文件先下载下来,本文的重点主要讲述第二种方法。

步骤:

1、首先需要判断文件是否需要下载

#pragma mark 判断是否需要下载- (void)isLoading{NSString *urlStr = _urlStr;NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) objectAtIndex:0];NSString *path = [cachesPath stringByAppendingString:[NSString stringWithFormat:@"/%lu.%@",(unsigned long)[urlStr hash],urlStr.pathExtension]];_path = path;NSData *data = [NSData dataWithContentsOfFile:path];if (data == nil) {[self writeToCacheWithUrl:urlStr];}[self addPreview];}

2、是否需要写入缓存

#pragma mark 写入缓存- (void)writeToCacheWithUrl:(NSString *)urlStr{NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];//创建文件管理器NSFileManager *fileManager = [NSFileManager defaultManager];//获取document路径NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];[fileManager createDirectoryAtPath:[cachesPath stringByAppendingString:@"/Caches"] withIntermediateDirectories:YES attributes:nil error:nil];//写入路径NSString *path = [cachesPath stringByAppendingString:[NSString stringWithFormat:@"/%lu.%@",(unsigned long)[urlStr hash],urlStr.pathExtension]];[data writeToFile:path atomically:YES];}

3、接下来就是进入预览界面

- (void)addPreview{QLPreviewController *qlPC = [[QLPreviewController alloc] init];qlPC.view.frame = CGRectMake(0, 64, self.view.width, self.view.height - 64);qlPC.dataSource = self;qlPC.delegate = self;[self addChildViewController:qlPC];[self.view addSubview:qlPC.view];}

4、遵循 < QLPreviewControllerDataSource , QLPreviewControllerDelegate >方法

#pragma mark - previewControllerDataSource- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{return 1;}- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{//文件路径,也就是已经下载后的路径return [NSURL fileURLWithPath:_path];}

5、预览完文件,可能需要进行分享,以下以微信分享为例

#pragma mark 分享- (void)share{WXMediaMessage *message = [WXMediaMessage message];message.title = self.navigationItem.title;WXFileObject *fileObject = [WXFileObject object];fileObject.fileExtension = _urlStr.pathExtension;fileObject.fileData = [NSData dataWithContentsOfFile:_path];message.mediaObject = fileObject;SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];req.bText = NO;req.message = message;req.scene = 0;[WXApi sendReq:req];}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。