我在搞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