当前位置: 首页 > news >正文

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

注意,不涉及图片处理。

先上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>

代码:

public static void main(String[] args) {
        String filePath = "C:\\xx.pptx"; // 待处理ppt全路径
        try {
            IOUtils.setByteArrayMaxOverride(160000000);//分配内存160M
            String 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只勾选文本差不多。

相关文章:

  • Launcher3 Hotseat区域动态插入All Apps按钮实现方案
  • 理解Akamai EdgeGrid认证在REST API中的应用
  • 数字孪生概念及示例【清晰易懂】
  • 【并发编程】synchronized 的底层原理
  • 微服务》》Kubernetes (K8S)安装
  • go语言学习教程推荐,零基础到做项目
  • 【JavaScript】一、JS的引入与输入输出
  • 0基础 | 直流稳压电源专题3
  • 牛客竞赛记录——小紫的优势博弈(Python3题解)
  • CentOS 7 更换 YUM 源为国内
  • 高中信息技术学科核心素养评价体系的构建与实践研究
  • RESTful API 简介与使用
  • 数据结构——排序
  • 【探寻C++之旅】第九章:二叉搜索树
  • GetX 中GetView、GetXController 和 Bindings的联合使用
  • minikube部署Go应用
  • 蓝桥杯备考-----》差分数组+二分答案 借教室
  • deepseek连续对话与API调用机制
  • axios防止重复请求
  • DJ串烧集 2.4.5 | 海量大型DJ串烧歌曲,无广告,无需登录,高清在线播放
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理
  • 光明日报社副总编辑薄洁萍调任求是杂志社副总编辑
  • 湖南4个县市区被确定为野生蘑菇中毒高风险区:中毒尚无特效解毒药
  • 梅花奖在上海|湘剧《夫人如见》竞梅,长沙文旅来沪推广
  • 上海老字号卖黄金,与动漫IP联名两周销售额近亿元
  • 向猫学习禅修之后,你会发现将生活降格为劳作是多么愚蠢