Vikas K Solegaonkar Ответов: 3

C# Powerpoint - вставка слайдов из другого файла, фон потерян


Привет
Для приложения, над которым я работаю, мне нужно вставить слайды из одного pptx в другой.

Я попытался сделать это, используя следующий код

mi_App = new Microsoft.Office.Interop.PowerPoint.Application();
mi_Pres = mi_App.Presentations.Open2007("File1.pptx", MsoTriState.msoTrue,MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

mi_Pres.Slides.InsertFromFile("File2.pptx", 2, 1, 2);

mi_Pres.SaveAs("File3.pptx", PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoFalse);
mi_Pres.Close();


Это действительно вставляет соответствующие слайды из File2.pptx. Но проблема в том, что их предыстория утрачена. Слайды занимают фон по умолчанию File1.pptx.
Слайды внутри File2.pptx определите фон для каждого слайда. Но те, которые вставлены в новый pptx, имеют одинаковый фон, который совпадает с фоном по умолчанию для pptx. File1.pptx.

Я попытался скопировать фон, назначив его mi_Pres.Slides[3].Background

Но это не сработало, потому что фон - это только чтение!

Не могли бы вы сказать мне, как правильно это сделать? Как вставить слайды из другого файла вместе с соответствующим фоном?

Manfred Rudolf Bihy

Интересный вопрос. 5+
Я никогда раньше не пробовал ничего подобного, поэтому ничем не могу вам помочь. :(

3 Ответов

Рейтинг:
13

Vikas K Solegaonkar

Найти ответ. Добавляя его сюда, чтобы завершить эту тему... Просто нужно было добавить эти строки...

mi_Pres1.Slides[3].FollowMasterBackground = MsoTriState.msoFalse;
mi_Pres1.Slides[4].FollowMasterBackground = MsoTriState.msoFalse;


FollowMasterBackground по умолчанию имеет значение true. Если вы явно установите значение false, вставленные слайды сохранят свой собственный фон.


Рейтинг:
1

Dave Kreskowiak

Я не использую PowerPoint ни для чего, но я подозреваю, что backgroun не приходит, потому что это части шаблона слайда, а не сам слайд. Я понятия не имею, что это за обходной путь.


Рейтинг:
1

Chandraprakash G (சந்திரப்பிரகாஷ்)

PPT.Application app = new PPT.Application();
app.CommandBars.ExecuteMso("PasteSourceFormatting");