从演示文稿中提取文本

从幻灯片中提取文本

Aspose.Slides for Python via .NET提供了Aspose.Slides.Util命名空间,其中包括SlideUtil类。该类公开了多个重载的静态方法,用于从演示文稿或幻灯片中提取整个文本。要从PPTX演示文稿中的幻灯片提取文本,请使用SlideUtil类公开的GetAllTextBoxes重载静态方法。此方法接受Slide对象作为参数。 执行后,Slide方法扫描作为参数传入的幻灯片的整个文本,并返回一个TextFrame对象数组。这意味着与文本相关的任何文本格式均可用。以下代码从演示文稿的第一张幻灯片中提取所有文本:

import aspose.slides as slides

#实例化表示PPTX文件的Presentation类
with slides.Presentation("pres.pptx") as pptxPresentation:
    # 从PPTX中的所有幻灯片获取ITextFrame对象的数组
    textFramesPPTX = slides.util.SlideUtil.get_all_text_boxes(pptxPresentation.slides[0])
    
    # 遍历TextFrames数组
    for i in range(len(textFramesPPTX)):
	    # 遍历当前ITextFrame中的段落
        for para in textFramesPPTX[i].paragraphs:
            # 遍历当前IParagraph中的部分
            for port in para.portions:
			    # 显示当前部分的文本
                print(port.text)

    			# 显示文本的字体高度
                print(port.portion_format.font_height)

			    # 显示文本的字体名称
                if port.portion_format.latin_font != None:
                    print(port.portion_format.latin_font.font_name)

从演示文稿中提取文本

要扫描整个演示文稿中的文本,请使用SlideUtil类公开的GetAllTextFrames静态方法。它接受两个参数:

  1. 第一个,表示从中提取文本的PPTX演示文稿的Presentation对象。
  2. 第二个,一个布尔值,确定在从演示文稿扫描文本时是否包含母版幻灯片。 该方法返回一个包含文本格式信息的TextFrame对象数组。以下代码扫描演示文稿中的文本和格式信息,包括母版幻灯片。
import aspose.slides as slides

#实例化表示PPTX文件的Presentation类
with slides.Presentation("pres.pptx") as pptxPresentation:
    # 从PPTX中的所有幻灯片获取ITextFrame对象的数组
    textFramesPPTX = slides.util.SlideUtil.get_all_text_frames(pptxPresentation, True)
    
    # 遍历TextFrames数组
    for i in range(len(textFramesPPTX)):
	    # 遍历当前ITextFrame中的段落
        for para in textFramesPPTX[i].paragraphs:
            # 遍历当前IParagraph中的部分
            for port in para.portions:
			    # 显示当前部分的文本
                print(port.text)

    			# 显示文本的字体高度
                print(port.portion_format.font_height)

			    # 显示文本的字体名称
                if port.portion_format.latin_font != None:
                    print(port.portion_format.latin_font.font_name)

分类和快速文本提取

在Presentation类中添加了新的静态方法GetPresentationText。该方法有两个重载:

slides.Presentation.get_presentation_text(stream)
slides.Presentation.get_presentation_text(stream, mode)      

ExtractionMode枚举参数指示组织文本结果输出的模式,可以设置为以下值: Unarranged - 原始文本,不考虑在幻灯片上的位置 Arranged - 该文本按幻灯片上的顺序排列

当速度至关重要时,可以使用Unarranged模式,它比Arranged模式更快。

PresentationText表示从演示文稿中提取的原始文本。它包含Aspose.Slides.Util命名空间中的slides_text属性,该属性返回SlideText对象的数组。每个对象代表对应幻灯片上的文本。SlideText对象具有以下属性:

SlideText.text - 幻灯片形状上的文本 SlideText.master_text - 该幻灯片的母版页面形状上的文本 SlideText.layout_text - 该幻灯片的布局页面形状上的文本 SlideText.notes_text - 该幻灯片的注释页面形状上的文本

新的API可以这样使用:

import aspose.slides as slides

text1 = slides.PresentationFactory().get_presentation_text("pres.pptx", slides.TextExtractionArrangingMode.UNARRANGED)
print(text1.slides_text[0].text)
print(text1.slides_text[0].layout_text)
print(text1.slides_text[0].master_text)
print(text1.slides_text[0].notes_text)