ios-文件预览-QLPreViewController
来源:互联网 发布:asp网站数据库下载 编辑:程序博客网 时间:2024/05/06 20:23
最近在做的项目中有相关pdf文件预览的功能,所以了解了一下相关的资料。基本上网上给出来的方法有两种,分别是用UIWebVie和CGContextDrawPDFPage,可以点击查看,但是本文所要讲的是另外一种方式-----使用QLPreViewController进行预览,QLPreViewController不仅支持PDF,还支持其他多种文件的预览,可谓功能强大。
先看下官方文档的说法:
A displayed preview includes a title taken from the last path component of the item URL. You can override this by implementing a previewItemTitle
accessor for the preview item.
A Quick Look preview controller can display previews for the following items:
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
使用方式:
1.首先新建一个QLPreviewController对象preview;
2.遵循协议QLPreviewControllerDataSource,设置代理;
3.实现协议方法:返回文档数量方法- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller;
返回URL的方法 - (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index;
4.模态或push出QLPreviewController的对象preview。
关键代码:
#pragma mark -QLPreviewControllerDataSource- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller { return 1;}- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index { NSString *filePath = [[HKClassRoomManager sharedInstance] getFilePath:self.classFile]; NSAssert(filePath, @"preview nil item"); NSFileManager* fileManager = [NSFileManager defaultManager]; NSError* error = nil; if ([fileManager fileExistsAtPath:filePath]) { NSDictionary* fileInfo = [fileManager attributesOfItemAtPath:filePath error:&error]; NSInteger fileSize = [[fileInfo objectForKey:NSFileSize] integerValue]; if (fileSize >= 1024 * 1024 * 10) { [NSObject showHudTipStr:@"文件较大,加载可能需要一段时间,请等待...."]; } } NSData *fileData = [NSData dataWithContentsOfFile:filePath]; //判断是UNICODE编码 NSString *isUNICODE = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]; //还是ANSI编码 NSString *isANSI = [[NSString alloc] initWithData:fileData encoding:-2147482062]; if (isUNICODE) { NSString *retStr = [[NSString alloc]initWithCString:[isUNICODE UTF8String] encoding:NSUTF8StringEncoding]; NSData *data = [retStr dataUsingEncoding:NSUTF16StringEncoding]; NSError *error = nil; [data writeToFile:filePath options:NSDataWritingAtomic error:&error]; } else if(isANSI){ NSData *data = [isANSI dataUsingEncoding:NSUTF16StringEncoding]; NSError *error = nil; [data writeToFile:filePath options:NSDataWritingAtomic error:&error]; } NSURL *fileURL = [NSURL fileURLWithPath:filePath]; return fileURL;}
- ios-文件预览-QLPreViewController
- iOS中使用QLPreviewController来预览文件
- QLPreviewController 预览文件
- iOS 使用QLPreviewController预览本地和网络文件
- iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)
- Vickate_iOS_文件预览QLPreviewController(pdf,excel,word等)
- 用QLPreviewController预览图片视频
- IOS 使用QLPreviewController浏览PDF WORD等文件
- ios开发 关于在app中预览pdf,word,excel时,使用QLPreviewController还是UIWebView
- IOS录像文件预览
- ios文件预览
- QLPreviewController
- iOS开发 - 打开文件后进行文件分享(QLPreviewController)
- iOS利用QLPreviewController显示PDF,word,execl,txt等格式的文件
- iOS指南系列:使用QLPreviewController浏览文档
- iOS开发 -- 用QLPreviewController查看文档
- IOS开发 文件下载 文件预览
- iOS SDK:预览和打开文件
- 安卓 -- 微信分享集成
- 如何阻止h5body的滑动
- 1.0 在eclipse中使用maven创建springMVC项目
- 使用jQuery Datatable 遇到的问题
- 【读书笔记】——《HTML5移动开发》语义化的短语元素
- ios-文件预览-QLPreViewController
- SQL Server 一列或多列重复数据的查询,删除
- Java类的初始化顺序探究
- 最长公共子序列问题(动态规划)
- [RK3288][Android6.0] SettingsProvider数据库小结
- Oracle学习笔记
- JAVA中的finally语句
- Odoo的权限
- HDU 3938 Portal