POI获取WORD信息

最近由于工作需要,调研了一下关于poi获取word字体信息方面的方法,在这里mark一下。

首先word格式分为doc和docx,分别利用HWPFDocument和XWPFDocument对文档进行解析,话不多说,直接贴代码:

  • 解析doc格式
 1 import java.io.FileInputStream;
 2 import java.io.IOException;
 3 
 4 import org.apache.poi.hwpf.HWPFDocument;
 5 import org.apache.poi.hwpf.usermodel.CharacterRun;
 6 import org.apache.poi.hwpf.usermodel.Paragraph;
 7 import org.apache.poi.hwpf.usermodel.Range;
 8 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 9 
10 public class fontTest {
11     public static void main(String[] args) throws IOException {
12         String filePath = "***.doc";
13         POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));
14         HWPFDocument document = new HWPFDocument(fs);
15         Range head = document.getHeaderStoryRange();
16         for(int i = 0;i<head.numCharacterRuns();i++){
17             System.out.println(head.getCharacterRun(i).text());
18         }
19         System.out.println("===============================================");
20         Range range = document.getRange();
21         for (int i = 0; i < range.numParagraphs(); i++) {
22             Paragraph para = range.getParagraph(i);// 获取第i段
23             int count = 0;
24             while (true) {
25                 CharacterRun run = para.getCharacterRun(count);// 此characterrun并非一个字符,而是一类字符,例如“数据挖掘”,前两个字为加粗,后两个字不加粗,那么“数据”                                        和“挖掘”会存在两个characterrun中
26                 System.out.println("color ------" + run.getColor());// 字体颜色
27                 System.out.println("font name---" + run.getFontName());// 字体类型
28                 System.out.println("font size---" + run.getFontSize());// 字体大小
29                 System.out.println("text -------" + run.text());// 文本信息
30                 System.out.println("bold -------" + run.isBold());// 是否加粗
31                 System.out.println("italic -----" + run.isItalic());// 是否斜体字
32                 System.out.println("algnment ---" + para.getJustification());//对齐方式,0为左对齐,1为居中,2为右对齐,3为左右对齐
33                 count++;
34                 System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
35                 if (run.getEndOffset() == para.getEndOffset()) {//到达段落末尾
36                     break;
37                 }
38             }
39             System.out.println("--------------分段--------------");
40         }
41     }
42 }
  • 解析docx格式
 1 package baidu;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.InputStream;
 5 import java.util.List;
 6 
 7 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 8 import org.apache.poi.xwpf.usermodel.XWPFHeader;
 9 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
10 import org.apache.poi.xwpf.usermodel.XWPFRun;
11 
12 public class fontdocx {
13     public static void main(String[] args) throws Exception {
14         String filePath = "***.docx";
15         InputStream istream = new FileInputStream(filePath);
16         XWPFDocument docx = new XWPFDocument(istream);
17         // 获取页眉内容
18         List<XWPFHeader> list = docx.getHeaderList();
19         for (XWPFHeader head : list) {
20             List<XWPFParagraph> paralist = head.getParagraphs();
21             for (XWPFParagraph para : paralist) {
22                 System.out.println(para.getText());
23             }
24             // System.out.println(head.getText());
25         }
26         List<XWPFParagraph> paraGraph = docx.getParagraphs();
27         for (XWPFParagraph para : paraGraph) {
28             List<XWPFRun> run_array = para.getRuns();
29             for (int i = 0; i < run_array.size(); i++) {
30                 System.out.println("alignment --"
31                         + para.getAlignment().toString());// 对齐方式
32                 System.out
33                         .println("text -------" + run_array.get(i).getText(0));// 文本内容
34                 System.out.println("font name --"
35                         + run_array.get(i).getFontFamily());// 字体类型
36                 System.out
37                         .println("color ------" + run_array.get(i).getColor());// 字体颜色
38                 System.out.println("font size --"
39                         + run_array.get(i).getFontSize());// 字体大小
40             }
41         }
42     }
43 }

对于抽取内容的准确度,未经过格式转换文本的准确度还是可以接受的。

在这里介绍的抽取内容比较少,欢迎大家补充!

转载于:https://www.cnblogs.com/MaNog/p/3638106.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全性

•完全适用ASP.NET的认证机制 –可以使用FormsAuthentication •WebService方法可以操作Cookie –Impersonation –PrincipalPermissionaspx<form id"form1"runat"server"><asp:ScriptManager runat"server"ID"ScriptManager1&quo…

调试以了解终结器

这篇文章涵盖了Java内置概念之一&#xff0c;称为Finalizer 。 这个概念实际上是众所周知的&#xff0c;也是众所周知的&#xff0c;这取决于您是否有足够的时间来仔细研究一下java.lang.Object类。 就在java.lang.Object本身中&#xff0c;有一个名为finalize&#xff08;&…

C++ constexpr变量和constexpr函数

constexpr 类型变量必须用常量表达式或 constexpr 函数来初始化&#xff1a; constexpr int a10;   constexpr int ba10;   constexpr int cd();  //当 d()为一个 constexpr 函数时才可以 constexpr 函数的形参和返回值都只能是字面型类型&#xff0c;且只能有一条 retur…

Zookeeper实现注册与发现

1.Zookeeper的数据模型 (1) Zookeeper的数据模型&#xff0c;类似于树形结构&#xff1a; (2) Zookeeper的每一个节点成为称为Znode&#xff0c;主要用来存储数据。 data : 存储数据信息。acl : 记录Znode的访问权限。child : 当前节点的子节点引用。stat &#xff1a;包含Zn…

