我在搞apache poi來操縱word文檔。有沒有辦法從doc文件中獲取標題?我能夠從文檔中獲取純文本,但我需要區分文檔文件中的所有標題?是在apache poi api中可用的任何函數只能從ms文件中獲取標題?Apache POI: - 從DOC文件獲取標題
0
A
回答
2
推進的註釋來回答
有兩種方法做一個「標題」在Word中。 「適當」的方式,並的方式,大多數人似乎做...
在樣式下拉列表中,挑選適當的標題樣式,寫你的文字,然後返回到正常的段落樣式下一行
高亮顯示一行,並撞了字體大小+使其粗體或斜體
如果你的用戶在做#2,你已經確定了標題的基本上沒有真正的希望。編寫一些模糊匹配邏輯以嘗試識別字體大小跳躍時,您很失敗
對於#1,在Apache POI中相當容易。你想要做的是獲取適用於段落的樣式的樣式描述,然後獲取樣式的名稱。如果以Heading
開頭(不區分大小寫),則表明您已找到標題。獲取該段的文本,然後繼續閱讀文檔。
如果你看一下它是建立在POI頂部的Apache Tika MS-Word parser,你會看到一個很好的例子有遍歷段落和檢查風格
1
的一樣Gagravarr說:
對於# 1,在Apache POI中相當容易。你想要做的是獲取適用於段落的樣式的樣式描述,然後獲取樣式的名稱。如果以標題開頭(不區分大小寫),則知道已找到標題。獲取該段的文本,然後繼續閱讀文檔。
使用Apache POI這樣的代碼:
File f=new File("test.docx");
FileInputStream fis = new FileInputStream(f);
XWPFDocument xdoc=new XWPFDocument(OPCPackage.open(fis));
XWPFStyles styles=xdoc.getStyles();
List<XWPFParagraph> xwpfparagraphs =xdoc.getParagraphs();
System.out.println();
for(int i=0;i<xwpfparagraphs.size();i++)
{
System.out.println("paragraph style id "+(i+1)+":"+xwpfparagraphs.get(i).getStyleID());
if(xwpfparagraphs.get(i).getStyleID()!=null)
{
String styleid=xwpfparagraphs.get(i).getStyleID();
XWPFStyle style=styles.getStyle(styleid);
if(style!=null)
{
System.out.println("Style name:"+style.getName());
if(style.getName().startsWith("heading"))
{
//this is a heading
}
}
}
}
0
至少在HWPF(即舊的二進制文檔格式),如果你有一個正確格式的文件(這樣鍵入其他的答案#1),你應該不完全依賴於風格名稱 - 事實上,這可能是一種與語言相關的價值(英文中的「Heading」,法語中的「Titre」等)。
Paragraph.getLvl(),它編碼level where the respective paragraph is shown in Word's outline view,往往是一個很好的次要來源。 1
構成最重要的級別,所有後續數字最多爲8
代表較不重要的標題候選,9
是默認情況下Word分配給普通(非標題)段落的值。
相關問題
- 1. Java Apache POI:從.doc文件讀取/寫入問題
- 2. 使用Apache poi在.doc文件中讀取上標和下標?
- 3. 如何使用apache poi從.doc文件中提取文本?
- 4. 獲取java.lang.IndexOutOfBoundsException轉換DOC文件時,使用Apache POI
- 5. 使用Apache POI編輯Microsoft-office .doc文件使用Apache POI
- 6. .doc文件中Apache-POI格式的文本問題
- 7. Apache Poi:在DOC文檔中獲取頁數
- 8. Apache POI HWPF - 將doc文件轉換爲pdf的問題
- 9. Java Apache POI讀取Word(.doc)文件並獲取使用的命名樣式
- 10. Apache POI Word .DOC替換文本
- 11. Apache POI解密doc文件無法處理加密文件?
- 12. Apache POI無法保存(HWPFDocument.write)大文檔doc文件
- 13. Apache的POI HWPF,以.doc文件替換文本失敗
- 14. 使用Apache POI從excel文件獲取圖像及其位置
- 15. doc文件從asp.net/vb與標題
- 16. 有沒有辦法從Apache Tika的doc文件中獲取所有樣式?
- 17. 使用Apache Poi將doc文件轉換爲html
- 18. 添加帶密碼apache poi的word(.doc)文件
- 19. 在Android Java中使用Apache POI插入圖像到.doc文件
- 20. 如何用apache poi XSSF獲取xlsx文件的文件名?
- 21. Apache POI for doc to html with footnotes
- 22. Apache POI - сonverting* .doc to * .html與圖像
- 23. 如何在Java中使用Apache POI從.doc和.docx文件中提取從右到左的文本?
- 24. Java:Apache POI:我可以從MS Word(.doc)文件中獲得乾淨的文本嗎?
- 25. 在Apache POI中讀取10 MB文件
- 26. Apache POI - 讀取excel文件時出錯
- 27. 用apache poi從Java寫入Excel文件
- 28. Apache POI和Aspose?
- 29. 使用Apache POI更新.docx文件的頁面標題
- 30. 如何使用Poi閱讀doc文件?
您是在尋找一種文本,其中應用了「標題1」的樣式,或者某些文本行的粗體+周圍點大於10點的算法,因此可能是某種標題? – Gagravarr
兩者。基本上我需要從doc文件中檢索所有標題(小標題)。我不是基於字體大小和大膽編寫我們自己的算法,而是在API中尋找一種方法,該方法從doc文件中獲取所有標題。 – Stunner
POI可以告訴你哪些事物具有應用於他們的標題樣式,但是當人們不將它標記爲標題時,這並不會起作用,而只是增加字體大小...... – Gagravarr