iOS-打开word、ppt、pdf、execl文档方式
这里面包括下载和打开文档的操作:需要先导入《AFNetworking》的框架
第一步:创建一个显示文档的view:ReadViewController
(1).h的代码如下:
@interface ReadViewController : UIViewController
-(void)loadOfficeData:(NSString *)officePath;
@end
(2).m的代码如下:
@interface ReadViewController ()
{
UIWebView * _dataView;
NSString* _urlStr;
}
@end @implementation ReadViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)])
{
self.automaticallyAdjustsScrollViewInsets = NO;
self.modalPresentationCapturesStatusBarAppearance = NO;
} if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{ self.edgesForExtendedLayout = UIRectEdgeNone; } self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(back)];
} - (void)back {
[self dismissViewControllerAnimated:YES completion:nil];
}
//仍然下载上面的。m里面
-(void)loadOfficeData:(NSString *)officePath{
_urlStr=officePath;
if (!_dataView) {
_dataView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:_dataView];
}
_dataView.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
NSURL *url = [[NSURL alloc] initWithString:_urlStr];
_dataView.scalesPageToFit = YES;
NSURLRequest *requestDoc = [NSURLRequest requestWithURL:url];
[_dataView loadRequest:requestDoc];
}
第二步:创建一个下载和打开文档的工具类:YZFileDownloadAndReadTool
(1)YZFileDownloadAndReadTool.h的代码如下:
@interface YZFileDownloadAndReadTool : NSObject /* 打开文档 */
- (void)openDocument:(NSString *)documentPath; //设置单利
+ (YZFileDownloadAndReadTool *)shareManager; @end
(2)YZFileDownloadAndReadTool.m的代码如下:
#import "YZFileDownloadAndReadTool.h" #import "ReaderViewController.h"
#import "AFNetworking.h"
#import "ReadViewController.h" #define GetFileInAppData(file) [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"/Documents/%@",file]] @interface YZFileDownloadAndReadTool ()<ReaderViewControllerDelegate> @end @implementation YZFileDownloadAndReadTool + (YZFileDownloadAndReadTool *)shareManager {
static YZFileDownloadAndReadTool *shareManagerInstance = nil;
static dispatch_once_t predicate; dispatch_once(&predicate, ^{
shareManagerInstance = [[self alloc] init];
});
return shareManagerInstance;
} /**
* @author Jakey
*
* @brief 下载文件
*
* @param paramDic 附加post参数
* @param requestURL 请求地址
* @param savedPath 保存 在磁盘的位置
* @param success 下载成功回调
* @param failure 下载失败回调
* @param progress 实时下载进度回调
*/
- (void)downloadFileWithOption:(NSDictionary *)paramDic
withInferface:(NSString*)requestURL
savedPath:(NSString*)savedPath
downloadSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
downloadFailure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
progress:(void (^)(float progress))progress { //沙盒路径 //NSString *savedPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/xxx.zip"];
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSMutableURLRequest *request =[serializer requestWithMethod:@"POST" URLString:requestURL parameters:nil error:nil];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
[operation setOutputStream:[NSOutputStream outputStreamToFileAtPath:savedPath append:NO]];
[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
float p = (float)totalBytesRead / totalBytesExpectedToRead;
progress(p);
NSLog(@"download:%f", (float)totalBytesRead / totalBytesExpectedToRead); }]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
success(operation,responseObject);
NSLog(@"下载成功"); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
success(operation,error); NSLog(@"下载失败"); }]; [operation start];
} - (void)downloadDocumentOperation:(NSString *)fileName {
NSString *filePath = GetFileInAppData(fileName);
NSString *tempFileName = [NSString stringWithFormat:@"%@.bak",fileName];
NSString *tempFilePath = GetFileInAppData(tempFileName); NSLog(@"----savePath----%@", filePath); #warning url 需要修改 [self downloadFileWithOption:nil
withInferface:@"http://223.202.51.70/FileServer/DownloadFile/17adc036-24ac-4df8-8a49-90c312c0f300.pdf"
savedPath:filePath
downloadSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
[[NSFileManager defaultManager] moveItemAtPath:tempFilePath toPath:filePath error:nil];
// [self openDocument:filePath];
[self openHadDownloadDocument:fileName];
} downloadFailure:^(AFHTTPRequestOperation *operation, NSError *error) { } progress:^(float progress) { }];
} /* 打开文档 */
- (void)openDocument:(NSString *)documentPath{ UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
NSString *filePath = GetFileInAppData(documentPath);
NSString *documentName = [filePath lastPathComponent]; if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
[self downloadDocumentOperation:documentPath];
return;
} ReadViewController * readView=[[ReadViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:readView];
[window.rootViewController presentViewController:nav animated:YES completion:nil]; readView.navigationItem.title=documentPath;
NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString* _urlStr=[NSString stringWithFormat:@"%@/%@",documentsDirectory,[documentPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; [readView loadOfficeData:_urlStr]; }
第三步:在需要的点击,倒入 YZFileDownloadAndReadTool.h,接着实现
#pragma mark - 点击界面下载pdf
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { // YZFileDownloadAndReadTool *tools = [YZFileDownloadAndReadTool shareManager];
// [tools openDocument:@"01-传感器.pptx"]; [[YZFileDownloadAndReadTool shareManager] openDocument:@"01-传感器.pptx"];
// [tools openDocument:@"button圆角的设置和边框的设置.docx"];
// [tools openDocument:@"沃迪康工作计划安排.xlsx"];
// [tools openDocument:@"ArcGIS for iOS 2.3开发教程-基础版.pdf"];
}
iOS-打开word、ppt、pdf、execl文档方式的更多相关文章
- Android打开doc、xlsx、ppt等office文档解决方案
妹子我写代码很辛苦/(ㄒoㄒ)/~~ ,转载请标明出处哦~http://blog.csdn.net/u011791526/article/details/73088768 1.Android端有什么控 ...
- swagger2 导出离线Word/PDF/HTML文档
swagger2离线导出Word/PDF/HTML文档 1.前言 通过前面的两篇博客 我们已经介绍了如何使用spring boot整合swagger2 生成在线的API文档. 但是某些情况下,我们需要 ...
- CEBX格式的文档如何转换为PDF格式文档、DOCX文档?
方正阿帕比CEBX格式的文档如何转换为PDF格式文档.DOCX文档? 简介: PDF.Doc.Docx格式的文档使用的非常普遍,金山WPS可以直接打开PDF和Doc.Docx文档,使用也很方便. CE ...
- FORM实现中打开图片,链接,文档(参考自itpub上一篇帖子,整理而来)
FORM实现中打开图片,链接,文档 参考自itpub上一篇帖子,整理而来 1.添加PL程序库D2kwutil.pll 2.主要实现程序 /*过程参数说明: v_application --打开文件的应 ...
- 如何设置PDF签名文档,PDF签名文档怎么编辑
在工作中我们都会遇到有文件需要签名的时候,如果是在身边就直接拿笔来签名了,那么如果没有在身边又是电子文件需要签名的时候应该怎么办呢,这个时候就应该设置一个电子的签名文档,其他的文件电子文件签名很简单, ...
- word中怎样把文档里的中文以及中文字符全选?
word中怎样把文档里的中文以及中文字符全选? 参考: 百度 案例: 有个文档是中英文混杂的 现在需要把中文以及中文字符全部设置成别的颜色 应该怎样操作? 有80多页 别说让我一个一个的设置 以wor ...
- Aspose 强大的服务器端 excel word ppt pdf 处理工具
Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx
- 无法打开虚拟机“master”(D:\文档\Virtual Machines\master\master.vmx):未找到文件。是否从库中移除“master”?
今天打开虚拟机的时候,出现了这样的弹窗提示: 无法打开虚拟机"master"(D:\文档\Virtual Machines\master\master.vmx):未找到文件.是否从 ...
- C# word文档转换成PDF格式文档
最近用到一个功能word转pdf,有个方法不错,挺方便的,直接调用即可,记录下 方法:ConvertWordToPdf(string sourcePath, string targetPath) so ...
随机推荐
- usaco silver刷水~其实是回顾一下,补题解
[BZOJ1606][Usaco2008 Dec]Hay For Sale 裸01背包 ;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]=max(f[j], ...
- HDU-3549 最大流模板题
1.HDU-3549 Flow Problem 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 3.总结:模板题,参考了 http://ww ...
- 实现UITableView循环利用
tableViewUITableView循环利用 前言 大家都知道UITableView,最经典在于循环利用,这里我自己模仿UITableView循环利用,写了一套自己的TableView实现方案,希 ...
- Linux3.4内核 Yaffs2文件系统的移植
作者:李老师,华清远见嵌入式学院讲师. [实验目的] Yaffs2文件系统是嵌入式系统中常用到的一种文件系统,是也是移植Android所必须的.通过向FS_S5PC100平台移植Yaffs文件系统,了 ...
- MongoDB的数据库基本操作(二)
创建数据库 >use mydb switched to db mydb 查看所有的数据表 >show collections system.indexes 创建数据表 >db.c ...
- 类:String,Math,DateTime,Random随机数,异常保护
String类: 练习: Math类: Random随机数: DateTime类: 异常保护: 练习: 1. 2. 3.方法一: 方法二: 4.人机大战石头剪刀布 5. //请输入你想输入的数字 // ...
- WIN8 MTK驱动不能安装解决办法
1.把鼠标移动到桌面最右下角的位置会出来一个侧边栏,按那个齿轮就是“设置”,会出来个菜单,选择最下边的“更多电脑设置” 注:也可以按快捷键“WIN+I” 2.选择“常规”→“高级启动”→”立即重启“ ...
- JSP + AJAX完整实例及代码
(1)发送请求index.jsp,注意引入jquery.min.js文件 <%@ page language="java" contentType="text/ht ...
- 调试WEB APP多设备浏览器
方法:adobe shadow \ opera远程调试\ weinre adobe shadow: 我们经常使用Firefox的firebug或者Chrome的开发人员工具进行Web调试页面,Jav ...
- 模拟状态为active的日志损坏的数据恢复实验(不完全恢复)
1查看当前日志状态 首先不完全恢复是会丢失数据的,由此在当前打开的数据中我们创建一些测试数据,用来验证当我们进行完不完全恢复后该数据是否还存在. 2模拟删除CURRENT状态的日志 3启动数据验证错误 ...