扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
CFURLRef pdfURL = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:source]);
创新互联是一家集网站建设,井陉企业网站建设,井陉品牌网站建设,网站定制,井陉网站建设报价,网络营销,网络优化,井陉网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);
或者
NSURL * url = [NSURL URLWithString:self.fileName];
CFURLRef pdfURL = (__bridge CFURLRef _Nonnull)url;
CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL(pdfURL);
2017年夏天,在苹果全球开发者大会(WWDC)上,苹果公司终于推出了针对于 iOS 的 PDFKit 支持。PDFKit 自从 MacOS 10.4 以来一直在 AppKit for MacOS 中。但 UIKit 却迟迟得不到支持,尽管苹果公司之前在 iBooks 和 Mail 中使用过 PDFKit , 但是该框架并未向开发人员开房。
PDFKit 包含了大量关于 PDF 相关的功能,例如,打开,修改,绘图和保存 PDF ,也包含了搜索文本。在 iOS 11 后,苹果终于开放了 PDFKit 。目前(虽然离 PDFKit 发布已经过了一年多),但是目前中文资料和 Demo 确实比较少,下面笔者就带着大家简单的了解一下 PDFKit。
主要核心功能如下:
PDFView
PDFDocument
PDFPage
PDFAnnotation
让我看到你们的双手, put your hands up!
引入 #import PDFKit/PDFKit.h ,创建 PDFView ,创建之前,首先要创建 PDFDocument ,这里通过文件路径 URl 进行创建。
创建 PDFView ,将 PDFDucument 对象赋给 PDFView。
至此,就实现了 PDF 的读取及显示。
首先获取 PDFDocument 的属性 PDFPage :
通过 PDFPage 的对象方法,可以获取 PDF 的缩略图,这里需传入图片的 size:
创建 collectionViewCell ,通过 collectionView 就可以实现一个大致的功能。
点击跳转
获取 cell 的点击事件,取出所点击的 PDFPage 对象,用下述方法进行跳转:
PDFOutline 是一个层级关系的对象,他表示 PDF 的大纲(也就是我们常用的书签)。每个 PDFOutline 对象都可通过 childAtIndex: 方法获取出他的孩子对象, 注意 ,这里需要先判断 numberOfChildren ,以确定该 outline 对象存在多少个孩子节点,避免下标超界引发的崩溃。
实现大纲功能
从 PDFDocument 中获取 PDFOutline
遍历 outline 孩子节点(默认只遍历一层)
当点击节点时,判断有无孩子节点,进行当前数组的新增或删除。
这里搜索功能主要靠下述方法实现
调用此方法之前,首先需将 PDFDocument 设置代理,通过 PDFDocument 的代理进行回调。获取 PDFSelection 对象,
再根据 selection 对象显示搜索内容。
调用下述方法即可对 PDFView 进行缩放,
实现双击缩放或还原:
这里通过设置 pdfView 的 scaleFactor 属性即可实现, 注意 : scaleFactorForSizeToFit 属性是当前 PDF 充满屏幕的比例。
GitHub :
本文原地址:
非常感谢大家对我的关注!!!!
打开文件的方法:
1.获取文件的沙盒路径path
2.将path路径转化URL
3.用webView显示出来
前段时间公司项目加了许多关于PDF文件操作的需求,其中包括 PDF文档的预览 、 PDF文件格式转换 、 从其他App获取文件 、 PDF文档的批注与修改 。这篇文章我会先记录下PDF文档的几种预览方式。
先看效果:
苹果的webView组件可以预览各种格式的文件,支持在线预览和本地预览,相比于安卓的webView控件简直就是一大神器,UIWebview使用起来也非常简单
QLPreviewController 是系统自带的文件预览控制器,QL全称 quick look 快速查看的意思,要使用QLPreviewController先得在文件中导入头文件 #import QuickLook/QuickLook.h ,并且实现其代理方法 QLPreviewControllerDelegate
使用UIDocumentInteractionController预览文件也得遵循 UIDocumentInteractionControllerDelegate 代理方法,UIDocumentInteractionController本身并不是一个控制器类,它直接继承 NSObject ,所以就不能直接push或者模态跳转了,所以需要使用它类方法提供的模态跳转函数
利用 CGContexDrawPDFPage 和 UIPageViewController 实现翻页浏览功能,这种方法只能加载本地的PDF文件,但是显示效果比其他几种炫酷很多。具体使用方法参考 iOS开发笔记——PDF的显示和浏览 这篇博客。也可以参考本文的 Demo
关于PDF文档的预览其实不止上文介绍的几种方法,还可以通过第三方SDK来加载并对PDF文档进行批注与修改,等有时间我会放在后面一起介绍。
ios怎么打开PDF文件。你可以在APP store商城搜索轻快PDF阅读器,你看名字就知道这是个阅读PDF文件的软件。获取安装轻快PDF阅读器,知道桌面上出现了PDF阅读器的图标。
这就是轻快PDF阅读器的图标,直接运行软件。你再去打开原先打不开的PDF文件,选择其他方式打开,在选择轻快PDF阅读器来打开,那样你的PDF文件就可以打开了!
UIPageViewController在iOS 5 SDK中首次引入,它使得开发者可以使用这个ViewController创建分页视图。在iOS 6中,这个类有了更新,支持滚动过渡效果。使用Page View,用户可以方便的通过手势在多个页面之间导航。UIPageViewController并不仅仅用于引导页,很多游戏,例如:愤怒的小鸟,就是用Page View来展示关卡选择的页面,还有有关书籍的应用,用这个类来显示书的页面。example UIPageViewController是个高度可配置的类,你可以进行如下配置: 分页的方向——水平或垂直 翻页的样式——书卷翻页或者滑动翻页 书脊位置——只有书卷翻页样式有效 页面间距——只有滑动翻页样式有效,用来定义页面间距(inter-page spacing) 为了演示,我们会一起创建一个简单的app。当然,我们不会演示所有的UIPageViewController的配置细节,我们会演示到使用滑动翻页样式来创建一个引导页。不过别担心,有了对UIPageViewController的基本理解,我相信你能够去探索其他的特性。 开始吧! Demo一览 我们要创建的Demo很简单,它会显示4个页面来介绍app的UI。用户可以在页面之间滑动切换。在任何时候用户点击“Start again”按钮会回到第一页。你能在Snapguide或Airbnb等app中找到很多类似的引导页,所以这个效果你应该不陌生。创建项目 打开Xcode并创建一个Simple View Application项目。选择Single View Application看起来有点奇怪,因为Xcode已经提供了基于UIPageViewController的具有完整功能的Page-Based Application模板。但是,这个模板还是有一些复杂,把这个模板解释清楚比重新开始一个项目要复杂的多。况且,从零开始一定会让我们对UIPageViewController的使用有更好的掌握。好了,开始吧。下个页面中输入PageViewDemo作为项目名称,在company identifier栏中填入com.appcoda,设备类型选择iPhone。点击下一步并创建项目。在Storyboard中创建Page View Controller 下一步,选择Main.storyboard。通常,你会看到一个默认的由Xcode生成的View Controller,先别管它,从Object Library拖出一个Page ViewController到Storyboard中。然后再拖出另一个View Controller。在这个项目中,第一个View Controller会作为根View Controller,承载Page View Controller。最后添加的View Controller会作为页面的内容。后文中,用“根VC”代表“第一个View Controller”,“内容VC”代表“最后添加的View Controller”。 你可能会疑惑为什么只添加1个View Controller作为4页的内容,难道不应该使用4个View Controller吗?通过后面的演示你会发现,引导页都非常相似,通过复用这个View Controller显然是更好的选择。 下一步,给内容VC和Page View Controller分别设置一个ID。你能在Identity Inspector面板方便地设置。将Page View Controller的ID设置为“PageViewController”,将内容VC的ID设置为“PageContentController”。后面我们会在代码中使用到这些ID。Page View Controller的默认变换样式是翻页效果(Page Curl),这个效果比较适合书籍类应用。引导页中,使用滑动效果更合适,所以将transition style更改为Scroll。现在来设计内容vc的界面。拖出一个Image View和一个Label到Controller中。按照喜好更改字体和字号。但是你的View Controller应该和下面截图的样子类似。对于那个默认的View Controller,在底部添加一个“Start again”按钮。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流