java,poi,提取ppt文件中的文字内容

ops/2025/3/18 6:20:55/

注意,不涉及图片处理。

先上pom依赖:

        <!-- 处理PPTX文件 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><!-- 处理PPT文件 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.3</version></dependency>

代码:

java">public static void main(String[] args) {String filePath = "C:\\xx.pptx"; // 待处理ppt全路径try {IOUtils.setByteArrayMaxOverride(160000000);//分配内存160MString content = readPresentation(filePath);System.out.println(content);} catch (Exception e) {e.printStackTrace();}}public static String readPresentation(String filePath) throws Exception {if (filePath.toLowerCase().endsWith(".pptx")) {return readPPTX(filePath);} else if (filePath.toLowerCase().endsWith(".ppt")) {return readPPT(filePath);}throw new IllegalArgumentException("Unsupported file format");}// 处理PPTX文件private static String readPPTX(String filePath) throws Exception {StringBuilder content = new StringBuilder();XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(filePath));for (XSLFSlide slide : ppt.getSlides()) {for (XSLFShape shape : slide.getShapes()) {if (shape instanceof XSLFTextShape) {content.append(((XSLFTextShape) shape).getText()).append("\n");}}}return content.toString();}// 处理PPT文件private static String readPPT(String filePath) throws Exception {StringBuilder content = new StringBuilder();try (HSLFSlideShow ppt = new HSLFSlideShow(new FileInputStream(filePath))) {for (HSLFSlide slide : ppt.getSlides()) {// 读取幻灯片中的形状for (HSLFShape shape : slide.getShapes()) {if (shape instanceof HSLFTextShape) {HSLFTextShape textShape = (HSLFTextShape) shape;content.append(textShape.getText()).append("\n");}}// 读取幻灯片中的文本框(兼容旧版本)for (List<HSLFTextParagraph> textParagraphs : slide.getTextParagraphs()) {for (HSLFTextParagraph para : textParagraphs) {content.append(para).append("\n");}}}}return content.toString();}

 最终效果与wps自带的ppt转word只勾选文本差不多。


http://www.ppmy.cn/ops/166696.html

相关文章

C语言高级进阶(全)

C语言高级 一、指针和数组 1.两种访问方式 直接访问&#xff1a;按变量的地址存取变量的值&#xff08;通过数组名访问&#xff09;间接访问&#xff1a;通过存放变量地址的指针访问(通过指针访问) 2.指针和一维数组 2.1 用法 通过数组名直接访问 int a[5] {1,2,3,4,5}; //a是数…

多模态模型Orpheus,基于病理图像的乳腺癌复发风险智能评估工具|顶刊解读·25-03-17

小罗碎碎念 在医学领域&#xff0c;尤其是乳腺癌治疗方面&#xff0c;准确评估患者的复发风险至关重要。对于占乳腺癌很大比例的 HR/HER2 - 亚型患者&#xff0c;目前主要依靠 Oncotype DX 的复发评分&#xff08;RS&#xff09;来指导治疗决策。 然而&#xff0c;该检测存在…

【一起来学kubernetes】15、Job使用详解

一、Job的基本概念二、Job的关键特性三、Job的配置实例四、Job的使用场景五、高级用法1. 手动触发任务2. 任务依赖3. 输出结果捕获 六、Job的创建与管理七、生命周期管理1. 创建与启动2. 查看任务状态3. 处理任务完成4. 失败重试 八、对比其他资源九、注意事项与最佳实践十、常…

Web网页开发——水果忍者

开发一个类似于“水果忍者”&#xff08;Fruit Ninja&#xff09;的网页游戏涉及多个方面&#xff0c;包括前端和后端技术。由于“水果忍者”是一个实时互动的游戏&#xff0c;主要侧重于前端技术的使用&#xff0c;尤其是JavaScript和HTML5 Canvas来实现游戏逻辑和图形渲染。以…

作物移栽机器人的结构设计的介绍

作物移栽机器人的结构设计是一个复杂的机械与电子结合的系统工程&#xff0c;单纯用代码来实现整个结构设计是不现实的&#xff0c;因为结构设计更多涉及到机械结构、硬件选型等物理层面的内容。不过&#xff0c;我们可以通过代码来模拟作物移栽机器人的部分功能&#xff0c;例…

LightGBM + TA-Lib A股实战进阶:Optuna调优与Plotly可视化详解

LightGBM TA-Lib A 股实战进阶&#xff1a;Optuna 调优与 Plotly 可视化详解 本文系统讲解了 LightGBM 在 A 股市场的应用&#xff0c;涵盖模型构建、Optuna 参数调优及 Plotly 可视化。通过实战案例&#xff0c;帮助读者全面掌握相关技术&#xff0c;提升在金融数据分析与预测…

Docker 使用指南

Docker 是一种开源的容器化平台&#xff0c;它通过使用容器来进行应用程序的打包、分发和部署。下面是 Docker 的基本概念和优势&#xff1a; 容器化&#xff1a;Docker 使用容器来封装应用程序及其所有依赖项&#xff0c;使其能够在任何环境中运行&#xff0c;并且与底层系统隔…

【在校课堂笔记】Python 第5节课 总结

- 第 81 篇 - Date: 2025 - 03 - 17 Author: 郑龙浩/仟濹 【Python 在校课堂笔记】 文章目录 南山 - Python 第5节课一 range 的各种使用二 上次作业三 斐波那契数列代码1 - 不优化代码2 - 优化版 四 打印图形五 九九乘法表六 百钱百鸡七 作业方法 1方法 2方法 3打印结果 南山…