Управление текстовым полем
Тексты на слайдах обычно находятся в текстовых полях или формах. Поэтому, чтобы добавить текст на слайд, вам нужно добавить текстовое поле и затем поместить текст внутрь текстового поля. Aspose.Slides для Python через .NET предоставляет интерфейс IAutoShape, который позволяет добавлять фигуры, содержащие текст.
Информация
Aspose.Slides также предоставляет интерфейс IShape, который позволяет добавлять фигуры на слайды. Тем не менее, не все фигуры, добавленные через интерфейсIShape
, могут содержать текст. Однако фигуры, добавленные через интерфейс IAutoShape, могут содержать текст.
Примечание
Поэтому, работая с фигурой, к которой вы хотите добавить текст, вам следует проверить и подтвердить, что она была приведена через интерфейсIAutoShape
. Только тогда вы сможете работать с TextFrame, который является свойством интерфейса IAutoShape
. См. раздел Обновить текст на этой странице.
Создание текстового поля на слайде
Чтобы создать текстовое поле на слайде, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на первый слайд в только что созданной презентации.
- Добавьте объект IAutoShape с установленным ShapeType как
RECTANGLE
в указанной позиции на слайде и получите ссылку на только что добавленный объектIAutoShape
. - Добавьте свойство
text_frame
к объектуIAutoShape
, которое будет содержать текст. В примере ниже мы добавили этот текст: Aspose TextBox - Наконец, запишите файл PPTX через объект
Presentation
.
Этот код на Python — реализация вышеописанных шагов — показывает, как добавить текст на слайд:
import aspose.slides as slides
# Создает экземпляр PresentationEx
with slides.Presentation() as pres:
# Получает первый слайд в презентации
sld = pres.slides[0]
# Добавляет AutoShape с типом, установленным как Rectangle
ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
# Добавляет TextFrame в Rectangle
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_count и column_spacing (из интерфейса ITextFrameFormat и класса text_frame_format), которые позволяют добавлять столбцы в текстовые поля. Вы можете указать количество столбцов в текстовом поле и установить пространство между столбцами в пунктах.
Этот код на Python демонстрирует описанную операцию:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Получает первый слайд в презентации
slide = presentation.slides[0]
# Добавляет AutoShape с типом, установленным как Rectangle
aShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Добавляет TextFrame в Rectangle
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 для Python через .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(path + 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(path + outPptxFileName, slides.export.SaveFormat.PPTX)
with slides.Presentation(path + 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(path + outPptxFileName, slides.export.SaveFormat.PPTX)
with slides.Presentation(path + 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)
Добавление текстового поля с гиперссылкой
Вы можете вставить ссылку внутрь текстового поля. При нажатии на текстовое поле пользователи перенаправляются для открытия ссылки.
Чтобы добавить текстовое поле, содержащее ссылку, выполните эти шаги:
- Создайте экземпляр класса
Presentation
. - Получите ссылку на первый слайд в только что созданной презентации.
- Добавьте объект
AutoShape
с установленнымShapeType
какRECTANGLE
в указанной позиции на слайде и получите ссылку на только что добавленный объект AutoShape. - Добавьте
text_frame
к объектуAutoShape
, который содержит Aspose TextBox в качестве текста по умолчанию. - Инстанцируйте класс
hyperlink_manager
. - Присвойте объект
hyperlink_manager
свойству HyperlinkClick, связанному с вашим предпочитаемым фрагментомTextFrame
. - Наконец, запишите файл PPTX через объект
Presentation
.
Этот код на Python — реализация вышеописанных шагов — показывает, как добавить текстовое поле с гиперссылкой на слайд:
import aspose.slides as slides
# Создает экземпляр класса Presentation, представляющий PPTX
with slides.Presentation() as pptxPresentation:
# Получает первый слайд в презентации
slide = pptxPresentation.slides[0]
# Добавляет объект AutoShape с типом, установленным как Rectangle
pptxShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
# Получает ITextFrame свойство, связанное с AutoShape
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)