Моя конечная цель - изменить тему презентации. Для этого я создал исходный шаблон и новый шаблон (с правильной темой). Я перебираю каждый слайд в исходном шаблоне, затем добавляю новый слайд в новый шаблон с содержимым источника, используя приведенный ниже код - исходный . Если есть лучший способ сделать это, я бы хотел его услышать.
Это отлично работает для текста и текстовых полей, однако тестовое изображение не может быть отображено в новой PowerPoint (показано на изображении ниже) :
введите описание изображения здесь
Код
def copy_slide_from_external_prs(self, src, idx, newPrs):
# specify the slide you want to copy the contents from
src_slide = src.slides[idx]
# Define the layout you want to use from your generated pptx
slide_layout = newPrs.slide_layouts[2]
# create now slide, to copy contents to
curr_slide = newPrs.slides.add_slide(slide_layout)
# remove placeholders
for p in [s.element for s in curr_slide.shapes if 'Text Placeholder' in s.name or 'Title' in s.name]:
p.getparent().remove(p)
# now copy contents from external slide, but do not copy slide properties
# e.g. slide layouts, etc., because these would produce errors, as diplicate
# entries might be generated
for shp in src_slide.shapes:
el = shp.element
newel = copy.deepcopy(el)
curr_slide.shapes._spTree.insert_element_before(newel, 'p:extLst')
return newPrs
Я пробовал много разных решений и пытался создать новое изображение, используя свойство image.blob
исходного изображения. Однако тогда изображение не имеет элемента. Нужно ли мне преобразовать большой двоичный объект в PNG, сохранить его, а затем создать новое изображение, используя сохраненный PNG?
Должен быть лучший способ сделать это. Опять же, я просто хочу сменить тему.
Заранее спасибо!