Вставка и форматирование текста в существующем заполнителе - PullRequest
1 голос
/ 30 апреля 2019

У меня есть шаблон слайда с заполнителем текста. Как вставить и отформатировать текст в этом конкретном текстовом заполнителе?

text_ph1 = slide1.placeholders[14]
text_ph2 = slide1.placeholders[15]

para1 = ['Text for para 1']
para2 = ['Text for para 2']

p = text_ph1.paragraphs[0]
run = p.add_run()
run.text = para1[0]

font = run.font
font.name = 'Calibri'
font.size = Pt(14)
font.bold = False
font.italic = None

AttributeError                            Traceback (most recent call last)
<ipython-input-205-ce3eb19a0d8b> in <module>
      2 text_frame.clear()  # not necessary for newly-created shape
      3 
----> 4 p = text_ph1.paragraphs[0]
      5 run = p.add_run()
      6 run.text = para1[0]

AttributeError: 'SlidePlaceholder' object has no attribute 'paragraphs'

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Заполнитель - это фигура, в основном похожая на любую другую автоформу (прямоугольник, текстовое поле, круг и т. Д.).

Чтобы получить доступ к тексту фигуры, используйте ее свойство .text_frame, чтобыполучить его TextFrame объект.У объекта TextFrame есть абзацы (а не фигура напрямую), поэтому что-то вроде этого должно работать:

text_ph1 = slide1.placeholders[14]
text_ph1.text_frame.text = "Text for para 1"

Если затем вы захотите отформатировать добавленный текст, вы найдете его при первом запускепервого абзаца:

font = text_ph1.text_frame.paragraphs[0].runs[0].font
font.name = 'Calibri'
font.size = Pt(14)
font.bold = False
font.italic = False
0 голосов
/ 30 апреля 2019

Надеюсь, я понял ваш вопрос.

пример:

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Text for para 1"
subtitle.text = "Text for para 2"

prs.save('test.pptx')
...