本文转载至 http://blog.csdn.net/devday/article/details/6580444
 

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的头文件如下:

  1. #import <QuickLook/QuickLook.h>
  2. @interface TestViewController : UITableViewController <QLPreviewControllerDataSource>
  3. {
  4. NSArray *arrayOfDocuments;
  5. }
  6. @end

修改 controller执行文件如下

  1. #import "TestViewController.h"
  2. @implementation TestViewController
  3. #pragma mark -
  4. #pragma mark Initialization
  5. /*---------------------------------------------------------------------------
  6. *
  7. *--------------------------------------------------------------------------*/
  8. -(id)init
  9. {
  10. if (self = [super init])
  11. {
  12. arrayOfDocuments = [[NSArray alloc] initWithObjects:
  13. @"iOSDevTips.png", @"Remodel.xls", @"Core J2ME Technology.pdf", nil];
  14. }
  15. return self;
  16. }
  17. /*---------------------------------------------------------------------------
  18. *
  19. *--------------------------------------------------------------------------*/
  20. - (void)loadView
  21. {
  22. [super loadView];
  23. [self setTitle:@"Files Available for Preview"];
  24. }
  25. #pragma mark -
  26. #pragma mark Table Management
  27. // Customize the number of sections in the table view.
  28. /*---------------------------------------------------------------------------
  29. *
  30. *--------------------------------------------------------------------------*/
  31. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  32. {
  33. return 1;
  34. }
  35. /*---------------------------------------------------------------------------
  36. *
  37. *--------------------------------------------------------------------------*/
  38. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  39. {
  40. return [arrayOfDocuments count];
  41. }
  42. /*---------------------------------------------------------------------------
  43. *
  44. *--------------------------------------------------------------------------*/
  45. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  46. {
  47. static NSString *CellIdentifier = @"tableRow";
  48. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  49. if (cell == nil)
  50. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
  51. // ???
  52. [[cell textLabel] setText:[arrayOfDocuments objectAtIndex:indexPath.row]];
  53. [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
  54. return cell;
  55. }
  56. /*---------------------------------------------------------------------------
  57. *
  58. *--------------------------------------------------------------------------*/
  59. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  60. {
  61. // When user taps a row, create the preview controller
  62. QLPreviewController *previewer = [[[QLPreviewController alloc] init] autorelease];
  63. // Set data source
  64. [previewer setDataSource:self];
  65. // Which item to preview
  66. [previewer setCurrentPreviewItemIndex:indexPath.row];
  67. // Push new viewcontroller, previewing the document
  68. [[self navigationController] pushViewController:previewer animated:YES];
  69. }
  70. #pragma mark -
  71. #pragma mark Preview Controller
  72. /*---------------------------------------------------------------------------
  73. *
  74. *--------------------------------------------------------------------------*/
  75. - (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
  76. {
  77. return [arrayOfDocuments count];
  78. }
  79. /*---------------------------------------------------------------------------
  80. *
  81. *--------------------------------------------------------------------------*/
  82. - (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
  83. {
  84. // Break the path into it's components (filename and extension)
  85. NSArray *fileComponents = [[arrayOfDocuments objectAtIndex: index] componentsSeparatedByString:@"."];
  86. // Use the filename (index 0) and the extension (index 1) to get path
  87. NSString *path = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]];
  88. return [NSURL fileURLWithPath:path];
  89. }
  90. #pragma mark -
  91. #pragma mark Cleanup
  92. /*---------------------------------------------------------------------------
  93. *
  94. *--------------------------------------------------------------------------*/
  95. - (void)dealloc
  96. {
  97. // Free up all the documents
  98. [arrayOfDocuments release];
  99. [super dealloc];
  100. }
  101. @end

修改Appdelegate如下

  1. - (void)applicationDidFinishLaunching:(UIApplication *)application
  2. {
  3. // Create and initialize the window
  4. window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  5. // Create test view controller
  6. vc = [[TestViewController alloc] init];
  7. // Create navigation controller
  8. nav = [[UINavigationController alloc] initWithRootViewController:vc];
  9. [window addSubview:[nav view]];
  10. [window makeKeyAndVisible];
  11. }

所要的资源文件可以源码中找到。

iOS文档预览功能教程的更多相关文章

  1. 一文带你玩转对象存储COS文档预览

    随着"互联网+"的发展,各行各业纷纷"去纸化",商务合同.会议纪要.组织公文.商品图片.培训视频.学习课件.随堂讲义等电子文档无处不在.而要查看文档一般需要先下 ...

  2. 秒级接入、效果满分的文档预览方案——COS文档预览

    一.导语 ​ 说起 Microsoft Office 办公三件套,想必大家都不会陌生,社畜日常的工作或者生活中,多多少少遇到过这种情况: 本地创建的文档换一台电脑打开,就出现了字体丢失.排版混乱的情况 ...

  3. 在线文档预览方案-office web apps续篇

    上一篇在线文档预览方案-office web apps发布后收到很多网友的留言提问,所以准备再写一篇,一来介绍一下域控服务器安装,总结一下大家问的多的问题,二来宣传预览服务安装与技术支持的事情. 阅读 ...

  4. 在线文档预览方案-office web apps

    最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...

  5. [转载]在线文档预览方案-Office Web Apps

    最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...

  6. 微软office web apps 服务器搭建之在线文档预览(一)

    office web apps安装 系统要求为Windows Server 2012, 注意:转换文档需要两台服务器,一台为转换server,另外一台为域控server.(至于为什么要两台,这个请自行 ...

  7. 使用OpenOffice实现文档预览

    概述 使用OpenOffice将 office文档转为pdf,然后再将pdf转为图片,实现文档预览的功能. 依赖组件 OpenOffice.org或者LibreOffice JODConverter ...

  8. 微软office web apps 服务器搭建之在线文档预览(二)

    上一篇文章已经介绍了整个安装过程了.只要在浏览器中输入文档转换server的ip,会自动跳转,出现如下页面. 那么就可以实现本地文档预览了,你可以试试.(注意:是本地哦,路径不要写错,类似“\\fil ...

  9. 解决officeOnline文档预览服务器只能域名提交的限制Redirect

    此项目是解决officeOnline文档预览只能用域名提交的限制 http://officeOnline文档预览域名或IP/op/generate.aspx // 微软原生页面 创建链接后会生成全屏预 ...

随机推荐

  1. AC日记——石子归并 51nod 1021

    石子归并 思路: 经典动态规划——归并类问题: 我们把状态划为n个,即1-n的n个长度为n个状态: 那么,每个长度为i的状态都可以由i-1个长度为i-1的状态推出: 所以,dp转移方程: dp[i][ ...

  2. Java IO 学习(四)BIO/NIO

    本文会尝试介绍Java中BIO与NIO的范例与原理 使用的模型非常简单:服务器--客户端模型,服务器会将客户端发送的字符串原样发回来.也就是所谓的echo server. BIO 也就是所谓的Sock ...

  3. vue.js移动端app实战1

    本系列将会用vue.js2制作一个移动端的webapp单页面,页面不多,大概在7,8个左右,不过麻雀虽小,五脏俱全,常用的效果如轮播图,下拉刷新,上拉加载,图片懒加载都会用到.css方面也会有一些描述 ...

  4. Arduino可穿戴教程认识ArduinoIDE

    Arduino可穿戴教程认识ArduinoIDE 认识ArduinoIDE Arduino IDE在Windows和Linux平台下除了启动方式之外,其他的使用方式基本是一致的.下面简单介绍一下常用的 ...

  5. NOIP2016模拟赛三 Problem B: 神奇的树

    题面 Description 有一棵神奇的树.这棵树有N个节点,在每个节点上都有宝藏,每个宝藏价值V[i]金币:对于每条边,每经过一次都要花费C[i]金币. 值得注意的是,每个宝藏只能领取一次(也可以 ...

  6. 全站之路一路坑(2)——在Apache下部署django博客

    上一篇博客:全栈之路一路坑之使用django开发博客 开发完博客之后,很多后续应用需要博客部署之后才可以使用,这篇文章就来尝试一下将开发好的博客部署到服务器上. 开发阶段,一直使用的是virtuale ...

  7. 使用 VS2010 开发 MapXtreme2008 遇到的问题 无法复制文件“C:\Program Files\Common Files\MapInfo\MapXtreme\7.0.0\Compiler.DLL”,原因是找不到该文件

    将需要引用的mapxtreme的dll引用到项目中,然后右键“属性”,将"复制本地“值改成false,编译成功

  8. zabbix监控系统-部署规划

  9. Free Code Camp社区对数百计编程学习者进行的统计希望告诉你什么?

    文章来源:https://www.sdk.cn/news/5044 著名编程学习社区Free Code Camp对超过1.5万名编程学习者进行了调查.其中有一个问题为:“你对哪个编程职位最感兴趣?”有 ...

  10. 以其他字段作为某一字段的值. 字段长度char_length(?)

    UPDATE t_dealer a INNER JOIN t_dealer b ON a.id=b.id SET a.zihao=b.shortName where a.zihao is null o ...