iOS 文件预览(PDF、Excel、World等)之QuickLook框架
iOS 文件预览
- QuickLook之工程文件预览
- QuickLook之网络URL预览
QuickLook之工程文件预览
一、简介
QuickLook库可以让我们的App在iPhone/iPad中直接预览各个文件了。官方的开发文档中说明其支持的文件类型有:
- iWork documents
- Microsoft Office documents (Office ‘97 and newer)
- Rich Text Format (RTF) documents
- PDF files
- Images
- Text files whose uniform type identifier (UTI) conforms to the public.text type (see Uniform Type Identifiers Reference)
- Comma-separated value (csv) files
二、包含哪些类
通过api可以看到有哪些Classes
import QuickLook.QLBase//基础类import QuickLook.QLPreviewController //预览Controllerimport QuickLook.QLPreviewItem //单个数据源import QuickLook.QLPreviewingController //import QuickLook.QLThumbnailProviderimport QuickLook.QLThumbnailReplyimport QuickLook.QLThumbnailRequest
三、使用demo
方式一:在自己Controller中展示文件如下:
//声明两个变量fileprivate var preViewController = QLPreviewController.init()//经过测试:可以是网络URLStr,必须要下载下来,可以用fileprivate var filePath = Bundle.main.path(forResource: "消息提醒", ofType: "xlsx") //ViewDidLoad中设置变量preViewController.delegate = selfpreViewController.dataSource = selfaddChild(preViewController)view.addSubview(preViewController.view)//布局,可选preViewController.view.snp.makeConstraints { (make) inmake.left.right.equalToSuperview()make.bottom.equalToSuperview()make.top.equalTo(topLayoutGuide.snp.bottom)}
//遵循代理、DataSource
extension YPreviewVC: QLPreviewControllerDelegate, QLPreviewControllerDataSource {func numberOfPreviewItems(in controller: QLPreviewController) -> Int {return 1}func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {return URL.init(fileURLWithPath: filePath!) as QLPreviewItem}func previewControllerDidDismiss(_ controller: QLPreviewController) {print("用户界面已消失")}func previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -> Bool {return false}}
方式二:直接调用:
//直接调用跳转,用QLPreviewController的默认界面,自带系统的分享 self.navigationController?.pushViewController(preViewController, animated: true)
QuickLook之网络URL预览
一、把文件下载下来:Alamofire 5.0框架
方法如下:
fileprivate var filePath: URL?//声明的属性
fileprivate func reqestDownLoad() -> Void {let destination = DownloadRequest.suggestedDownloadDestination(for: .documentDirectory)//这是下载存放哪里//自己文件名的在这里哦/* let destination: DownloadRequest.DownloadFileDestination = {[weak self] (url, response) inlet docmentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).firstlet suggestFil = response.suggestedFilename == nil ? "http.xls" : response.suggestedFilename!
// response.suggestedFilename?//文件名let newName = self!.fileName + "." + suggestFil.split(separator: ".").last!.descriptionlet fileRUL = docmentURL?.appendingPathComponent(newName)return (fileRUL!, [.removePreviousFile,.createIntermediateDirectories])}*///urlTitle:urlString eg:http://file.xlsxAlamofire.download(urlTitle, to: destination).validate().responseData {[weak self] response in
// case response.ddebugPrint(response)print(response.temporaryURL)if response.destinationURL != nil {self!.filePath = response.destinationURL//下载完成的完整路径self!.preViewController.reloadData()//刷新即可展示,类似tableView}print(response.destinationURL)}}//MARK: 代理方法
extension YPreFileVC: QLPreviewControllerDelegate, QLPreviewControllerDataSource {func numberOfPreviewItems(in controller: QLPreviewController) -> Int {if filePath == nil {return 0}return 1 //可以使多个文件}func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {return filePath! as QLPreviewItem}func previewControllerDidDismiss(_ controller: QLPreviewController) {print("用户界面已消失")}func previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -> Bool {return false}
}
注意
如果是网络URL链接,下载下来的不想要保存到APP中可以直接在Controller视图消失的时候直接删除掉即可
override func viewDidDisappear(_ animated: Bool) {super.viewWillDisappear(animated)if filePath != nil {//删错文件do {try FileManager.default.removeItem(at: filePath!)}catch {print(error)print("删错失败啦")}}}
iOS 文件预览(PDF、Excel、World等)之QuickLook框架相关推荐
- IOS 打开预览pdf、ppt、excel、word、tet、rtf、csv格式的文件,微信文件分享
前言:打开预览pdf.ppt.excel.word.tet.rtf.csv格式的文件有两种一方,一种是利用 UIWebView或者WKWebView 来直接打开,另一种就是利用 QLPreviewCo ...
- h5下载预览pdf,excel
h5下载预览pdf(pdf.js) 1.下载pdf.js 2.预览有两种方式: 方式一: (1)把文件放到项目根目录 (2)配置文件路径就可以了 window.open('/pdf/web/viewe ...
- 手机端pdf文件预览pdf.js使用方法详解
虽然H5页面可以通过A直接访问html 但可惜的是 手机端H5页面这样做就直接变下载了 那么想要实现手机端的pdf文件预览就需要用到pdf.js了 首先 我们访问地址 http://mozilla.g ...
- vue 跳转到本地的html文件预览pdf
今天做项目使用pdf.js预览需要跳转到pdf下载的本地viewer.html文件,不管是使用window.open还是window.location.href一跳就被vue-router路由拦截跳转 ...
- iOS 文件预览 UIDocumentInteractionController
在应用开发中,有时候需要预览文档和视频,使用 UIDocumentInteractionController 来预览文件非常方便,支持的格式比较多,比如 docx.xlsx.pdf.mov.mp4.j ...
- h5移动端在线查看pdf文件 预览pdf文件 pdfh5.js
要做移动端在线查看pdf的效果 最后选择了 pdfh5.js 强烈点赞 详情链接 https://www.gjtool.cn/articles/2019/09/04/15675716491 ...
- uniapp移动端H5在线预览PDF等文件实现源码及注解
uniapp移动端H5预览文件实现分为两个场景处理: (这里以预览PDF文件为示例,在线预览就是查看网络文件) 1. IOS客户端预览PDF文件 IOS客户端预览PDF文件可以通过跳转文件地址实现预览 ...
- 关于文件预览的功能实现
iOS文件预览篇 文件预览是每个带有文档下载功能的app所必须的,所以学会文档预览是必须的.但是给你一个demo可能你会少走很多弯路,在也不会因为网上那些复制粘贴而且不能用的东西强了. 文档预览是苹果 ...
- spring boot2.X word在线预览 pdf.js
最近公司项目需求需要在线预览word文档,并且不能在在线下载和编辑.在此记录我是如何做的. 针对word的在线预览网上大多给的解决方案就是先把word文件转成pdf,然后通过pdf.js在线预览pdf ...
最新文章
- 在Delphi7中调试COM
- 推荐9部让你看到酣畅淋漓的复仇电影
- mysql在linux下配置_mysql数据库在Linux下安装与配置
- 如何查看已经archive过的product信息
- 简单调试 Python 程序
- 1_python基础—变量
- 35岁程序员的独家面试经历
- @程序员,这门编程语言不输 C/C++!
- 智力与体力的人种矛盾
- iOS开发 语音合成支持后台和锁屏情况
- 数据分析 超市条码_超市卖场管理四要素!走好千里之行的第一步!
- 分门别类刷leetcode——栈、队列、堆(C++实现)
- leaked window产生的原因及解决方案
- 相似度计算常用方法综述
- Mac更新后ae不能打开,ae安装后打开报错解决方法
- HPC走出全新路线:《开放架构HPC技术与生态白皮书》注解
- 姜数学模型——包饺子案例
- LeetCode695. 岛屿的最大面积(C++版)
- 2021年中级Java面试题
- 国内优秀的CRM软件公司推荐