class 命名规范

本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 注: 文章摘自 penggelies07- 简书, super晴天 - CSDN 常见class关键词 布局类&#xff1a;header, footer, container, main, content, aside, page, section 包裹类&am…

web策略类游戏开发(四)一个可以承载万人在线的架构

web策略类游戏开发(四)一个可以承载万人在线的架构 Webgame现在已经开始需要进入大统一服务器时代&#xff0c;每个游戏区域容纳的玩家数量将从现在的几万人发展到几十万人&#xff0c;因此在新的背景下&#xff0c;webgame如何处理大量用户的请求将成为问题。目前一台asp.net做…

htc g7 android 4.4,HTC G7刷机,从WM手机刷到了安卓,开启了新的刷机体验....

2011.0914.晚上22&#xff1a;00使用2010的教程刷机&#xff0c;降级时黑屏。使用老的教程&#xff0c;一开始降级从094降到0.83(2010技术)黑屏&#xff0c;但是未板砖&#xff0c;还有开机声音&#xff0c;无法控制机器。没办法&#xff0c;只能使用RUU技术&#xff0c;window…

Java的编年史和低延迟

总览 我正在看Typesafe的Rolan Kuhn在介绍反应流方面的出色演讲&#xff0c;乍一看似乎与《纪事报》有一些相似的目标&#xff0c;但是当您深入研究细节时&#xff0c;对我来说显然有一些关键假设是根本不同。 关键假设 《纪事》设计的主要假设是 低延迟是您的问题&#xff0c…

复制物料时不复制安全库存

1.打开bos&#xff0c;选择物料-功能控制 2.把允许复制去掉 转载于:https://www.cnblogs.com/RogerLu/p/10441588.html

CSS实现水平垂直居中

1、需求分析 子元素在父元素中水平垂直居中 2、技术分析 基础的css、html 3、详细分析 如图: 3.1 HTML部分 如图所示&#xff0c;大边框内包含一个小边框两部分&#xff0c;设置一个父元素div和一个子元素div。 <div class"container">父元素<div class…

2008/5/5

go haywire 非常生气Imagination is the source of creation. 想象是创造之源.转载于:https://www.cnblogs.com/fishert/archive/2008/05/06/1184243.html

鸿蒙3部曲先看哪部,讨论雪鹰与鸿蒙三部曲的关系

1、相信番茄的每部小说出来&#xff0c;心里都在想这会不会是鸿蒙三部曲的最后一部呢&#xff0c;鸿蒙金榜最后一位掌控者呢。2、但是隔了这么多部&#xff0c;番茄依旧未写&#xff0c;第三部&#xff0c;让人不禁思考&#xff0c;会不会第三部是番茄的封山之作呢。3、如果说前…

python装饰器概念与应用

格式一&#xff1a;装饰器外层不传参&#xff0c;内层传参 user_status False # 用户登录了就把这个改成Truedef login(func): # 把要执行的henan模块从这里传进来def inner(*args, **kwargs): # 再定义一层函数&#xff0c;参数为henan的参数_username "alex" …

从Java连接到Cassandra

在我的帖子Hello Cassandra中 &#xff0c;我研究了如何下载Cassandra NoSQL数据库并使用cqlsh连接到Cassandra数据库。 在本文中&#xff0c;我将介绍从Java客户端连接到Cassandra数据库的基础知识。 尽管有几种可用于从Java访问Cassandra数据库的 框架 &#xff0c;但我将在…

Django---Model操作

一、字段 1 AutoField(Field)2 - int自增列&#xff0c;必须填入参数 primary_keyTrue3 4 BigAutoField(AutoField)5 - bigint自增列&#xff0c;必须填入参数 primary_keyTrue6 7 注&#xff1a;当model中如果没有自增列&#xff0c;则自动会创建…

8. Action过滤

Action过滤原文: http://quickstarts.asp.net/3-5-extensions/mvc/ActionFiltering.aspx1. 介绍一般Action与用户动作是一对一的关系,用户的某一个动作对应一个特定的Action.然而,有时你可能会希望在Action执行的前后执行指定的操作,MVC中可以通过Action过滤器来实现这个功能.A…

android运行时状态,Android 如何保存Android 运行时状态

Android 如何保存Android 运行时状态使用 SaveInstanceState去保存运行时数据首先&#xff0c;我们需要重写一下系统的public void onSaveInstanceState(Bundle savedInstanceState)方法并在onSaveInstanceState方法中添加需要保存的数据。最后我们可以在onRestoreInstanceStat…

程序文件分类及编写要求

一级&#xff1a;管理体系手册 由质量管理部负责编制&#xff0c;最高管理者批准后发布生效。举例如&#xff1a;XX公司管理手册 二级&#xff1a;管理体系程序文件 由各相关部门进行编写&#xff0c;质量管理部体系负责人审核通过各部门评审会签&#xff0c;由管理者代表批…

仿制药的美丽与陌生

最近&#xff0c;我正在为Oracle认证专家Java SE 7程序员考试做准备&#xff0c;而我恰巧在Java泛型领域遇到了一些看起来很奇怪的结构。 但是&#xff0c;我也看到了一些巧妙而优雅的代码。 我发现这些示例值得分享&#xff0c;这不仅是因为它们可以使您的设计选择更容易&…

C# 判断txt文件编码格式

/// <summary> /// 获取文件的编码格式 /// </summary> public class EncodingType{/// <summary> /// 给定文件的路径&#xff0c;读取文件的二进制数据&#xff0c;判断文件的编码类型 /// </summary> /// <param name“FILE_NAME“>文件路径&…