当前位置: 首页 > 知识库问答 >
问题:

如何使用apache poi获取pptx幻灯片笔记文本?

壤驷鸿祯
2023-03-14

到目前为止,我只有一个从ppt幻灯片笔记中检索文本的工作代码

try {
    FileInputStream is = new FileInputStream("C:\\sample\\test.ppt");
    SlideShow ppt = new SlideShow(is);

    Slide[] slide = ppt.getSlides();
    for (int i = 0; i < slide.length; i++) {

        System.out.println(i);
        TextRun[] runs = slide[i].getNotesSheet().getTextRuns();
        if (runs.length < 1) {
            System.out.println("null");
        } else {
            for (TextRun run : runs) {
                System.out.println(" > " + run.getText());
            }
        }
    }

} catch (IOException ioe) {

}

但如何从pptx幻灯片笔记中检索文本呢?

共有2个答案

艾敏学
2023-03-14

对已接受答案的更新。这很有效,但是如果您启用了笔记母版中的其他部分,例如页眉或页码,那么您将获得您可能不期望的额外笔记段落。您可以使用以下代码将实际笔记限制为:

try {

    FileInputStream fis = new FileInputStream("C:\\sample\\sample.pptx");
    XMLSlideShow pptxshow = new XMLSlideShow(fis);

    XSLFSlide[] slide2 = pptxshow.getSlides();
    for (int i = 0; i < slide2.length; i++) {
        System.out.println(i);
        try {
            XSLFNotes mynotes = slide2[i].getNotes();
            for (XSLFShape shape : mynotes) {
                if (shape instanceof XSLFTextShape) {
                    XSLFTextShape txShape = (XSLFTextShape) shape;

                    // Look for the actual notes only ...
                    if (!txShape.getShapeName().contains("Notes Placeholder")) {
                        continue;
                    }

                    for (XSLFTextParagraph xslfParagraph : txShape.getTextParagraphs()) {                    
                        System.out.println(xslfParagraph.getText());
                    }
                }
            }
        } catch (Exception e) {

        }

    }
} catch (IOException e) {

}
闾丘照
2023-03-14

经过不断的反复试验,找到了解决方案

try {

    FileInputStream fis = new FileInputStream("C:\\sample\\sample.pptx");
    XMLSlideShow pptxshow = new XMLSlideShow(fis);

    XSLFSlide[] slide2 = pptxshow.getSlides();
    for (int i = 0; i < slide2.length; i++) {
        System.out.println(i);
        try {
            XSLFNotes mynotes = slide2[i].getNotes();
            for (XSLFShape shape : mynotes) {
                if (shape instanceof XSLFTextShape) {
                    XSLFTextShape txShape = (XSLFTextShape) shape;
                    for (XSLFTextParagraph xslfParagraph : txShape.getTextParagraphs()) {
                        System.out.println(xslfParagraph.getText());
                    }
                }
            }
        } catch (Exception e) {

        }

    }
} catch (IOException e) {

}
 类似资料:
  • 问题内容: 到目前为止,我只有一个有效的代码可以从ppt幻灯片笔记中检索文本 但是,如何从pptx幻灯片笔记中检索文本? 问题答案: 经过不断的反复试验,找到了解决方案。

  • 我知道如何使用apache poi从ppt文件中提取文本,如下所示 但它提取了所有页脚,幻灯片编号,我不想要 那么如何提取除页脚和幻灯片编号以外的文本 预先感谢

  • 我试图建立一个相当粗糙的工具,将ppt/pptx文件转换为超文本标记语言格式。 我发现,不幸的是,apache poi没有为处理Power point文件提供统一的编程模型,必须编写代码来解析每种格式。 我觉得pptx文件支持比ppt支持有限得多。我面临的一个问题是获取有关pptx幻灯片背景(颜色、图案、背景图像)的信息。 我发现XSLFbackground(pptx api)类比其相应的背景类(

  • 我想使用Apache POIJava库将pptx幻灯片拆分为几个幻灯片,每个幻灯片只包含一张幻灯片。 创建一个新的XMLSlideSheet并添加幻灯片,如在几个地方(例如 https://www.tutorialspoint.com/apache_poi_ppt/apache_poi_ppt_merging.htm)所述,对我来说不起作用,因为某些布局没有正确导入:字体被更改,文本的位置被更改等

  • sp_getslide($slide,$limit=5,$order = "listorder ASC") 功能: 根据幻灯片标识获取所有幻灯片 参数: $slide:幻灯片标识,后台可以设置 $limit:最多显示几张幻灯片 $order:按什么字段(slide表的字段)排序 返回 数组,符合条件的幻灯片列表 示例: $slides=sp_getslide('top_slide');

  • Powerpoint幻灯片具有可通过VBA访问和修改的内部名称。参见例如Powerpoint:手动设置幻灯片名称 我想通过apache poi访问该名称。我尝试了: 但只有当幻灯片名称只有默认名称时,才以这种方式获取空字符串。 在阿帕奇POI中获取(甚至设置)pptx文件的幻灯片名称的正确方法是什么?