365体育网投特记录下实现的过程。但这里的文书称涉嫌到预览文件时展示的标题。

三.预览打开文件

开拓预览下载成功之文书之方式如下:

/**
 打开文件

 @param filePath 文件路径
 */
-(void)openDocxWithPath:(NSString *)filePath {

    UIDocumentInteractionController *doc= [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
    doc.delegate = self;
    [doc presentPreviewAnimated:YES];
}

我用的是UIDocumentInteractionController,还足以用QuickLook或者webView打开文件,后面会贴小demo.设置UIDocumentInteractionController代理,添加代理方法.

#pragma mark - UIDocumentInteractionControllerDelegate
//必须实现的代理方法 预览窗口以模式窗口的形式显示,因此需要在该方法中返回一个view controller ,作为预览窗口的父窗口。如果你不实现该方法,或者在该方法中返回 nil,或者你返回的 view controller 无法呈现模式窗口,则该预览窗口不会显示。

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{

    return self;
}

- (UIView*)documentInteractionControllerViewForPreview:(UIDocumentInteractionController*)controller {

    return self.view;
}

- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController*)controller {

    return CGRectMake(0, 30, kDeviceWidth, kDeviceHeight);
}

意义图如下

QQ20170227-191541@2x.png

QuickLook打开文档的demo如下:

#import "ViewController.h"
#import <QuickLook/QuickLook.h>

@interface ViewController ()<QLPreviewControllerDataSource>

@property (nonatomic,strong) QLPreviewController *previewVC;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    self.previewVC = [[QLPreviewController alloc] init];
    self.previewVC.dataSource = self;
    [self presentViewController:self.previewVC animated:YES completion:nil];
}

//实现代理协议
#pragma mark-----------QLPreviewControllerDataSource

//要显示的文件的数量
/*!
 * @abstract Returns the number of items that the preview controller should preview.
 * @param controller The Preview Controller.
 * @result The number of items.
 */
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{
    return 3;
}


- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{
    //这个是加载的本地的pdf的文件,doc的同理
    NSString *path;
    switch (index) {
        case 0:
        {
            path = [[NSBundle mainBundle] pathForResource:@"testDoc" ofType:@"docx"];
        }
            break;
        case 1:
        {
            path = [[NSBundle mainBundle] pathForResource:@"testDoc" ofType:@"pages"];
        }
            break;

        case 2:
        {
            path = [[NSBundle mainBundle] pathForResource:@"testDoc" ofType:@"pdf"];
        }
            break;


        default:
            break;
    }
    NSURL *url = [NSURL fileURLWithPath:path];
    return url;
}

webView预览文档的章程如下:

    NSString *filePath = @"";//文件存储地址
    NSURL *url = [NSURL fileURLWithPath:filePath];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, kDeviceWidth, kDeviceHeight)];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];

不畏写及此地,有啊错误的地方要情侣指正!!!
(若有心上人实现了iOS端可填写Excel表格,跪求Demo!!!)

– (void)viewDidLoad {

一.兑现公文下充斥

自身实现公文下充斥使的是AFNetworking,具体落实代码如下:

/**
 下载文件

 @param docPath 文件路径
 @param fileName 文件名
 */
-(void)downloadDocxWithDocPath:(NSString *)docPath fileName:(NSString *)fileName {
    [MBProgressHUD showMessage:@"正在下载文件" toView:self.view];
    NSString *urlString = @"http://66.6.66.111:8888/UploadFile/";

    urlString = [urlString stringByAppendingString:fileName];

    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
        NKLog(@"%lld   %lld",downloadProgress.completedUnitCount,downloadProgress.totalUnitCount);

    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        NSString *path = [docPath stringByAppendingPathComponent:fileName];
        NKLog(@"文件路径===%@",path);
        return [NSURL fileURLWithPath:path];//这里返回的是文件下载到哪里的路径 要注意的是必须是携带协议file://
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
        [MBProgressHUD hideHUDForView:self.view];
        [MBProgressHUD showSuccess:@"下载完成,正在打开" toView:self.view];
//        if (error) {
//            
//        }else {
            NSString *name = [filePath path];
            NKLog(@"下载完成文件路径===%@",name);
            [self openDocxWithPath:name];
//        }
    }];
    [task resume];//开始下载 要不然不会进行下载的

}

path = [[NSBundle mainBundle] pathForResource:@”testDoc”
ofType:@”pdf”];

多年来开了只办公系统项目,需要展开落实word文档下载预览功能,以前从未举行过相关物,特记录下实现之长河:

2、QLPreviewController可以协同浏览多个文件,而UIDocumentInteractionController一不好只能浏览一个文书。

二.文本存储路径

