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 // 微软原生页面 创建链接后会生成全屏预 ...
随机推荐
- win7 64位数据库连接问题:在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
通过ODBC/JDBC连接程序和数据库时,异常报错“在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配”的解决办法 本机:64位win7,64位JDK,做Web实验用32位myeclipse ...
- hihoCoder #1586 : Minimum-结构体版线段树(单点更新+区间最值求区间两数最小乘积) (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1586 : Minimum Time Limit:1000ms Case Time Limit:1000ms Memory Limit:256MB Description You are give ...
- 4C 2018 福到了
输入字符c(只含有@和空格).数字n.规模n*n的二维字符矩阵. 若倒过来的数组和原数组一样形式输出提示. 最后输出以字符c替换的字符数组. #include <bits/stdc++.h> ...
- 10.1综合强化刷题 Day3 afternoon
竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...
- EOJ Monthly 2018.7
准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...
- 基于WPF系统框架设计(1)-为什么要仿Office2010 Ribbon?
为什么系统框架设计使用Ribbon导航模式? 这得从Office软件的演变说起.微软为什么最后选择使用Ribbon,也许就是很多系统设计要使用Ribbon做功能导航的原因. 你是否还记得曾经使用过的M ...
- Blocks的申明调用与Queue当做锁的用法
Blocks的申明与调用 话说Blocks在方法内使用还是挺方便的,之前都是把相同的代码封装成外部函数,然后在一个方法里需要的时候调用,这样挺麻烦的.使用Blocks之后,我们可以把相同代码在这个方法 ...
- MyEclipse Html自动提示功能的设置方法
操作方法: windows------preferences----------搜索 html----------找到 html Source这项--------- 右边视图,找到 content a ...
- linux 学习解决归档管理器打开rar和zip中文文件名乱码问题
在ubunut下打开windows下压缩的rar文件和zip压缩文件出现中文文件名乱码的问题真的很头疼.文件名乱码其实也没有什么关系是不?至少重命名再改回来或者是使用英文命名都可以克服.不巧的是,如此 ...
- IO流中文件和文件夹的删除程序举例
/* * 删除功能(无论是文件夹还是文件都是用delete方法,仅仅能一级一级的删除.):public boolean delete() * * 注意: * A:假设你创建文件或者目录忘了写盘符路径, ...