iOS 文件预览

  • QuickLook之工程文件预览
  • QuickLook之网络URL预览

QuickLook之工程文件预览

一、简介
QuickLook库可以让我们的App在iPhone/iPad中直接预览各个文件了。官方的开发文档中说明其支持的文件类型有:

  1. iWork documents
  2. Microsoft Office documents (Office ‘97 and newer)
  3. Rich Text Format (RTF) documents
  4. PDF files
  5. Images
  6. Text files whose uniform type identifier (UTI) conforms to the public.text type (see Uniform Type Identifiers Reference)
  7. 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框架相关推荐

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

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

  2. h5下载预览pdf,excel

    h5下载预览pdf(pdf.js) 1.下载pdf.js 2.预览有两种方式: 方式一: (1)把文件放到项目根目录 (2)配置文件路径就可以了 window.open('/pdf/web/viewe ...

  3. 手机端pdf文件预览pdf.js使用方法详解

    虽然H5页面可以通过A直接访问html 但可惜的是 手机端H5页面这样做就直接变下载了 那么想要实现手机端的pdf文件预览就需要用到pdf.js了 首先 我们访问地址 http://mozilla.g ...

  4. vue 跳转到本地的html文件预览pdf

    今天做项目使用pdf.js预览需要跳转到pdf下载的本地viewer.html文件,不管是使用window.open还是window.location.href一跳就被vue-router路由拦截跳转 ...

  5. iOS 文件预览 UIDocumentInteractionController

    在应用开发中,有时候需要预览文档和视频,使用 UIDocumentInteractionController 来预览文件非常方便,支持的格式比较多,比如 docx.xlsx.pdf.mov.mp4.j ...

  6. h5移动端在线查看pdf文件 预览pdf文件 pdfh5.js

    要做移动端在线查看pdf的效果 最后选择了    pdfh5.js  强烈点赞   详情链接 https://www.gjtool.cn/articles/2019/09/04/15675716491 ...

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

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

  8. 关于文件预览的功能实现

    iOS文件预览篇 文件预览是每个带有文档下载功能的app所必须的,所以学会文档预览是必须的.但是给你一个demo可能你会少走很多弯路,在也不会因为网上那些复制粘贴而且不能用的东西强了. 文档预览是苹果 ...

  9. spring boot2.X word在线预览 pdf.js

    最近公司项目需求需要在线预览word文档,并且不能在在线下载和编辑.在此记录我是如何做的. 针对word的在线预览网上大多给的解决方案就是先把word文件转成pdf,然后通过pdf.js在线预览pdf ...

最新文章

  1. 在Delphi7中调试COM
  2. 推荐9部让你看到酣畅淋漓的复仇电影
  3. mysql在linux下配置_mysql数据库在Linux下安装与配置
  4. 如何查看已经archive过的product信息
  5. 简单调试 Python 程序
  6. 1_python基础—变量
  7. 35岁程序员的独家面试经历
  8. @程序员,这门编程语言不输 C/C++!
  9. 智力与体力的人种矛盾
  10. iOS开发 语音合成支持后台和锁屏情况
  11. 数据分析 超市条码_超市卖场管理四要素!走好千里之行的第一步!
  12. 分门别类刷leetcode——栈、队列、堆(C++实现)
  13. leaked window产生的原因及解决方案
  14. 相似度计算常用方法综述
  15. Mac更新后ae不能打开,ae安装后打开报错解决方法
  16. HPC走出全新路线:《开放架构HPC技术与生态白皮书》注解
  17. 姜数学模型——包饺子案例
  18. LeetCode695. 岛屿的最大面积(C++版)
  19. 2021年中级Java面试题
  20. 国内优秀的CRM软件公司推荐

热门文章

  1. 菜鸟爬虫——获取安居客二手房信息
  2. 对数线性模型 matlab,非线性规划含有对数函数用什么matlab调用函数的程序
  3. 梁宁《产品思维》之23衡量创新
  4. pp2使用需要java_IE10 PP2新特性详情
  5. 全志v3s学习笔记(5)——主线Linux编译与烧录
  6. 百度世界2021:李彦宏带你看AI如何开启美好生活
  7. ARM常用重要的寄存器及指令解释 和 指令英文全称
  8. 80C51定时器中断
  9. Maya的Deform功能简写
  10. 快速将百度排名做到首页的方法