如何使用 apache poi 从 .docx 文档中获取图片和表格?

2024-03-07

亲爱的,我尝试将整个文档从 .docx 文件提取到 java 中的文本区域,但我只收到没有图像或表格的文本,所以有什么建议吗?提前致谢。

我的代码是:

try{
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
XWPFDocument doc = new XWPFDocument(new 
FileInputStream(chooser.getSelectedFile()));
XWPFWordExtractor extract = new XWPFWordExtractor(doc);
content.setText(extract.getText());
content.setFont(new Font("Serif", Font.ITALIC, 16));
content.setLineWrap(true);
content.setWrapStyleWord(true);
content.setBackground(Color.white);

} catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
} 

提取表格 use List<XWPFTable> table = doc.getTables()

下面的例子

public static void readWordDocument() { 
try { 
        String fileName = "C:\\sample.docx"; 

        if(!(fileName.endsWith(".doc") || fileName.endsWith(".docx"))) { 
                throw new FileFormatException(); 
        } else { 

        XWPFDocument doc = new XWPFDocument(new FileInputStream(fileName)); 

                List<XWPFTable> table = doc.getTables();         

                for (XWPFTable xwpfTable : table) { 
                                                    List<XWPFTableRow> row = xwpfTable.getRows(); 
                                                    for (XWPFTableRow xwpfTableRow : row) { 
                                                            List<XWPFTableCell> cell = xwpfTableRow.getTableCells(); 
                                                            for (XWPFTableCell xwpfTableCell : cell) { 
                                                                    if(xwpfTableCell!=null) 
                                                                    { 
                                                                            System.out.println(xwpfTableCell.getText()); 
                                                                            List<XWPFTable> itable = xwpfTableCell.getTables(); 
                                                                            if(itable.size()!=0) 
                                                                            { 
                                                                                    for (XWPFTable xwpfiTable : itable) { 
                                                                                            List<XWPFTableRow> irow = xwpfiTable.getRows(); 
                                                                                            for (XWPFTableRow xwpfiTableRow : irow) { 
                                                                                                    List<XWPFTableCell> icell = xwpfiTableRow.getTableCells(); 
                                                                                                    for (XWPFTableCell xwpfiTableCell : icell) { 
                                                                                                            if(xwpfiTableCell!=null) 
                                                                                                            {   
                                                                                                                    System.out.println(xwpfiTableCell.getText()); 
                                                                                                            } 
                                                                                                    } 
                                                                                            } 
                                                                                    } 
                                                                            } 
                                                                    } 
                                                            } 
                                                    } 
                } 
        } 
} catch(FileFormatException e) { 
        e.printStackTrace(); 
} catch (FileNotFoundException e) { 
        e.printStackTrace(); 
} catch (IOException e) { 
        e.printStackTrace(); 
} 

}

提取图像 use List<XWPFPictureData> piclist=docx.getAllPictures()

