iOS利用QLPreviewController显示PDF,word,execl,txt等格式的文件

以前预览PDF格式采用UIWebview,或者利用CGPDFDocumentGetPage显示。

今天发现QLPreviewController也可以实现预览PDF的功能,步骤如下:

1,在项目中导入QuickLook框架

2,引入QuickLook头文件,在项目中准备一下PDF的测试文件

3,

//
//  ViewController.m
//  QLPreviewControllerTest
//
//  Copyright © 2016年 digimagus. All rights reserved.
//

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

@interface ViewController ()<QLPreviewControllerDelegate,QLPreviewControllerDataSource>

@end

@implementation ViewController
{
    NSArray *_PDFArray;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    UIButton * btn =[UIButton buttonWithType:UIButtonTypeSystem];
    
    btn.frame =CGRectMake(10, 100, 300, 40);
    
    [btn setTitle:@"打开" forState:UIControlStateNormal];
    
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:btn];
    
    NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
    
    _PDFArray =@[pdfPath];
}


-(void)btnClick:(UIButton *)btn

{
    
    QLPreviewController* qlPreview = [[QLPreviewController alloc]init];
    
    qlPreview.dataSource= self; //需要打开的文件的信息要实现dataSource中的方法
    
    qlPreview.delegate= self;  //视图显示的控制
    
    [self presentViewController:qlPreview animated:YES completion:^{
        
        //需要用模态化的方式进行展示
        
    }];
    
}

#pragma mark - previewControllerDataSource

-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController*)controller
{
    return _PDFArray.count; //需要显示的文件的个数
}

-(id<QLPreviewItem>)previewController:(QLPreviewController*)controller previewItemAtIndex:(NSInteger)index

{
    
    //返回要打开文件的地址,包括网络或者本地的地址
    
    NSURL * url =[NSURL fileURLWithPath:_PDFArray[index]];
    
    return url;
    
}

#pragma mark - previewControllerDelegate



-(CGRect)previewController:(QLPreviewController*)controller frameForPreviewItem:(id<QLPreviewItem>)iteminSourceView:(UIView *__autoreleasing *)view

{
    
    //提供变焦的开始rect,扩展到全屏
    
    return  CGRectMake(110, 190, 100, 100);
    
}


//
//-(UIImage *)previewController:(QLPreviewController*)controller transitionImageForPreviewItem:(id<QLPreviewItem>)itemcontentRect:(CGRect *)contentRect
//
//{
//    
//    //返回控制器在出现和消失时显示的图像
//    
//    return [UIImage imageNamed:@"gerenziliao_morentouxiang.png"];
//    
//}

-(void)previewControllerDidDismiss:(QLPreviewController*)controller

{
    
    //控制器消失后调用
    
}

-(void)previewControllerWillDismiss:(QLPreviewController*)controller

{
    
    //控制器在即将消失后调用
    
}
@end



Vant是一款基于Vue.js的移动端UI组件库,提供丰富的组件用于构建移动应用。列表是Vant中的一个常用组件,用于展示列表数据。可以通过Vant的列表组件轻松实现在移动端展示Word和Excel文档的功能。 要在Vant的列表中显示Word和Excel文档,可以按照以下步骤操作: 1. 首先,需要引入Vant的列表组件。可以通过在Vue的组件中使用Vant的List组件,来实现列表的显示。 2. 接下来,准备好要展示的Word和Excel文档的数据。可以在Vue的data中定义一个数组,包含所有要展示的文档的对象。每个对象包含文档的相关信息,比如文档的标题、文件路径等。 3. 在Vue的模板中,使用Vant的List组件,并将数据传递给组件的属性中。可以使用v-for指令循环遍历数据,将每个文档都展示出来。可以通过模板字符串来拼接每个文档的展示内容,比如将文档的标题放在一个`<div>`中,将文件路径放在一个`<span>`中。 4. 可以为每个文档项添加点击事件,当用户点击某个文档时,可以执行相应的操作,比如打开文档、下载等。可以通过在模板中的文档项元素上绑定一个@click事件,并将点击事件的处理函数写在Vue的methods选项中。 5. 最后,可以为列表添加样式,使其在移动端展示更加美观。可以通过在模板中的List组件上添加class或style属性来自定义样式,也可以使用Vant提供的样式类来美化列表。 通过以上步骤,我们可以在Vant的列表组件中成功显示Word和Excel文档。用户可以通过列表查看文档,并进行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值