Tika解析word文件
Apache POI - HWPF and XWPF - Java API to Handle Microsoft Word Files
http://poi.apache.org/document/
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.poi/poi-scratchpad/3.7
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.poi/poi-ooxml/3.7
对Doc文件的解析
需要poi-scratchpad/3.7.jar
POI-HWPF - A Quick Guide
基本的文本提取
有两个输入参数:inputstream,HWPFDocument,
getText()方法是得到所有的文本内容,
getParagraphText()是得到每一段的文本内容,
getTextFromPieces()是得到每一页的文本内容
特定文本属性提取
To get specific bits of text, first create a org.apache.poi.hwpf.HWPFDocument. Fetch the range with getRange(), then get paragraphs from that. You can then get text and other properties.
第一步:创建HWPFDocument
第二步:得到Range
getRange(): Returns the range which covers the whole of the document, but excludes any headers(页眉) and footers(页脚).
int |
numParagraphs() Used to get the number of paragraphs in a range. |
int |
numSections() Used to get the number of sections in a range(这个是“节”,就是插入、分隔符中的“节”) |
第三步:得到段落
getParagraph():
getText()
public static void main(String[] args) throws Exception {
InputStream istream = new FileInputStream(
"e:\\Users\\ywf\\Desktop\\文本校对\\1.docx");
HWPFDocument doc = new HWPFDocument(istream);
Range range = doc.getRange();// Returns the range which covers the whole
// of the document, but excludes any
// headers and footers.
for (int i = 0; i < range.numParagraphs(); i++) {
Paragraph poiPara = range.getParagraph(i);
int j = 0;
while (true) {
CharacterRun run = poiPara.getCharacterRun(j++);
System.out.println("Color " + run.getColor());//颜色
System.out.println("Font size " + run.getFontSize());//字体大小
System.out.println("Font Name " + run.getFontName());//字体名称
System.out.println(run.isBold() + " " + run.isItalic() + " "
+ run.getUnderlineCode());//加粗,斜体,下划线
System.out.println("Text is " + run.text());//文本内容
if (run.getEndOffset() == poiPara.getEndOffset()) {
break;
}
}
} }
对Docx文件的解析
需要poi-ooxml/3.7.jar
http://poi.apache.org/document/quick-guide-xwpf.html
package test; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun; public class ParseWordDocxTest { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
InputStream istream = new FileInputStream(
"e:\\Users\\ywf\\Desktop\\文本校对\\1.docx");
XWPFDocument docx = new XWPFDocument(istream);
List<XWPFParagraph> paraGraph = docx.getParagraphs();
for(XWPFParagraph para :paraGraph ){
List<XWPFRun> run = para.getRuns();
for(XWPFRun r : run){
int i = 0;
System.out.println("字体颜色:"+r.getColor());
System.out.println("字体名称:"+r.getFontFamily());
System.out.println("字体大小:"+r.getFontSize());
System.out.println("Text:"+r.getText(i++));
System.out.println("粗体?:"+r.isBold());
System.out.println("斜体?:"+r.isItalic()); }
} } }
Tika解析word文件的更多相关文章
- C#仪器数据文件解析-Word文件(doc、docx)
不少仪器数据报告输出为Word格式文件,同Excel文件,Word文件doc和docx的存储格式是不同的,相应的解析Word文件的方式也类似,主要有以下方式: 1.通过MS Word应用程序的DCOM ...
- 用python解析word文件(二):table
太长了,我决定还是拆开三篇写. (一)段落篇(paragraph) (二)表格篇(table)(本篇) (三)样式篇(style) 选你所需即可.下面开始正文. 上一篇我们讲了用python-do ...
- 用python解析word文件(一):paragraph
太长了,我决定还是拆开三篇写. (一)段落篇(paragraph)(本篇) (二)表格篇(table) (三)样式篇(style) 选你所需即可.下面开始正文. 最近公司的项目,需要在页面上显示w ...
- 用python解析word文件(三):style
太长了,我决定还是拆开三篇写. (一)段落篇(paragraph) (二)表格篇(table) (三)样式篇(style)(本篇) 选你所需即可.下面开始正文. 在前两篇中,我们已经解析出了par ...
- 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))
首先需要安装相应的支持库: 直接在命令行执行pip install python-docx 示例代码如下: import docxfrom docx import Document #导入库 path ...
- 用python读取word文件里的表格信息【华为云技术分享】
在企查查查询企业信息的时候,得到了一些word文件,里面有些控股企业的数据放在表格里,需要我们将其提取出来. word文件看起来很复杂,不方便进行结构化.实际上,一个word文档中大概有这么几种类型的 ...
- NodeJs之word文件生成与解析
NodeJs之word文件生成与解析 一,介绍与需求 1.1,介绍 1,officegen模块可以为Microsoft Office 2007及更高版本生成Office Open XML文件.此模块不 ...
- Apache-Tika解析Word文档
通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理Word格式的文章,如下: package com.mengyao.tika.app; i ...
- Java读取word文件,字体,颜色
在Android读取Word文件时,在网上查看时可以用tm-extractors,但好像没有提到怎么读取Word文档中字体的颜色,字体,上下标等相关的属性.但由于需要,要把doc文档中的内容(字体,下 ...
随机推荐
- [luoguP1640] [SCOI2010]连续攻击游戏(二分图最大匹配)
传送门 我们将每一个属性和物品连边,然后枚举从小到大属性跑匈牙利,直到找不到连边 #include <cstdio> #include <cstring> #include & ...
- 刷题总结——单旋(HNOI2017 bzoj4825)
题目: Description H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据 结构,因为代码好写,功能多,效率高,掌握这种数据结构成为了 ...
- IBM DB2 控制中心等图形工具在 Windows 下的字体设置
原文地址(直接看原文): http://loveseaside.iteye.com/blog/648941 [简介如下] IBM DB2 在版本 8.0 以上就提供了一个跨平台的基于 Java 的一套 ...
- 【bzoj1592】[Usaco2008 Feb]Making the Grade 路面修整
FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中. 整条路被分成了N段,N个整数A_1, ...
- CodeForces 333E. Summer Earnings
time limit per test 9 seconds memory limit per test 256 megabytes input standard input output standa ...
- linux内核学习之四:进程切换简述【转】
转自:http://www.cnblogs.com/xiongyuanxiong/p/3531884.html 在讲述专业知识前,先讲讲我学习linux内核使用的入门书籍:<深入理解linux内 ...
- Codeforces 919 C. Seat Arrangements
C. Seat Arrangements time limit per test 1 second memory limit per test 256 megabytes input standa ...
- luogu P1197 [JSOI2008]星球大战
题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道 ...
- CodeForces - 618F Double Knapsack
Discription You are given two multisets A and B. Each multiset has exactly n integers each between 1 ...
- docker 如何清理垃圾呢
应用容器在宿主机上长期运行,应用实例启停容器,会产生大量的停止的容器,无容器使用的数据卷.网络配置,无容器依赖的镜像,这些垃圾日积月累,会影响到宿主机的运行状态,造成机子卡顿等现象.因此,需要对这些宿 ...