0
任何人都可以告訴我如何使用iText庫以編程方式從電子書(PDF)中提取目錄,章節和索引的內容?使用iText庫提取目錄,章節和索引的內容
任何人都可以告訴我如何使用iText庫以編程方式從電子書(PDF)中提取目錄,章節和索引的內容?使用iText庫提取目錄,章節和索引的內容
我已經通過解析書籤來實現這一點。下面是我寫的代碼,用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);
}
}
你或許應該增加更多的細節,比如你嘗試過什麼,到目前爲止,它爲什麼不工作等。這將鼓勵其他用戶來幫助你。 – nKn
此外,有問題的電子書是否包含TOC等也作爲結構化數據或僅作爲可查看內容? – mkl
問題是http://article.gmane.org/gmane.comp.java.lib.itext.general/66086的雙重職位請注意,通常不讚賞重複發佈問題。人們在不同的論壇上看到同一個問題的人可能不願意回答。 –