请参阅下面的示例

    public static void extractImages(String src){
  try{

  //create file inputstream to read from a binary file
  FileInputStream fs=new FileInputStream(src);
  //create office word 2007+ document object to wrap the word file
  XWPFDocument docx=new XWPFDocument(fs);
  //get all images from the document and store them in the list piclist
  List<XWPFPictureData> piclist=docx.getAllPictures();
  //traverse through the list and write each image to a file
  Iterator<XWPFPictureData> iterator=piclist.iterator();
  int i=0;
  while(iterator.hasNext()){
   XWPFPictureData pic=iterator.next();
   byte[] bytepic=pic.getData();
   BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytepic));
          ImageIO.write(imag, "jpg", new File("D:/imagefromword"+i+".jpg"));
          i++;
  }

  }catch(Exception e){System.exit(-1);}

 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 apache poi 从 .docx 文档中获取图片和表格? 的相关文章

  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • Mac 上的 Apache 虚拟主机的通配符域

    我目前正在运行多个域以进行本地开发 http wordpress dev http phpmyadmin dev http projectx dev http projecty dev 这些项目大多数位于用户的 Sites 目录中 但有些项
  • 通过互联网IP地址从一台计算机访问xampp到另一台计算机

    我试图从另一台计算机访问我的 xampp 它显示为禁止错误 然后我在 google 上搜索答案 因为他们告诉在 apache 文件夹中的 httpd conf 文件中更改一些设置 如下所示 Order Deny Allow Deny fro
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 我可以使用 mod_rewrite 更改文件扩展名吗?例如 .jpeg 到 .jpg

    我希望使用 Apache mod rewrite 将文件提供为 jpg 而不是 jpeg 这可能吗 尝试这个 RewriteEngine on RewriteRule jpeg 1 jpg
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • LAContext canEvaluatePolicy 和 Swift 2

    这是我的 Swift 代码 if LAContext canEvaluatePolicy LAPolicy DeviceOwnerAuthenticationWithBiometrics return true 使用 Swift2 我将代码
  • Spring Batch 访问步骤内的作业参数

    我有以下 Spring Batch Job 配置 Configuration EnableBatchProcessing public class JobConfig Autowired private JobBuilderFactory
  • Rails ActiveRecord - 有没有办法在没有 id 的情况下对表执行操作?

    我有一张一行两列的表格 int version datetime updated 是否有 Rails ActiveRecord 方法来获取和设置这些列中的数据 没有 id 列 我使用此表来跟踪其他表的查询版本 每次查询另一个表后 版本列都会
  • 我可以在 distcheck 期间使用 $dc_install_base 安装 systemd 文件吗?

    我有以下用于安装 systemd 服务文件的 Autotools 代码 该文件必须安装在外部 prefix到 pkg config 变量指定的目录 我知道这是不正确的 但我无法改变 systemd 的工作方式 配置文件 AC ARG WIT
  • OpenMPI 1.4.3 mpirun 主机文件错误

    我正在尝试在 4 个节点上运行一个简单的 MPI 程序 我正在使用在 Centos 5 5 上运行的 OpenMPI 1 4 3 当我使用主机文件 机器文件提交 MPIRUN 命令时 我没有得到任何输出 而是出现空白屏幕 因此 我必须终止这
  • Python 谷歌地图 驾驶时间

    我需要使用 Python 获取两组坐标之间的行驶时间 我能找到的唯一 Google Maps API 包装器要么使用 Google Maps API V2 已弃用 要么不具有提供驾驶时间的功能 我在本地应用程序中使用它 并且不希望受限于使用
  • 找出有盖矩形物体的方向、长度和半径

    I have a image as shown as fig 1 I am trying to fit this binary image with a capped rectangular fig 2 to figure out 方向 长
  • 更改 Xamarin 中格式化文本的字体

    我有一个带有格式化文本的标签 我想更改其字体样式 我的意思是字体 我尝试使用自定义标签渲染 就像对普通文本一样 但它没有得到反映 我的疑问是我们是否可以更改格式化文本的字体 因为它对于标签的文本 非格式化文本 工作正常 这是我的 xaml
  • 检查“组件”的渲染方法

    我正在尝试按照指南设置一个react router dom高阶组件 我有个问题说 元素类型无效 需要一个字符串 对于内置组件 或一个类 函数 对于复合组件 但得到 对象 您可能忘记从定义它的文件中导出组件 或者您可能混淆了默认导入和命名导入
  • jQuery:从文件系统读取文本文件

    我正在尝试使用 jquery 读取文本文件 如下所示 LOAD file and split line by line and append divs get myFile txt function data var lines data
  • 获取最近 7 天的日期

    我想获取从现在起过去 7 天的日期 例如当前日期是 02 10 2016 像这样获取 7 天的日期 01 10 2016 30 09 2016 29 09 2016 28 09 2016 27 09 2016 26 09 2016 My c
  • Java Servlet URL 映射

    我对java servlet相当陌生 如果这个问题看起来很愚蠢 请原谅我 我在 web xml servlet 选项卡中使用 netbeans 添加了 servlet 映射 例如 servlet 类和 url 模式 但是当应用程序运行时 它
  • 在 Firebase 函数中过滤数据

    如何找到 myPhone 的 users key 值 其值 123 我尝试过的 let usersRef admin database ref users usersRef orderByChild myPhone equalTo 123
  • 如何实现历史版本控制?

    我们正处于在 SQL 2008 R2 上构建大型 C MVC2 应用程序 我们还采用 Sharp 架构和 Nhibernate 作为生态系统的一部分 的早期阶段 其中一个要求是在给定的时间内可以访问所有数据库行版本 历史 我们尝试过类似以下
  • Meyers Singleton 与 C++-98 线程安全

    目前我有迈耶单例的实现 class ClassA public static ClassA GetInstance static ClassA instance return instance private ClassA ClassA a
  • 将 Robolectric 与 SQLiteAssetHelper 结合使用

    我对 Robolectric 很陌生 所以如果我在这里遗漏了一些明显的东西 请提前道歉 我有一个从以下位置加载数据库的应用程序assets目录使用SQLite资产助手 https github com jgilfelt android sq
  • 对合法程序进行反病毒检测

    基本上 我的程序与另一个 jar 文件一起运行 下面是下载功能的代码 public void saveUrl final String filename final String urlString throws MalformedURLE
  • git: 'credential-osxkeychain' 不是 git 命令。请参阅“git --help”

    我与 bitbucket 连接 并在计算机中安装了 Git 和 sourcetree 然后尝试将 sourcetree 和 bitbucket 连接在一起 但我无法连接两者 当我尝试克隆存储库源路径时 它说 this is not a va
  • GWT RootPanel 与 RootLayoutPanel

    据我了解 GWT 官方建议使用较新的 RootLayoutPanel 但互联网上的一些帖子声称 对于某些 Web 应用程序 最好使用 RootPanel 如何决定使用哪一个 每个都有不同的用例吗 或者每个要求都可以满足 RootLayout
  • 如何使用 apache poi 从 .docx 文档中获取图片和表格?

    亲爱的 我尝试将整个文档从 docx 文件提取到 java 中的文本区域 但我只收到没有图像或表格的文本 所以有什么建议吗 提前致谢 我的代码是 try JFileChooser chooser new JFileChooser choos