下载地址不可用,请以实际地址.
为了方便,本人将生充斥下来的文书一直保存在了Documents文件夹下,代码如下:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths lastObject];

    NKLog(@"app_home_doc: %@",documentsDirectory);

    NSFileManager *fileManager = [NSFileManager defaultManager];

    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:docPath]; //docPath为文件名

    if ([fileManager fileExistsAtPath:filePath]) {
        //文件已经存在,直接打开
        UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"是否打开文件" message:nil preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction * cancelAction  =[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];

        [alertController addAction:cancelAction];

        [alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
            [self openDocxWithPath:filePath];
        }]];

        [alertController.actions setValue:[UIColor colorWithHexString:@"3998ef"] forKey:@"_titleTextColor"];
        [self presentViewController:alertController animated:YES completion:nil];

    }else {
        //文件不存在,要下载
        UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"是否下载并打开打开文件" message:nil preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction * cancelAction  =[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];

        [alertController addAction:cancelAction];

        [alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
            [self downloadDocxWithDocPath:documentsDirectory fileName:docPath];
        }]];

        [alertController.actions setValue:[UIColor colorWithHexString:@"3998ef"] forKey:@"_titleTextColor"];
        [self presentViewController:alertController animated:YES completion:nil];

    }

{

}

* @result The number of items.

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,
0, kDeviceWidth, kDeviceHeight)];

365体育网投 1

break;

注意五:

}

{

@implementation ViewController

#import

webView预览文件方式:

case 1:

NSString *path;


注意四:

1、UIDocumentInteractionController 和
QuickLook 不克在线预览,只能加载本地文件。

return 3;

注意七:

[super viewDidLoad];

//这个是加载的地方的pdf的文件,doc的同理

此自己举行了一个因文件称判断文件是否有的if…else语句。如果文件在,直接调用预览文件之道即可。

@end

break;

我这边用的预览文件措施是UIDocumentInteractionContorller,

– (id )previewController:(QLPreviewController *)controller
previewItemAtIndex:(NSInteger)index{

NSURL *url = [NSURL fileURLWithPath:path];

//要显示的文件的数量

QuickLook打开文件方式:

break;

}

break;

先是下充斥文件并预览这无异过程,需要由下载文件路径,存储路径,预览文件三独步骤来好。

这边就是要以下载文件的地方拼接完整

* @param controller The Preview Controller.

#pragma mark———–QLPreviewControllerDataSource

此用的凡文件称,这个文件称好是后台上传的文书称,也足以友善随便起一个名,但此间的文件称涉到预览文件时展示的题,也就是说,这里从什么名字,在预览文件之时节标题就是啊。


补给:预览文件贯彻方式

{

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

//实现代理协议

注意三:

}

path = [[NSBundle mainBundle] pathForResource:@”testDoc”
ofType:@”docx”];

此处是产充斥完成的不二法门

当赋值文件路径和文件称的下遇到一些辛苦,一直就从不起头这个文件,经过不懈努力,终于找到问题之因由,下面分享出来为大家做参考。

docPath:这个参数这里是本地路径,也就是代码最开头的有数句。

default:

内需订立UIDocumentInteractionControllerDelegate

[self presentViewController:self.previewVC animated:YES
completion:nil];

#import “ViewController.h”

/*!

case 2:

self.previewVC.dataSource = self;

}

[webView loadRequest:[NSURLRequest requestWithURL:url]];

case 0:

switch (index) {

这里的docPath 和 fileName跟注意四一样,调用的时候赋值

注意六:

return url;

自这里运用的凡UIDocumentInteractionController,还好行使QuickLook或者webView打开文件


(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController
*)controller{

注意八:

@interface ViewController ()

@property (nonatomic,strong) QLPreviewController *previewVC;

NSString *filePath = @””;//文件存储地点

这边是自后台获取到之文书路径+文件称,例:/upload/notice/201708/哈哈哈.doc

3、使用QLPreviewController时,需要导入QuickLook.framework,并遵守其数据源和代理方。

注意二:

注意一:

假定文件不有,则调用下载文件之点子,

}

*/

path = [[NSBundle mainBundle] pathForResource:@”testDoc”
ofType:@”pages”];

self.previewVC = [[QLPreviewController alloc] init];

* @abstract Returns the number of items that the preview controller
should preview.

}

fileName:这个参数这里是收获后台受上污染文书的万分文件称。

}

设置UIDocumentInteractionController代理,添加代理方法.

此间@””,可以填充文件称,根据自己需要做后台获取之公文路径拼接而定,我这里的文件称于达标等同句子代码中拼接完成,这里虽无欲重新填充文件称,以免造成下载路径不针对。

urlString = [urlString stringByAppendingString:@””];

NSURL *url = [NSURL fileURLWithPath:filePath];


相关文章