Я пытаюсь заменить заполнитель изображения в Powerpointpresentation на openxml sdk.Я думаю, что нашел Заполнитель, но я не знаю, как заменить его на изображение.Требуется работать со слайдами, созданными из мастер-части.
Применение указанного макета из мастера, который работает должным образом:
Slide slide = new Slide(new CommonSlideData(new ShapeTree()));
SlidePart slidePart = presentationPart.AddNewPart<SlidePart>();
slide.Save(slidePart);
SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.First();
SlideLayoutPart slideLayoutPart = slideMasterPart.SlideLayoutParts.SingleOrDefault(sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals("InhaltsFolie", StringComparison.OrdinalIgnoreCase));
slidePart.AddPart<SlideLayoutPart>(slideLayoutPart);
slidePart.Slide.CommonSlideData = (CommonSlideData)slideMasterPart.SlideLayoutParts.SingleOrDefault(sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals("InhaltsFolie")).SlideLayout.CommonSlideData.Clone();
replaceImages(slidePart, fotodokumentation.Thumbnail);
ReplaceImages - метод ищет заполнитель и должен заменитьЭто.Это смешанная версия примеров кода, которые я нашел, и мой подход к идентификации заполнителя.Я не знаю, как преобразовать заполнитель в нечто вроде Blip-Object из образцов, которые я нашел.Или есть другой способ, как применить изображение к заполнителю?В приведенном ниже коде объект myBlip всегда имеет значение null, но там указывается заполнитель:
private void replaceImages(SlidePart slidePart,byte[] image) {
var placeholder = slidePart.Slide.Descendants<PlaceholderShape>().FirstOrDefault(pl => pl.Type == PlaceholderValues.Picture);
var myBlip = slidePart.Slide.Descendants<Drawing.Blip>().FirstOrDefault();
if (myBlip != null) {
var imagePart = slidePart.AddImagePart(ImagePartType.Jpeg);
using (var stream = new MemoryStream(image)) {
imagePart.FeedData(stream);
}
var relID = slidePart.GetIdOfPart(imagePart);
myBlip.Embed = relID;
}
}