iOS PDF文件的显示和浏览

简介

这里介绍两种方法显示PDF,第一种用UIWebView,特点是代码简单,但是没法实现翻页效果。第二中方法利用IOS系统的CGContextDrawPDFPage方法手动实现,代码复杂一些,同时需要配合UIScrollView实现缩放,以及利用UIPageViewController实现翻页的效果。

方法一:利用UIWebView

1
2
3
4
5
6 
-(void)loadPDF:(NSString*)fileName inWebView:(UIWebView*)webView{  NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];  NSURL *url = [NSURL fileURLWithPath:path];  NSURLRequest *request = [NSURLRequest requestWithURL:url];  [webView loadRequest:request]; } 
  • 技巧:设置webView.scalesPageToFit = YES;可以实现pinch放大缩小
  • 缺点:没有翻页的动画效果

方法二:利用CGContextDrawPDFPage

CGContextDrawPDFPage

1
2
3
4
5
6 7 8 9 10 11 12 13 14 15 16 17 18 
-(void)drawInContext:(CGContextRef)context atPageNo:(int)page_no{  // PDF page drawing expects a Lower-Left coordinate system, so we flip the coordinate system  // before we start drawing.  CGContextTranslateCTM(context, 0.0, self.bounds.size.height);  CGContextScaleCTM(context, 1.0, -1.0);   if (pageNO == 0) {  pageNO = 1;  }  CGPDFPageRef page = CGPDFDocumentGetPage(pdfDocument, pageNO);  CGContextSaveGState(context);  {  CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, self.bounds, 0, true);  CGContextConcatCTM(context, pdfTransform);  CGContextDrawPDFPage(context, page);  }  CGContextRestoreGState(context); } 

需要先反转坐标,根据pageNO获取到CGPDFDocumentRef的那一页,直接CGContextDrawPDFPage。

UIScrollView

配合UIScrollView实现缩放,ZPDFPageController的主要代码:

1
2
3
4
5
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
-(void)viewDidLoad{  [super viewDidLoad];  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];  scrollView.showsVerticalScrollIndicator=NO;  scrollView.showsHorizontalScrollIndicator=NO;  scrollView.minimumZoomScale=1.0f;  scrollView.maximumZoomScale=3.0f;  scrollView.delegate=self;  [self.view addSubview:scrollView];   pdfView = [[ZPDFView alloc] initWithFrame:scrollView.bounds atPage:(int)self.pageNO withPDFDoc:self.pdfDocument];  pdfView.backgroundColor=[UIColor whiteColor];  [scrollView addSubview:pdfView];   scrollView.contentSize=pdfView.bounds.size; }  - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{  return pdfView; } 

UIPageViewController

UIPageViewController的TransitionStyle设置为UIPageViewControllerTransitionStylePageCurl(翻页)。其次也是构建UIPageViewControllerDataSource中的两个方法(ZPDFPageModel)。要注意他们返回的是UIViewController,具体实现请参考源码。

效果展示

PDF1 PDF2

源码下载

PDFDemo

参考链接

http://blog.csdn.net/yiyaaixuexi/article/details/7645725

转载于:https://www.cnblogs.com/liyanyan/p/5442437.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 精通iOS开发PDF指的是对iOS平台上的PDF文档处理和显示有深入的了解和掌握。 首先,精通iOS开发PDF,意味着熟悉iOS开发环境和相关的开发工具,如Xcode和Swift/Objective-C等。掌握iOS开发技术,能够开发出高质量的iOS应用程序。 其次,精通iOS开发PDF,意味着熟悉PDF文档的处理和显示。能够使用相关的库和API进行PDF文档的解析、渲染和呈现,实现PDF文件浏览、缩放、翻页等功能。精通者还会处理PDF文档的元数据、书签、书签导航等相关特性,并能够自定义PDF的样式、交互和显示效果。 此外,精通iOS开发PDF还需要了解PDF文档的安全和加密机制,能够进行PDF文档的加密、解密和权限控制。对于PDF文档的搜索、标注、批注、复制等功能也了如指掌。 最后,精通iOS开发PDF还需要对PDF标准有一定的了解,如了解PDF文件结构、对象模型、页面内容描述等。熟悉PDF标准,能够在开发过程中更好地理解和处理PDF文档。 总之,精通iOS开发PDF意味着在iOS平台上能够处理和展示PDF文档的各种需求,能够提供高效、稳定和优质的PDF文档处理功能。 ### 回答2: 精通iOS开发对于开发人员来说是非常重要的,因为iOS平台在移动应用开发领域占据着重要的地位。掌握iOS开发意味着熟悉并掌握了Objective-C或Swift编程语言、Cocoa Touch框架以及Xcode开发工具等。 在iOS开发中,对于PDF的处理也是一个常见的需求。PDF作为一种通用文档格式,被广泛应用于电子书、电子商务、电子文件等场景中。精通iOS开发的人员需要了解如何在应用中实现PDF的创建、显示和编辑等功能。 首先,对于PDF的创建,可以使用Core Graphics框架来进行绘制和生成PDF文件。通过绘制图形、插入文字和图片等操作,可以创建符合需求的PDF文档。 其次,对于PDF显示,可以使用PDFKit框架来进行处理。PDFKit提供了丰富的API,可以加载和显示PDF文件,实现对于页面的缩放、翻页以及搜索等功能。 最后,对于PDF的编辑,可以使用第三方开源库或者自己进行二次开发。这些库提供了对于PDF的各种操作,包括页面的增删改,文字和图形的插入和编辑,以及表单的填写等。 在精通iOS开发的过程中,需要深入理解PDF文件的结构和特性,并学习相关的API和工具。同时,也需要具备良好的代码能力和解决问题的能力,以便应对各种PDF处理的需求。 总之,掌握iOS开发并精通PDF的处理,对于开发人员来说是非常重要的技能。可以通过学习相关的知识和实践项目来提升自己的能力,在iOS开发领域中获得更多的机会和发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值