zoukankan      html  css  js  c++  java
  • 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 ---------

  • 相关阅读:
    android中实现监听的四种方法
    Jpgraph小应用
    正则表达式的初运用-认证界面
    Oracle案例04——TNS-12547: TNS:lost contact
    通过触发器记录数据库连接信息
    MySQL案例02:ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
    Oracle案例04——ORA-39700: database must be opened with UPGRADE option
    Oracle案例03——RMAN-06091: no channel allocated for maintenance (of an appropriate type)
    Xwiki安装部署详解
    MySQL案例01:Last_SQL_Errno: 1755 Cannot execute the current event group in the parallel mode
  • 原文地址:https://www.cnblogs.com/110-913-1025/p/9084851.html
Copyright © 2011-2022 走看看