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];
}
IOS 打开预览pdf、ppt、excel、word、tet、rtf、csv格式的文件,微信文件分享相关推荐
- H5打开预览PDF,PPT等文件
实现代码: pdfUrl 写你的文件路径 <iframe :src="'//www.xdocin.com/xdoc?_func=to&_format=html&_cac ...
- uniapp 小程序打开预览pdf文件
微信公众平台 => 开发管理 => 开发设置 =>业务域名 注意:配置为业务域名后,可调用web-view组件在小程序中打开 注意:需要区分是安卓还是ios,ios可以直接使用web ...
- php 批量转换文档编码格式_据说是国内最好的文档格式转换网址~PDF,PPT,EXCEL,WORD互相转换...
作者 雷哥 | 编辑 小西瓜 各位读者朋友,大家好. 平时工作中,经常会遇到PDF转为Word,或者PPT转为Word,或者..... 遇到这种情况,大家有什么好的方法实现呢? 今天雷哥推荐给大家一个 ...
- chrome浏览器 在线打开预览pdf文件,而不是下载文件。
Content-Type: application/pdf Content-Disposition: inline; filename="pdf-file1.pdf" 关键有2个点 ...
- PDF.js + Vue 浏览器以只读方式打开PDF,后台返回文件流,前端实现预览pdf
如果你想光前端完成 office(xls,doc,ppt) 文件的预览,只能提供你这些库来使用 PDF http://mozilla.github.com/pdf.js/ XLS https://gi ...
- uniapp移动端H5在线预览PDF等文件实现源码及注解
uniapp移动端H5预览文件实现分为两个场景处理: (这里以预览PDF文件为示例,在线预览就是查看网络文件) 1. IOS客户端预览PDF文件 IOS客户端预览PDF文件可以通过跳转文件地址实现预览 ...
- 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件
文章目录 @[TOC](文章目录) 方法一. Luckysheet 预览 方法二. Office Web 查看器(微软的开发接口) 方法三. XDOC文档预览云服务(预览pdf.word.xls.pp ...
- Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全
切记:以上方法均会对注册表进行修改,一定要先备份整个注册表,以防万一,避免导致系统错误 一.问题症状或错误复现: 1.首先要打开 文件资源管理器的 文件 预览窗格 2.然后在文件资源管理器的右边就会显 ...
- mvc直接在html页面预览pdf,Asp.net MVC 实现在线预览word、excel、ppt、pdf文件
在线预览word.excel.ppt 原理:主要是引用第三方Dll使本地word.excel.ppt文件转换成Html 需要引用 : Aspose.Cells.dll Aspose.Slides.dl ...
最新文章
- Apache Kafka: 优化部署的10个最佳实践
- “低端市场”?一线业务员这样看
- 【问链财经-区块链基础知识系列】 第十九课 区块链应用于电子存证
- 在c语言中怎么修改信息,车管所信息变更
- 计算机控制技术黄勤,微型计算机控制技术 教学课件 黄勤 第3章微型计算机控制系统的常用控制.ppt...
- 中秋福利大放送!教你既可朝九晚五,又可诗和远方!
- awk if 不包含_linux高级运维必会命令——AWK命令详解及实例分享
- linux虚拟文件系统(四)-文件系统挂载操作分析
- vbs比较两个数组里的数的大小_BAT 高频面试题:寻找两个有序数组的中位数
- 什么是MySQL视图
- 运营商管道的精细化运营之路
- OAuth2认证授权流程解析
- 密码学专题 非对称加密算法指令概述 DH算法指令
- 补码乘法、booth算法、Wallace树
- ajax加载图片使用,Lightbox–Ajax加载下图片灯箱的使用
- 论文翻译:Pose-conditioned Spatio-Temporal Attention for Human Action Recognition
- arm mali 天梯图_11月最新版联发科CPU天梯图 直观看天梯图秒懂联发科处理器排行...
- 比亚迪--一文看懂--家用新能源汽车产品线
- 索尼为收购工作室准备,对抗微软?
- 推荐系统——用户画像
热门文章
- 数据脱敏——什么是数据脱敏
- 白侠机器人_正文 第二百三十八章 诡异的黄金战斗机器人
- catboost和xgboost_CatBoost:比XGBoost更优秀的GBDT算法
- hive和spark-sql计算stddev的结果差异
- Vue电商项目-商品飞入购物车特效实现
- 宝塔Linux搭建python行不,利用宝塔+python+搭建falsk项目
- sklearn-SVM 模型保存、交叉验证与网格搜索
- Win系统 - Windows 10 磁盘如何分区?
- MacBook Pro 关闭独立显卡 开启集成显卡
- 小米手机收藏的短信在哪里,怎么删除收藏短信