【发布时间】:2017-10-03 11:03:11
【问题描述】:
我想克隆 PowerPoint 文档的一张幻灯片,并使用 OpenXML 插入到同一个文档中。为此,我使用了以下功能:
public static void AddNewSlide(PresentationPart parent, Slide _slideTemplate, string newId)
{
var newSlidePart = parent.AddNewPart<SlidePart>(newId);
newSlidePart.FeedData(_slideTemplate.SlidePart.GetStream(FileMode.Open));
newSlidePart.AddPart(_slideTemplate.SlidePart.SlideLayoutPart, _slideTemplate.SlidePart.GetIdOfPart(_slideTemplate.SlidePart.SlideLayoutPart));
newSlidePart.Slide.Save();
DocumentFormat.OpenXml.Presentation.SlideIdList slideIdList = parent.Presentation.SlideIdList;
uint maxSlideId = 1;
foreach (DocumentFormat.OpenXml.Presentation.SlideId slideId in slideIdList.ChildElements)
{
if (slideId.Id > maxSlideId) maxSlideId = slideId.Id;
}
DocumentFormat.OpenXml.Presentation.SlideId newSlideId = new DocumentFormat.OpenXml.Presentation.SlideId { Id = ++maxSlideId, RelationshipId = parent.GetIdOfPart(newSlidePart) };
slideIdList.Append(newSlideId);
}
如果原始幻灯片仅包含文本,它可以正常工作,但是当原始幻灯片也包含图像时,结果 PowerPoint 文档将损坏。新幻灯片上的图片将不会显示,只会显示一条消息:“当前无法显示此图片。”
【问题讨论】:
标签: c# powerpoint openxml-sdk