繁体   English   中英

如何使用互操作或打开 xml sdk c# 为幻灯片添加过渡到 powerpoint

[英]how to add transition for slide to powerpoint using interop or open xml sdk c#

在我的解决方案中,我使用 open xml sdk 和 interop 来处理演示文稿。 请告诉我是否可以在他们的帮助下将幻灯片的过渡添加到演示文稿中?

使用 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();
}

幻灯片转换截图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM