2014-01-31 2 views
0

Может ли кто-нибудь сказать мне, как программно использовать содержимое оглавления, разделов и индекса из электронной книги (PDF) с помощью библиотеки iText?Извлечь содержимое оглавления, главы и индекс с помощью библиотеки iText

+1

Возможно, вы должны добавить более подробную информацию, например, что вы пробовали до сих пор, почему это не сработало и т. Д. Это побудит других пользователей помочь вам. – nKn

+1

Кроме того, имеет ли рассматриваемая книга TOC и т. Д. Также как структурированные данные или просто как контент с возможностью просмотра? – mkl

+0

Вопрос заключается в двойном сообщении http://article.gmane.org/gmane.comp.java.lib.itext.general/66086. Обратите внимание, что вопрос о двойном размещении вопроса обычно не оценивается. Люди, которые видят один и тот же вопрос одного и того же человека на разных форумах, не могут быть склонны отвечать. –

ответ

0

Я достиг этого, анализируя закладки. Ниже приведен код, написанный мной для анализа закладок из PDF с помощью iText.

public void ParseBookMarkToLevel(List<HashMap<String,Object>> listBookmarks,Integer intLevel) 
{ 

    //if intLevel == 999 Parse the full bookmarks recursively to all levels 
    //System.out.println("Bookmarks Count: "+listBookmarks.size()); 
    if(intLevel != 999) 
     intLevel--; 
    else 
     intLevel=999; 

    //System.out.println("Bookmarks Count: "+listBookmarks.size()); 
    String title =""; 
    String pageStr =""; 
    String[] pageStrArr; 
    Integer pageNumber; 

    try{ 
     for (HashMap<String,Object> bookmark: listBookmarks) { 

      //System.out.println("Page Type: "+bookmark.get("Page").getClass()); 

      title = (bookmark.containsKey("Title")?bookmark.get("Title").toString() :""); 

      if(bookmark.containsKey("Page")){ 
       pageStr = bookmark.get("Page").toString(); 
       pageStrArr = pageStr.split(" ");   
       pageNumber = Integer.valueOf(pageStrArr[0]); 
       //System.out.println(""+title+"\t :"+pageNumber); 
       this.lhmBookMarks.put(title, pageNumber); 
       System.out.println(this.lhmBookMarks.toString()); 
      } 
      else{ 
       //System.out.println(title); 
       this.lhmBookMarks.put(title, 0); 
      }   
      if(bookmark.containsKey("Kids") && intLevel != 0){ 
       this.ParseBookMarkToLevel((List<HashMap<String, Object>>) bookmark.get("Kids"),intLevel); 
      } 
     } 
    } 
    catch(Exception i){ 
     System.out.println(i); 
    } 
} 
Смежные вопросы