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 ---------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM