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 ...
随机推荐
- 【异常】java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte
异常信息: java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte at com.star.sms.busines ...
- NOI模拟赛Day2
深深的感受到了自己的水 ---------------------------------------------------------------------------------------- ...
- ThinkPHP3.2.3--相对路径的写法
window.location.href='/index.php/Home/Manager/login' 以 / 开始,而不是 ./
- OBject copy 和retain区别
@interface Person : NSObject //retian : release 旧值,retain 新值 @property(nonatomic,retain) Book *book; ...
- 【Go语言】连接数据库SQLite、MySQL、Oracle
本文目录 1.Go连接SQLite 1_1.SQLite推荐驱动 1_2.SQLite连接示例代码 2.Go连接MySQL 2_1.MySQL推荐驱动 2_2.MySQL连接示例代码 3.Go连接Or ...
- 如何打印出lua里table的内容
不像开发as3时用fb有强大的断点调试功能,一般lua开发不用什么高级的ide,貌似也没有适合的,就直接用sublime.exvim等文本编辑器,直接编译运行看结果.所以不能很方便的知道变量值,特别是 ...
- 处理海量数据的高级排序之——快速排序(C++)
代码实现 ...
- Relax NG 在Odoo中的应用
想必有些同学一定会奇怪,Odoo是如何将模块中的XML中的诸如record.menuitem是如何被组织和定义的,以及各种field的各种属性究竟有哪些,今天,我们就来一探究竟. Relax NG:“ ...
- 使用 GCC 调试程序
系统 Ubuntu 调试示例: #include <stdio.h> int func(int n) { ,i; ;i<n;i++) { sum+=i; } return sum; ...
- A quick tour of JSON libraries in Scala
A quick tour of JSON libraries in Scala Update (18.11.2015): added spray-json-shapeless libraryUpdat ...