0

谁能建议我如何使用 iText 库以编程方式从电子书 (PDF) 中提取目录、章节和索引的内容?

4

1 回答 1

0

我通过解析书签实现了这一点。下面是我编写的使用 iText 解析 PDF 中的书签的代码。

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);
    }
}
于 2014-02-21T06:37:39.630 回答