管理文本框

幻灯片上的文本通常存在于文本框或形状中。因此,要向幻灯片添加文本,您必须添加一个文本框,然后将一些文本放入文本框中。Aspose.Slides for Python via .NET提供了IAutoShape接口,允许您添加包含一些文本的形状。

在幻灯片上创建文本框

要在幻灯片上创建文本框,请按照以下步骤操作:

  1. 创建Presentation类的实例。
  2. 获取新创建的演示文稿中第一张幻灯片的引用。
  3. 在幻灯片的指定位置添加一个IAutoShape对象,并将ShapeType设置为RECTANGLE,并获取新添加的IAutoShape对象的引用。
  4. IAutoShape对象添加一个text_frame属性,该属性将包含文本。在下面的示例中,我们添加了以下文本:Aspose TextBox
  5. 最后,通过Presentation对象写入PPTX文件。

以下Python代码展示了如何向幻灯片添加文本:

import aspose.slides as slides

# 实例化PresentationEx
with slides.Presentation() as pres:

    # 获取演示文稿中的第一张幻灯片
    sld = pres.slides[0]

    # 添加类型设置为矩形的AutoShape
    ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)

    # 向矩形添加TextFrame
    ashp.add_text_frame(" ")

    # 访问文本框
    txtFrame = ashp.text_frame

    # 为文本框创建Paragraph对象
    para = txtFrame.paragraphs[0]

    # 为段落创建一个Portion对象
    portion = para.portions[0]

    # 设置文本
    portion.text = "Aspose TextBox"

    # 将演示文稿保存到磁盘
    pres.save("TextBox_out.pptx", slides.export.SaveFormat.PPTX)

检查文本框形状

Aspose.Slides提供了is_text_box属性(来自AutoShape类),允许您检查形状并查找文本框。

文本框和形状

以下Python代码演示了如何检查一个形状是否被创建为文本框:xxx

from aspose.slides import Presentation, AutoShape

with Presentation("pres.pptx") as pres:
    for slide in pres.slides:
        for shape in slide.shapes:
            if (type(shape) is AutoShape):
                print("形状是文本框" if shape.is_text_box else "形状不是文本框")

在文本框中添加列

Aspose.Slides提供了column_countcolumn_spacing属性(来自ITextFrameFormat接口和text_frame_format类),允许您向文本框添加列。您可以指定文本框中的列数,并设置列之间的间距(以磅为单位)。

以下Python代码演示了所描述的操作:

import aspose.slides as slides

with slides.Presentation() as presentation:
	# 获取演示文稿中的第一张幻灯片
	slide = presentation.slides[0]

	# 添加类型设置为矩形的AutoShape
	aShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)

	# 向矩形添加TextFrame
	aShape.add_text_frame("所有这些列都被限制在一个文本容器内 -- " +
	"您可以添加或删除文本,新的或剩余的文本会自动调整 " +
	"以流动在容器内。然而,您不能让文本从一个容器流到另一个容器 -- 我们告诉过您,PowerPoint的文本列选项是有限的!")

	# 获取TextFrame的文本格式
	format = aShape.text_frame.text_frame_format

	# 指定TextFrame中的列数
	format.column_count = 3

	# 指定列之间的间距
	format.column_spacing = 10

	# 保存演示文稿
	presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)

在文本框架中添加列

Aspose.Slides for Python via .NET提供了ColumnCount属性(来自ITextFrameFormat接口),允许您在文本框架中添加列。通过该属性,您可以指定文本框架中您所需的列数。

以下Python代码展示了如何在文本框架中添加列:

import aspose.slides as slides

outPptxFileName = "ColumnsTest.pptx"
with slides.Presentation() as pres:
    shape1 = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
    format = shape1.text_frame.text_frame_format

    format.column_count = 2
    shape1.text_frame.text = """所有这些列被迫保持在一个文本容器内 -- 
        您可以添加或删除文本 - 并且新的或剩余的文本会自动调整 
        自身以保持在容器内。然而,您不能让文本溢出一个容器 
        到另一个容器,因为PowerPoint的文本列选项是有限的!"""
    
    pres.save(outPptxFileName, slides.export.SaveFormat.PPTX)

    with slides.Presentation(outPptxFileName) as test:
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)

    format.column_spacing = 20
    pres.save(outPptxFileName, slides.export.SaveFormat.PPTX)

    with slides.Presentation(outPptxFileName) as test:
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)

    format.column_count = 3
    format.column_spacing = 15
    pres.save(outPptxFileName, slides.export.SaveFormat.PPTX)

    with slides.Presentation(outPptxFileName) as test:
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)

更新文本

Aspose.Slides允许您更改或更新文本框中包含的文本或演示文稿中包含的所有文本。

以下Python代码演示了一种操作,其中演示文稿中的所有文本被更新或更改:

import aspose.slides as slides

with slides.Presentation("pres.pptx") as pres:
    for slide in pres.slides:
        for shape in slide.shapes:
            if type(shape) is slides.AutoShape:
                for paragraph in shape.text_frame.paragraphs:
                    for portion in paragraph.portions:
                        portion.text = portion.text.replace("years", "months")
                        portion.portion_format.font_bold = 1
  
    # 保存修改后的演示文稿
    pres.save("text-changed.pptx", slides.export.SaveFormat.PPTX)

添加带超链接的文本框

您可以在文本框中插入链接。当点击文本框时,用户将被引导打开该链接。

要添加一个包含链接的文本框,请按照以下步骤操作:

  1. 创建Presentation类的实例。
  2. 获取新创建的演示文稿中第一张幻灯片的引用。
  3. 在幻灯片的指定位置添加一个AutoShape对象,ShapeType设置为RECTANGLE,并获取新添加的AutoShape对象的引用。
  4. AutoShape对象添加一个包含Aspose TextBox作为其默认文本的text_frame
  5. 实例化hyperlink_manager类。
  6. hyperlink_manager对象分配给您的TextFrame中首选部分的HyperlinkClick属性。
  7. 最后,通过Presentation对象写入PPTX文件。

以下Python代码展示了如何向幻灯片添加带超链接的文本框:

import aspose.slides as slides

# 实例化表示PPTX的Presentation类
with slides.Presentation() as pptxPresentation:
    # 获取演示文稿中的第一张幻灯片
    slide = pptxPresentation.slides[0]

    # 添加类型设置为矩形的AutoShape对象
    pptxShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)

    # 访问与AutoShape相关的ITextFrame属性
    pptxShape.add_text_frame("")

    textFrame = pptxShape.text_frame

    # 为框架添加一些文本
    textFrame.paragraphs[0].portions[0].text = "Aspose.Slides"

    # 设置部分文本的超链接
    hm = textFrame.paragraphs[0].portions[0].portion_format.hyperlink_manager
    hm.set_external_hyperlink_click("http://www.aspose.com")
    # 保存PPTX演示文稿
    pptxPresentation.save("hLinkPPTX_out.pptx", slides.export.SaveFormat.PPTX)