这里面包括下载和打开文档的操作:需要先导入《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文档方式的更多相关文章

  1. Android打开doc、xlsx、ppt等office文档解决方案

    妹子我写代码很辛苦/(ㄒoㄒ)/~~ ,转载请标明出处哦~http://blog.csdn.net/u011791526/article/details/73088768 1.Android端有什么控 ...

  2. swagger2 导出离线Word/PDF/HTML文档

    swagger2离线导出Word/PDF/HTML文档 1.前言 通过前面的两篇博客 我们已经介绍了如何使用spring boot整合swagger2 生成在线的API文档. 但是某些情况下,我们需要 ...

  3. CEBX格式的文档如何转换为PDF格式文档、DOCX文档?

    方正阿帕比CEBX格式的文档如何转换为PDF格式文档.DOCX文档? 简介: PDF.Doc.Docx格式的文档使用的非常普遍,金山WPS可以直接打开PDF和Doc.Docx文档,使用也很方便. CE ...

  4. FORM实现中打开图片,链接,文档(参考自itpub上一篇帖子,整理而来)

    FORM实现中打开图片,链接,文档 参考自itpub上一篇帖子,整理而来 1.添加PL程序库D2kwutil.pll 2.主要实现程序 /*过程参数说明: v_application --打开文件的应 ...

  5. 如何设置PDF签名文档,PDF签名文档怎么编辑

    在工作中我们都会遇到有文件需要签名的时候,如果是在身边就直接拿笔来签名了,那么如果没有在身边又是电子文件需要签名的时候应该怎么办呢,这个时候就应该设置一个电子的签名文档,其他的文件电子文件签名很简单, ...

  6. word中怎样把文档里的中文以及中文字符全选?

    word中怎样把文档里的中文以及中文字符全选? 参考: 百度 案例: 有个文档是中英文混杂的 现在需要把中文以及中文字符全部设置成别的颜色 应该怎样操作? 有80多页 别说让我一个一个的设置 以wor ...

  7. Aspose 强大的服务器端 excel word ppt pdf 处理工具

    Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx

  8. 无法打开虚拟机“master”(D:\文档\Virtual Machines\master\master.vmx):未找到文件。是否从库中移除“master”?

    今天打开虚拟机的时候,出现了这样的弹窗提示: 无法打开虚拟机"master"(D:\文档\Virtual Machines\master\master.vmx):未找到文件.是否从 ...

  9. C# word文档转换成PDF格式文档

    最近用到一个功能word转pdf,有个方法不错,挺方便的,直接调用即可,记录下 方法:ConvertWordToPdf(string sourcePath, string targetPath) so ...

随机推荐

  1. Android -- 服务组件的使用(1)

    1. 效果图

  2. 五、点数器《苹果iOS实例编程入门教程》

    该app为应用的功能为一个简单的数数程序 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Applic ...

  3. Linux下memcached安装和启动方法

    Linux下memcached安装和启动方法 1. 首先下载memcached 和 libevent 包. Memcached用到了libevent这个库用于Socket的处理.下面是下载的两个包文件 ...

  4. 【Go语言】面向对象扩展——接口

    简单地说 Interface是一组Method的组合,可以通过Interface来定义对象的一组行为.如果某个对象实现了某个接口的所有方法,就表示它实现了该借口,无需显式地在该类型上添加接口说明. I ...

  5. 原生javascript封装ajax和jsonp

    在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...

  6. [LintCode] Sort Integers II 整数排序之二

    Given an integer array, sort it in ascending order. Use quick sort, merge sort, heap sort or any O(n ...

  7. Load Mental Ray in Maya 2015

    In Maya 2015, we usually use mental ray to render our model, some new users may not see the mental r ...

  8. WinForm 窗体属性

    WinForm - C/S 客户端     B/S 网页端 客户端应用程序 - 是需要安装在用户电脑上才可以使用的程序特点:不需要联网也可以打开使用部分功能但是现在的情况是许多功能依然需要互联网的支持 ...

  9. HTML--JS练习小游戏(别踩白块儿)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. artdialog4.1.7 中父页面给子页面传值

    artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...