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