使用iText库提取目录、章节和索引的内容

使用iText库提取目录、章节和索引的内容,itext,information-extraction,Itext,Information Extraction,有人能告诉我如何使用iText library以编程方式从电子书(PDF)中提取目录、章节和索引的内容吗?我通过解析书签实现了这一点。下面是我使用iText解析PDF中书签的代码 public void ParseBookMarkToLevel(List<HashMap<String,Object>> listBookmarks,Integer intLevel ) { //if intLevel == 999 Parse the full bookmark

有人能告诉我如何使用iText library以编程方式从电子书(PDF)中提取目录、章节和索引的内容吗?

我通过解析书签实现了这一点。下面是我使用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);
    }
}
public void ParseBookMarkToLevel(列表书签,整数intLevel)
{
//如果intLevel==999,则递归地将完整书签解析到所有级别
//System.out.println(“书签计数:+listBookmarks.size());
如果(intLevel!=999)
内部级别--;
其他的
intLevel=999;
//System.out.println(“书签计数:+listBookmarks.size());
字符串标题=”;
字符串pageStr=“”;
字符串[]pageStrArr;
整数页码;
试一试{
for(HashMap书签:listBookmarks){
//System.out.println(“页面类型:”+bookmark.get(“页面”).getClass());
title=(bookmark.containsKey(“title”)?bookmark.get(“title”).toString():“”);
if(bookmark.containsKey(“页面”)){
pageStr=bookmark.get(“Page”).toString();
pageStrArr=pageStr.split(“”);
pageNumber=Integer.valueOf(pageStrArr[0]);
//System.out.println(“+title+”\t:“+pageNumber”);
this.lhmBookMarks.put(标题、页码);
System.out.println(this.lhmBookMarks.toString());
}
否则{
//系统输出打印项次(标题);
this.lhmBookMarks.put(title,0);
}           
if(bookmark.containsKey(“儿童”)和&intLevel!=0){
this.ParseBookMarkToLevel((List)bookmark.get(“Kids”),intLevel);
}
}
}
捕获(例外情况一){
系统输出打印LN(i);
}
}

您可能应该添加更多详细信息,如您迄今为止尝试了什么,为什么不起作用等。这将鼓励其他用户帮助您。此外,该电子书是否包含TOC等结构化数据或仅作为可查看的内容?该问题是一个双重发布的问题。请注意,双重发布问题通常不受欢迎。在不同的论坛上看到同一个人提出的同一个问题的人可能不愿意回答。我试图将整本电子书分成几章。最好的方法是什么?我计划处理TOC的内容,然后找到每个章节的开始和结束页码。请建议。