iOS文档预览功能教程
ios 4 sdk中支技文档的预览功能,何为预览?就是你打印文件时的预览功能。其用到quicklook.framework,它支持的文档格式有: iWork documents, Microsoft Office, Rich Text Format, PDF, images, text files and comma-separated (csv) files.
今天show一个demo,展示其用法:
第一步:创建一个基于view的工程,并加入quicklook.framewrok
第二步:修改Controller的头文件如下:
- #import <QuickLook/QuickLook.h>
- @interface TestViewController : UITableViewController <QLPreviewControllerDataSource>
- {
- NSArray *arrayOfDocuments;
- }
- @end
修改 controller执行文件如下
- #import "TestViewController.h"
- @implementation TestViewController
- #pragma mark -
- #pragma mark Initialization
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- -(id)init
- {
- if (self = [super init])
- {
- arrayOfDocuments = [[NSArray alloc] initWithObjects:
- @"iOSDevTips.png", @"Remodel.xls", @"Core J2ME Technology.pdf", nil];
- }
- return self;
- }
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (void)loadView
- {
- [super loadView];
- [self setTitle:@"Files Available for Preview"];
- }
- #pragma mark -
- #pragma mark Table Management
- // Customize the number of sections in the table view.
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 1;
- }
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- return [arrayOfDocuments count];
- }
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *CellIdentifier = @"tableRow";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil)
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
- // ???
- [[cell textLabel] setText:[arrayOfDocuments objectAtIndex:indexPath.row]];
- [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
- return cell;
- }
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- // When user taps a row, create the preview controller
- QLPreviewController *previewer = [[[QLPreviewController alloc] init] autorelease];
- // Set data source
- [previewer setDataSource:self];
- // Which item to preview
- [previewer setCurrentPreviewItemIndex:indexPath.row];
- // Push new viewcontroller, previewing the document
- [[self navigationController] pushViewController:previewer animated:YES];
- }
- #pragma mark -
- #pragma mark Preview Controller
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
- {
- return [arrayOfDocuments count];
- }
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
- {
- // Break the path into it's components (filename and extension)
- NSArray *fileComponents = [[arrayOfDocuments objectAtIndex: index] componentsSeparatedByString:@"."];
- // Use the filename (index 0) and the extension (index 1) to get path
- NSString *path = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]];
- return [NSURL fileURLWithPath:path];
- }
- #pragma mark -
- #pragma mark Cleanup
- /*---------------------------------------------------------------------------
- *
- *--------------------------------------------------------------------------*/
- - (void)dealloc
- {
- // Free up all the documents
- [arrayOfDocuments release];
- [super dealloc];
- }
- @end
修改Appdelegate如下
- - (void)applicationDidFinishLaunching:(UIApplication *)application
- {
- // Create and initialize the window
- window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- // Create test view controller
- vc = [[TestViewController alloc] init];
- // Create navigation controller
- nav = [[UINavigationController alloc] initWithRootViewController:vc];
- [window addSubview:[nav view]];
- [window makeKeyAndVisible];
- }
所要的资源文件可以源码中找到。
iOS文档预览功能教程的更多相关文章
- 一文带你玩转对象存储COS文档预览
随着"互联网+"的发展,各行各业纷纷"去纸化",商务合同.会议纪要.组织公文.商品图片.培训视频.学习课件.随堂讲义等电子文档无处不在.而要查看文档一般需要先下 ...
- 秒级接入、效果满分的文档预览方案——COS文档预览
一.导语 说起 Microsoft Office 办公三件套,想必大家都不会陌生,社畜日常的工作或者生活中,多多少少遇到过这种情况: 本地创建的文档换一台电脑打开,就出现了字体丢失.排版混乱的情况 ...
- 在线文档预览方案-office web apps续篇
上一篇在线文档预览方案-office web apps发布后收到很多网友的留言提问,所以准备再写一篇,一来介绍一下域控服务器安装,总结一下大家问的多的问题,二来宣传预览服务安装与技术支持的事情. 阅读 ...
- 在线文档预览方案-office web apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- [转载]在线文档预览方案-Office Web Apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- 微软office web apps 服务器搭建之在线文档预览(一)
office web apps安装 系统要求为Windows Server 2012, 注意:转换文档需要两台服务器,一台为转换server,另外一台为域控server.(至于为什么要两台,这个请自行 ...
- 使用OpenOffice实现文档预览
概述 使用OpenOffice将 office文档转为pdf,然后再将pdf转为图片,实现文档预览的功能. 依赖组件 OpenOffice.org或者LibreOffice JODConverter ...
- 微软office web apps 服务器搭建之在线文档预览(二)
上一篇文章已经介绍了整个安装过程了.只要在浏览器中输入文档转换server的ip,会自动跳转,出现如下页面. 那么就可以实现本地文档预览了,你可以试试.(注意:是本地哦,路径不要写错,类似“\\fil ...
- 解决officeOnline文档预览服务器只能域名提交的限制Redirect
此项目是解决officeOnline文档预览只能用域名提交的限制 http://officeOnline文档预览域名或IP/op/generate.aspx // 微软原生页面 创建链接后会生成全屏预 ...
随机推荐
- 在typescript中import第三方类库clipboard报错
一.问题 在实际开发项目中就遇到了这样的问题,需要在Vue+Typescript项目中添加复制文本的功能,就找了clipboard插件,先是新建了一个新的项目用来实验看看是否好用,都写好了以后发给别人 ...
- 树(tree)
树(tree)[题目描述]从前在森林里面有一棵很大的树,树上住着很多小动物.树上有
- facebook architecture 2 【转】
At the scale that Facebook operates, a lot of traditional approaches to serving web content breaks d ...
- 【IntelliJ Idea】idea快速创建maven spring项目
想试试AOP在spring的web项目上的使用情况,所以想尽快使用idea快速的搭建一个spring的web项目,当然,是maven管理的项目 步骤如下: 1.打开idea 左上角file---> ...
- Ubuntu下sudo apt-get install vim 失败的解决办法
Ubuntu下 执行命令:sudo apt-get install vim 失败 解决办法: 更新一下,命令:sudo apt-get update 再安装即可成功:sudo apt-get inst ...
- 2016.7.12 在navicat中用sql语句建表
参考资料: http://jingyan.baidu.com/article/f0e83a25a8c4b022e5910116.html 即新建query,然后run. (1)点击要新建表的位置,选择 ...
- Linux:和任务执行相关的 【批命令执行 runparts 】命令
run-parts:执行目录下的 命令或脚本 工具,其他非可执行文件和子目录下的文件不会被执行.目录下的命令,是以基本的词汇(字符)顺序执行的,除非你指定了--reverse 逆序选项!这是个老牌的G ...
- PropertyGrid—属性类别排序
属性默认按照字母顺序排序,有时,我们想要按自定义的顺序排序 这个工具类可以把每个属性类别里的属性排序,但是不能把属性类别排序. 为属性类添加属性:[TypeConverter(typeof(Prope ...
- DesignSurface简介
The Perfect Host: Create And Host Custom Designers With The .NET Framework 2.0 Dinesh Chandnani - 三月 ...
- 为电脑添加u盘写保护
需求:解决在公共打印PC机上u盘病毒的传染,设置后该PC机将不能对u盘文件进行写操作 修改注册表,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro ...