重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
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 :
本文原地址:
[img]前段時間公司項目加了許多關于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文檔進行批注與修改,等有時間我會放在后面一起介紹。
在iOS4.0系統中,官方SDK提供了一個QLPreviewController,使用它就可以讓我們的App在iPhone/iPad中直接預覽各個文件了。官方的開發文檔中說明其支持的文件類型有:
iWork文檔
微軟Office97以上版本的文檔
RTF文檔
PDF文件
圖片文件
文本文件和CSV文件
使用方法也很簡單,直接alloc出一個QLPreviewController對象,用presentModalViewController方法把它調出來即可。要指定QLPreviewController預覽那個文件,只要直接實現它的代理方法previewItemAtIndex,返回一個NSURL對象即可:
- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx
{
return [NSURL fileURLWithPath:[NSString stringWithFormat:@“%@/Documents/files/%@”, NSHomeDirectory(), [fileList objectAtIndex:currentIndex]]];
}
對以上文件格式的瀏覽效果,還是不錯的。