前言:打开预览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];
}

IOS 打开预览pdf、ppt、excel、word、tet、rtf、csv格式的文件,微信文件分享相关推荐

  1. H5打开预览PDF,PPT等文件

    实现代码: pdfUrl 写你的文件路径 <iframe :src="'//www.xdocin.com/xdoc?_func=to&_format=html&_cac ...

  2. uniapp 小程序打开预览pdf文件

    微信公众平台 => 开发管理 => 开发设置 =>业务域名 注意:配置为业务域名后,可调用web-view组件在小程序中打开 注意:需要区分是安卓还是ios,ios可以直接使用web ...

  3. php 批量转换文档编码格式_据说是国内最好的文档格式转换网址~PDF,PPT,EXCEL,WORD互相转换...

    作者 雷哥 | 编辑 小西瓜 各位读者朋友,大家好. 平时工作中,经常会遇到PDF转为Word,或者PPT转为Word,或者..... 遇到这种情况,大家有什么好的方法实现呢? 今天雷哥推荐给大家一个 ...

  4. chrome浏览器 在线打开预览pdf文件,而不是下载文件。

    Content-Type: application/pdf Content-Disposition: inline; filename="pdf-file1.pdf" 关键有2个点 ...

  5. PDF.js + Vue 浏览器以只读方式打开PDF,后台返回文件流,前端实现预览pdf

    如果你想光前端完成 office(xls,doc,ppt) 文件的预览,只能提供你这些库来使用 PDF http://mozilla.github.com/pdf.js/ XLS https://gi ...

  6. uniapp移动端H5在线预览PDF等文件实现源码及注解

    uniapp移动端H5预览文件实现分为两个场景处理: (这里以预览PDF文件为示例,在线预览就是查看网络文件) 1. IOS客户端预览PDF文件 IOS客户端预览PDF文件可以通过跳转文件地址实现预览 ...

  7. 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件

    文章目录 @[TOC](文章目录) 方法一. Luckysheet 预览 方法二. Office Web 查看器(微软的开发接口) 方法三. XDOC文档预览云服务(预览pdf.word.xls.pp ...

  8. Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全

    切记:以上方法均会对注册表进行修改,一定要先备份整个注册表,以防万一,避免导致系统错误 一.问题症状或错误复现: 1.首先要打开 文件资源管理器的 文件 预览窗格 2.然后在文件资源管理器的右边就会显 ...

  9. mvc直接在html页面预览pdf,Asp.net MVC 实现在线预览word、excel、ppt、pdf文件

    在线预览word.excel.ppt 原理:主要是引用第三方Dll使本地word.excel.ppt文件转换成Html 需要引用 : Aspose.Cells.dll Aspose.Slides.dl ...

最新文章

  1. Apache Kafka: 优化部署的10个最佳实践
  2. “低端市场”?一线业务员这样看
  3. 【问链财经-区块链基础知识系列】 第十九课 区块链应用于电子存证
  4. 在c语言中怎么修改信息,车管所信息变更
  5. 计算机控制技术黄勤,微型计算机控制技术 教学课件 黄勤 第3章微型计算机控制系统的常用控制.ppt...
  6. 中秋福利大放送!教你既可朝九晚五,又可诗和远方!
  7. awk if 不包含_linux高级运维必会命令——AWK命令详解及实例分享
  8. linux虚拟文件系统(四)-文件系统挂载操作分析
  9. vbs比较两个数组里的数的大小_BAT 高频面试题:寻找两个有序数组的中位数
  10. 什么是MySQL视图
  11. 运营商管道的精细化运营之路
  12. OAuth2认证授权流程解析
  13. 密码学专题 非对称加密算法指令概述 DH算法指令
  14. 补码乘法、booth算法、Wallace树
  15. ajax加载图片使用,Lightbox–Ajax加载下图片灯箱的使用
  16. 论文翻译:Pose-conditioned Spatio-Temporal Attention for Human Action Recognition
  17. arm mali 天梯图_11月最新版联发科CPU天梯图 直观看天梯图秒懂联发科处理器排行...
  18. 比亚迪--一文看懂--家用新能源汽车产品线
  19. 索尼为收购工作室准备,对抗微软?
  20. 推荐系统——用户画像

热门文章

  1. 数据脱敏——什么是数据脱敏
  2. 白侠机器人_正文 第二百三十八章 诡异的黄金战斗机器人
  3. catboost和xgboost_CatBoost:比XGBoost更优秀的GBDT算法
  4. hive和spark-sql计算stddev的结果差异
  5. Vue电商项目-商品飞入购物车特效实现
  6. 宝塔Linux搭建python行不,利用宝塔+python+搭建falsk项目
  7. sklearn-SVM 模型保存、交叉验证与网格搜索
  8. Win系统 - Windows 10 磁盘如何分区?
  9. MacBook Pro 关闭独立显卡 开启集成显卡
  10. 小米手机收藏的短信在哪里,怎么删除收藏短信