2012-12-04 35 views
0

我正在使用VFR閱讀器來顯示我的pdf。我需要提取上的按鈕點擊的目錄表,並在tableview中顯示出來,那麼它應該導致同時each.I攻一派此相應的頁面,並得到了這些鏈接iPhone sdk如何從PDF文件檢索目錄?

  1. Create a table of contents from a pdf file
  2. http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-adding-a-table-of-contents-to-an-ipad-reader/

而我開始知道,要獲得TOC,我們必須使用「CGPDFDocumentGetCatalog(pdf doc)」。但在我的讀者中,「CGPDFDocumentGetCatalog(pdf doc)」根本就沒有被調用。現在我怎樣才能從我的pdf文件中提取我的TOC?請幫我解決這個問題。我在這一週掙扎着。提前致謝。

回答

0

不幸的是,我認爲你提到的兩個答案指向了不同的實施策略,這兩種策略都可能有效但不同。

第一個問題是您的應用程序中想要顯示的PDF文件的樣子。在PDF文件中沒有預定義的TOC對象,只有不同的方式來模擬這個。最常用的兩種方法是:

A)書籤,這是一種將少量文本添加到結構化樹中的方法,其中每段文本都指向PDF文件中的特定位置。這些書籤可以添加到設計應用程序中或更高版本(有特定的工具可以這樣做),並且它們可以實現任何結構。 B)您的PDF文件可能包含一些看起來像書本中經典TOC的東西,基本上只是開始頁面上的文本,可選地超鏈接到本書中的特定位置。

您引用的第二個鏈接顯示瞭如何創建用戶界面,您可以在其中顯示TOC。剩下的問題是找出要在TOC窗口中顯示的項目。在您指出的第二個鏈接中,提供的解決方案是提供特定於某個特定書籍的硬編碼項目。當然,如果您只想顯示任何書籍,這種方法並不是非常有用。

所以你留下的問題是如何弄清楚要顯示哪些項目以及它們鏈接到哪裏。

如果您認爲我的可能性A)以上:帶有書籤的PDF文件,答案可能相對簡單。回答1您指出要解釋如何查看PDF文件內的不同結構 - 書籤只是這樣一種結構(定義在PDF規範的第12.3節中:http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf

這意味着您可以使用那裏顯示的技術走在PDF文件中的不同對象,並找到每個書籤。書籤將爲您提供要顯示的文本以及文本在單擊時應跳轉到的PDF文件中的實際位置。

如果你考慮我的可能性B)以上:一個PDF文件沒有書籤,但經典的TOC,這將是更難解決。這樣的目錄只是一個或多個頁面上的文本,可選地帶有超鏈接。當然,您可以嘗試查找這些頁面上的所有文本(如果您可以確定TOC開始和結束的頁面),但是您還需要確定該項目鏈接的位置。如果沒有涉及超鏈接,那將是一項艱鉅的任務。

所以你的第一個問題應該是你想如何通用你解決這個問題。你知道你想要顯示哪些PDF文件嗎?你能爲自己設計一個TOC文件嗎(就像你的解決方案2一樣)?如果沒有,你能確定所有的PDF文件都包含書籤嗎?這些問題的答案將在很大程度上決定你的策略的其餘部分...

+0

我所有的PDF都只有鏈接。我應該把所有的文檔標題放在我的tableview中。我發現它可以使用「CGPDFDocumentGetCatalog」來檢索。但在我的讀者中,這種情況曾被稱爲。你知道如何完成這件事嗎?謝謝。 – Saranya

+0

@Saranya - 我認爲你混淆了兩件事。您談論的方法(CGPDFDocumentGetCatalog)獲取目錄對象(定義在PDF規範的7.2.2中)。這是PDF文件中的核心對象之一,它允許您訪問許多其他對象,但本身並未定義TOC。你可能在PDF文件中有什麼(但是我們必須看到一個可以肯定的例子)是一個「Outline」字典,它也可能被用來允許導航。 –

+0

很好,謝謝。我會檢查一下。 – Saranya