在我的解决方案中,我使用 open xml sdk 和 interop 来处理演示文稿。请告诉我是否可以在他们的帮助下为演示文稿添加幻灯片的过渡?
问问题
57 次
1 回答
1
使用 interop.powerpoint 找到了我的问题的答案:
ApplicationClass pptApplication = new ApplicationClass();
Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Open($"E:\\{fileName}", MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
pptPresentation.Slides[slideNumber].SlideShowTransition.AdvanceOnTime = MsoTriState.msoTrue;
pptPresentation.Slides[slideNumber].SlideShowTransition.AdvanceTime = 0.5F;
pptPresentation.Save();
使用 Open Xml SDK:
using(PresentationDocument presentationDocument = PresentationDocument.Open(presentationStream, true))
{
Presentation presentation = presentationDocument.PresentationPart.Presentation;
var countSlides = CountSlides(presentationStream);
SlideId penultimateSlideId = presentationDocument.PresentationPart.Presentation.SlideIdList.ChildElements[0] as SlideId;
SlidePart penultimateSlidePart = presentationDocument.PresentationPart.GetPartById(penultimateSlideId.RelationshipId) as SlidePart;
var transitions = penultimateSlidePart.Slide.Descendants<Transition>().ToList();
if(transitions.Count == 0)
{
var choiseTransition = new Transition()
{
Duration = "500",
AdvanceOnClick = true,
AdvanceAfterTime = "500",
Speed = TransitionSpeedValues.Slow
};
AlternateContent alternateContent = new AlternateContent();
alternateContent.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006");
AlternateContentChoice alternateContentChoice = new AlternateContentChoice() { Requires = "p14" };
alternateContentChoice.AddNamespaceDeclaration("p14", "http://schemas.microsoft.com/office/powerpoint/2010/main");
alternateContentChoice.Append(choiseTransition);
alternateContent.Append(alternateContentChoice);
penultimateSlidePart.Slide.Append(alternateContent);
}
presentation.Save();
}
于 2021-06-27T18:42:04.640 回答