iOS 加载pdf格式的文件

可以加载的方式比较多,暂时先总结两种:

本地先导入一份pdf文件

type 1: 利用UIWebView加载

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
    [self.view addSubview:webView];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"基于Apache+JMeter" ofType:@"pdf"];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];

type 2:利用系统的预览文件的框架QuickLook

 首先导入框架QuickLook.framework

引入头文件#import <QuickLook/QuickLook.h>

实例化对象

  QLPreviewController *myQlPreViewController = [[QLPreviewController alloc]init];
    myQlPreViewController.delegate =self;
    myQlPreViewController.dataSource =self;
    [myQlPreViewController setCurrentPreviewItemIndex:0];
    //此处可以带导航栏跳转、也可以不带导航栏跳转、也可以拿到View进行Add
    [self presentViewController:myQlPreViewController animated:YES completion:^{
        NSLog(@"跳转完成");
    }];

声明代理

<QLPreviewControllerDelegate,QLPreviewControllerDataSource>

 实现协议

#pragma mark - QLPreviewController代理
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
    return 1;
}

- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
    
    NSString *path = [[NSBundle mainBundle] pathForResource:@"基于Apache+JMeter" ofType:@"pdf"];
    return [NSURL fileURLWithPath:path];
}

- (void)previewControllerDidDismiss:(QLPreviewController *)controller
{
    NSLog(@"预览界面已经消失");
}

//文件内部链接点击不进行外部跳转
- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item
{
    return NO;
}

至此结束,加载过程可能比较缓慢,毕竟需要加载本地pdf文件;

两种方式比较可以看出,第一种加载比较方便,但是内存消耗的比较多,第二种内存消耗的比较少,我实际测的是差20MB(用的模拟器)。

mark ---------

原文地址:https://www.cnblogs.com/110-913-1025/p/9084851.html