这里面包括下载和打开文档的操作:需要先导入《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. osg学习示例之遇到问题四骨骼动画编译osgCal

    osg学习示例之遇到问题四骨骼动画编译osgCal 转自:http://blog.csdn.net/wuwangrun/article/details/8239451 今天学到书<OpenSce ...

  2. String之“==”与equals

    有时候String类型用“==”判断相等时无法成功,经过实验,用string.equals方法可以判断成功!! for (int i = 0; i < 10000; i++) {   Strin ...

  3. mysql 存储过程 删除重复

    DELIMITER $$ CREATE PROCEDURE `delRepeatCA`() BEGIN DECLARE tally INT DEFAULT 0; SELECT COUNT(rs.c_C ...

  4. 淘宝前端工程师:国内WEB前端开发十日谈

    一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...

  5. 读Thinking in java 4

    读tij4 ,生活中还是杂事太多,有时候就忘了最初买书来读的初衷,也没了刚开始激情了,为了督促下自己,好好看完一本书,不妨来写写读书笔记吧.

  6. Jquery省市区三级联动案例

    //Java部分代码 public String province() throws Exception { List<Province> list=cityBiz.showProvinc ...

  7. hdu 小希的迷宫

    真是被这道并查集的水题给坑哭了...忘记给uset数组初始化我也是醉了. 题目意思是找到判断是不是连通无环的图,首先想到的就是并查集. 1判断成环的时候,只要判断输入边的两个点.有一个共同的父节点,那 ...

  8. 从全局中通过class类名获取标签

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. c#语句 随堂练习2

    1.方程ax²+bx+c=0是一元二次方程,求根. 2.输入一个年份 ,判断是不是闰年.(能被4整除但不能被100整除的年份是闰年,有的世纪年也是闰年) 3.标准体重:男士体重=身高-100±3:女士 ...

  10. spring security 匿名登录

    匿名登录,即用户尚未登录系统,系统会为所有未登录的用户分配一个匿名用户,这个用户也拥有自己的权限,不过他是不能访问任何被保护资源的. 设置一个匿名用户的好处是,我们在进行权限判断时,可以保证Secur ...