如何使用 Open XML SDK 在 PPTx 中插入视频?

拉迪尔斯

我正在尝试基于链接(使用 Open XML SDK 2.5 处理演示文档)创建一个 PPTx 文件,并且能够创建包含图像、形状和标题的幻灯片的文件。但我想将视频插入新幻灯片。有人可以帮我吗?

拉迪尔斯

我从Open XML SDK 2.5 Tool得到了解决方案下面是生成 C# 代码的步骤。

  • 首先创建一个带有视频的 Powerpoint 演示文稿并保存。
  • 使用 Open XML SDK Tool 打开 PPTx 文件,然后单击“反映代码”。

此操作将为您提供几千行 C# 代码。您可以直接使用代码或进行一些修改以实现可重用性。我做了同样的事情,下面是我的最终输出。

using DocumentFormat.OpenXml.Packaging;
using System.IO;
using System.Linq;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using System.IO;
using System.Linq;
using A = DocumentFormat.OpenXml.Drawing;
using P14 = DocumentFormat.OpenXml.Office2010.PowerPoint;

namespace PPTResearch
{
class Program
{
    int PicID = 915, slideCount;
    string imgEmbedId, videoEmbedId, mediaEmbedId, slidpartId;

    static void Main(string[] args)
    {
        string filepath = "D:\\Temp\\PPT\\9.pptx";
        (new Program()).AddVideoToPresentation(filepath, @"D:\Videos\Movavi Library\Example.wmv", @"D:\Temp\VIDEO\9.png");
    }

    public void AddVideoToPresentation(string pptFilePath, string videoFilePath, string videoClipImagePath)
    {
        if (File.Exists(pptFilePath))
            File.Delete(pptFilePath);
        (new BasePresentation()).CreateBlankPresentation(pptFilePath);

        using (PresentationDocument presentationDocument = PresentationDocument.Open(pptFilePath, true))
        {
            PresentationPart presentationPart = presentationDocument.PresentationPart;

            slideCount = presentationPart.Presentation.SlideIdList.Count();
            imgEmbedId = string.Format("imgId{0}{1}", slideCount, PicID++);
            videoEmbedId = string.Format("vidId{0}{1}", slideCount, PicID++);
            mediaEmbedId = string.Format("medId{0}{1}", slideCount, PicID++);
            slidpartId = string.Format("sldId{0}{1}", slideCount, PicID++);

            (new BasePresentation()).InsertSlide(presentationPart, "");
            SlidePart slidepart = presentationDocument.PresentationPart.SlideParts.LastOrDefault();
            GenerateSlidePartDetails(slidepart);

            ImagePart imagePart = slidepart.AddNewPart<ImagePart>("image/png", imgEmbedId);
            System.IO.Stream data = File.OpenRead(videoClipImagePath);
            imagePart.FeedData(data);
            data.Close();

            MediaDataPart mediaDataPart1 = presentationDocument.CreateMediaDataPart("video/x-ms-wmv", "wmv");
            System.IO.Stream mediaDataPart1Stream = File.OpenRead(videoFilePath);
            mediaDataPart1.FeedData(mediaDataPart1Stream);
            mediaDataPart1Stream.Close();

            slidepart.AddVideoReferenceRelationship(mediaDataPart1, videoEmbedId);
            slidepart.AddMediaReferenceRelationship(mediaDataPart1, mediaEmbedId);

            slidepart.Slide.Save();
        }
    }

    private void GenerateSlidePartDetails(SlidePart slidepart)
    {
        Slide slide = new Slide();

        CommonSlideData commonSlideData1 = new CommonSlideData();
        ShapeTree shapeTree1 = new ShapeTree();

        NonVisualGroupShapeProperties nonVisualGroupShapeProperties1 = new NonVisualGroupShapeProperties();
        NonVisualDrawingProperties nonVisualDrawingProperties1 = new NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" };
        NonVisualGroupShapeDrawingProperties nonVisualGroupShapeDrawingProperties1 = new NonVisualGroupShapeDrawingProperties();
        ApplicationNonVisualDrawingProperties applicationNonVisualDrawingProperties1 = new ApplicationNonVisualDrawingProperties();

        nonVisualGroupShapeProperties1.Append(nonVisualDrawingProperties1);
        nonVisualGroupShapeProperties1.Append(nonVisualGroupShapeDrawingProperties1);
        nonVisualGroupShapeProperties1.Append(applicationNonVisualDrawingProperties1);

        GroupShapeProperties groupShapeProperties1 = new GroupShapeProperties();

        A.TransformGroup transformGroup1 = new A.TransformGroup();
        A.Offset offset1 = new A.Offset() { X = 0L, Y = 0L };
        A.Extents extents1 = new A.Extents() { Cx = 0L, Cy = 0L };
        A.ChildOffset childOffset1 = new A.ChildOffset() { X = 0L, Y = 0L };
        A.ChildExtents childExtents1 = new A.ChildExtents() { Cx = 0L, Cy = 0L };

        transformGroup1.Append(offset1);
        transformGroup1.Append(extents1);
        transformGroup1.Append(childOffset1);
        transformGroup1.Append(childExtents1);

        groupShapeProperties1.Append(transformGroup1);

        Picture picture1 = new Picture();
        NonVisualPictureProperties nonVisualPictureProperties1 = new NonVisualPictureProperties();

        NonVisualDrawingProperties nonVisualDrawingProperties2 = new NonVisualDrawingProperties() { Id = (UInt32Value)3U, Name = videoEmbedId + ".wmv" };
        A.HyperlinkOnClick hyperlinkOnClick1 = new A.HyperlinkOnClick() { Id = "", Action = "ppaction://media" };
        nonVisualDrawingProperties2.Append(hyperlinkOnClick1);

        NonVisualPictureDrawingProperties nonVisualPictureDrawingProperties1 = new NonVisualPictureDrawingProperties();
        A.PictureLocks pictureLocks1 = new A.PictureLocks() { NoChangeAspect = true };
        nonVisualPictureDrawingProperties1.Append(pictureLocks1);

        ApplicationNonVisualDrawingProperties applicationNonVisualDrawingProperties2 = new ApplicationNonVisualDrawingProperties();
        A.VideoFromFile videoFromFile1 = new A.VideoFromFile() { Link = videoEmbedId };

        ApplicationNonVisualDrawingPropertiesExtensionList applicationNonVisualDrawingPropertiesExtensionList1 = new ApplicationNonVisualDrawingPropertiesExtensionList();
        ApplicationNonVisualDrawingPropertiesExtension applicationNonVisualDrawingPropertiesExtension1 = new ApplicationNonVisualDrawingPropertiesExtension() { Uri = "{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}" };

        P14.Media media1 = new P14.Media() { Embed = mediaEmbedId };
        media1.AddNamespaceDeclaration("p14", "http://schemas.microsoft.com/office/powerpoint/2010/main");
        applicationNonVisualDrawingPropertiesExtension1.Append(media1);
        applicationNonVisualDrawingPropertiesExtensionList1.Append(applicationNonVisualDrawingPropertiesExtension1);

        applicationNonVisualDrawingProperties2.Append(videoFromFile1);
        applicationNonVisualDrawingProperties2.Append(applicationNonVisualDrawingPropertiesExtensionList1);

        nonVisualPictureProperties1.Append(nonVisualDrawingProperties2);
        nonVisualPictureProperties1.Append(nonVisualPictureDrawingProperties1);
        nonVisualPictureProperties1.Append(applicationNonVisualDrawingProperties2);

        BlipFill blipFill1 = new BlipFill();
        A.Blip blip1 = new A.Blip() { Embed = imgEmbedId };

        A.Stretch stretch1 = new A.Stretch();
        A.FillRectangle fillRectangle1 = new A.FillRectangle();

        stretch1.Append(fillRectangle1);

        blipFill1.Append(blip1);
        blipFill1.Append(stretch1);

        ShapeProperties shapeProperties1 = new ShapeProperties();

        A.Transform2D transform2D1 = new A.Transform2D();
        A.Offset offset2 = new A.Offset() { X = 0L, Y = 0L };
        A.Extents extents2 = new A.Extents() { Cx = 9144000L, Cy = 5143500L };

        transform2D1.Append(offset2);
        transform2D1.Append(extents2);

        A.PresetGeometry presetGeometry1 = new A.PresetGeometry() { Preset = A.ShapeTypeValues.Rectangle };
        A.AdjustValueList adjustValueList1 = new A.AdjustValueList();

        presetGeometry1.Append(adjustValueList1);

        shapeProperties1.Append(transform2D1);
        shapeProperties1.Append(presetGeometry1);

        picture1.Append(nonVisualPictureProperties1);
        picture1.Append(blipFill1);
        picture1.Append(shapeProperties1);

        shapeTree1.Append(nonVisualGroupShapeProperties1);
        shapeTree1.Append(groupShapeProperties1);
        shapeTree1.Append(picture1);

        CommonSlideDataExtensionList commonSlideDataExtensionList1 = new CommonSlideDataExtensionList();

        CommonSlideDataExtension commonSlideDataExtension1 = new CommonSlideDataExtension() { Uri = "{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}" };

        P14.CreationId creationId1 = new P14.CreationId() { Val = (UInt32Value)4033567156U };
        creationId1.AddNamespaceDeclaration("p14", "http://schemas.microsoft.com/office/powerpoint/2010/main");

        commonSlideDataExtension1.Append(creationId1);

        commonSlideDataExtensionList1.Append(commonSlideDataExtension1);

        commonSlideData1.Append(shapeTree1);
        commonSlideData1.Append(commonSlideDataExtensionList1);

        ColorMapOverride colorMapOverride1 = new ColorMapOverride();
        A.MasterColorMapping masterColorMapping1 = new A.MasterColorMapping();

        colorMapOverride1.Append(masterColorMapping1);

        Timing timing1 = new Timing();

        TimeNodeList timeNodeList1 = new TimeNodeList();

        ParallelTimeNode parallelTimeNode1 = new ParallelTimeNode();

        CommonTimeNode commonTimeNode1 = new CommonTimeNode() { Id = (UInt32Value)1U, Duration = "indefinite", Restart = TimeNodeRestartValues.Never, NodeType = TimeNodeValues.TmingRoot };

        ChildTimeNodeList childTimeNodeList1 = new ChildTimeNodeList();

        SequenceTimeNode sequenceTimeNode1 = new SequenceTimeNode() { Concurrent = true, NextAction = NextActionValues.Seek };

        CommonTimeNode commonTimeNode2 = new CommonTimeNode() { Id = (UInt32Value)2U, Restart = TimeNodeRestartValues.WhenNotActive, Fill = TimeNodeFillValues.Hold, EventFilter = "cancelBubble", NodeType = TimeNodeValues.InteractiveSequence };

        StartConditionList startConditionList1 = new StartConditionList();

        Condition condition1 = new Condition() { Event = TriggerEventValues.OnClick, Delay = "0" };

        TargetElement targetElement1 = new TargetElement();
        ShapeTarget shapeTarget1 = new ShapeTarget() { ShapeId = "3" };

        targetElement1.Append(shapeTarget1);

        condition1.Append(targetElement1);

        startConditionList1.Append(condition1);

        EndSync endSync1 = new EndSync() { Event = TriggerEventValues.End, Delay = "0" };
        RuntimeNodeTrigger runtimeNodeTrigger1 = new RuntimeNodeTrigger() { Val = TriggerRuntimeNodeValues.All };

        endSync1.Append(runtimeNodeTrigger1);

        ChildTimeNodeList childTimeNodeList2 = new ChildTimeNodeList();

        ParallelTimeNode parallelTimeNode2 = new ParallelTimeNode();

        CommonTimeNode commonTimeNode3 = new CommonTimeNode() { Id = (UInt32Value)3U, Fill = TimeNodeFillValues.Hold };

        StartConditionList startConditionList2 = new StartConditionList();
        Condition condition2 = new Condition() { Delay = "0" };

        startConditionList2.Append(condition2);

        ChildTimeNodeList childTimeNodeList3 = new ChildTimeNodeList();

        ParallelTimeNode parallelTimeNode3 = new ParallelTimeNode();

        CommonTimeNode commonTimeNode4 = new CommonTimeNode() { Id = (UInt32Value)4U, Fill = TimeNodeFillValues.Hold };

        StartConditionList startConditionList3 = new StartConditionList();
        Condition condition3 = new Condition() { Delay = "0" };

        startConditionList3.Append(condition3);

        ChildTimeNodeList childTimeNodeList4 = new ChildTimeNodeList();

        ParallelTimeNode parallelTimeNode4 = new ParallelTimeNode();

        CommonTimeNode commonTimeNode5 = new CommonTimeNode() { Id = (UInt32Value)5U, PresetId = 2, PresetClass = TimeNodePresetClassValues.MediaCall, PresetSubtype = 0, Fill = TimeNodeFillValues.Hold, NodeType = TimeNodeValues.ClickEffect };

        StartConditionList startConditionList4 = new StartConditionList();
        Condition condition4 = new Condition() { Delay = "0" };

        startConditionList4.Append(condition4);

        ChildTimeNodeList childTimeNodeList5 = new ChildTimeNodeList();

        Command command1 = new Command() { Type = CommandValues.Call, CommandName = "togglePause" };

        CommonBehavior commonBehavior1 = new CommonBehavior();
        CommonTimeNode commonTimeNode6 = new CommonTimeNode() { Id = (UInt32Value)6U, Duration = "1", Fill = TimeNodeFillValues.Hold };

        TargetElement targetElement2 = new TargetElement();
        ShapeTarget shapeTarget2 = new ShapeTarget() { ShapeId = "3" };

        targetElement2.Append(shapeTarget2);

        commonBehavior1.Append(commonTimeNode6);
        commonBehavior1.Append(targetElement2);

        command1.Append(commonBehavior1);

        childTimeNodeList5.Append(command1);

        commonTimeNode5.Append(startConditionList4);
        commonTimeNode5.Append(childTimeNodeList5);

        parallelTimeNode4.Append(commonTimeNode5);

        childTimeNodeList4.Append(parallelTimeNode4);

        commonTimeNode4.Append(startConditionList3);
        commonTimeNode4.Append(childTimeNodeList4);

        parallelTimeNode3.Append(commonTimeNode4);

        childTimeNodeList3.Append(parallelTimeNode3);

        commonTimeNode3.Append(startConditionList2);
        commonTimeNode3.Append(childTimeNodeList3);

        parallelTimeNode2.Append(commonTimeNode3);

        childTimeNodeList2.Append(parallelTimeNode2);

        commonTimeNode2.Append(startConditionList1);
        commonTimeNode2.Append(endSync1);
        commonTimeNode2.Append(childTimeNodeList2);

        NextConditionList nextConditionList1 = new NextConditionList();

        Condition condition5 = new Condition() { Event = TriggerEventValues.OnClick, Delay = "0" };

        TargetElement targetElement3 = new TargetElement();
        ShapeTarget shapeTarget3 = new ShapeTarget() { ShapeId = "3" };

        targetElement3.Append(shapeTarget3);

        condition5.Append(targetElement3);

        nextConditionList1.Append(condition5);

        sequenceTimeNode1.Append(commonTimeNode2);
        sequenceTimeNode1.Append(nextConditionList1);

        Video video1 = new Video();

        CommonMediaNode commonMediaNode1 = new CommonMediaNode() { Volume = 80000 };

        CommonTimeNode commonTimeNode7 = new CommonTimeNode() { Id = (UInt32Value)7U, Fill = TimeNodeFillValues.Hold, Display = false };

        StartConditionList startConditionList5 = new StartConditionList();
        Condition condition6 = new Condition() { Delay = "indefinite" };

        startConditionList5.Append(condition6);

        commonTimeNode7.Append(startConditionList5);

        TargetElement targetElement4 = new TargetElement();
        ShapeTarget shapeTarget4 = new ShapeTarget() { ShapeId = "3" };

        targetElement4.Append(shapeTarget4);

        commonMediaNode1.Append(commonTimeNode7);
        commonMediaNode1.Append(targetElement4);

        video1.Append(commonMediaNode1);

        childTimeNodeList1.Append(sequenceTimeNode1);
        childTimeNodeList1.Append(video1);

        commonTimeNode1.Append(childTimeNodeList1);

        parallelTimeNode1.Append(commonTimeNode1);

        timeNodeList1.Append(parallelTimeNode1);

        timing1.Append(timeNodeList1);

        slide.Append(commonSlideData1);
        slide.Append(colorMapOverride1);
        slide.Append(timing1);

        slidepart.Slide = slide;
    }
}
}

如果您有其他解决方案,请在此处发布。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用开放XML SDK C#向PPTX添加值?

来自分类Dev

如何使用Open XML SDK将文本插入内容控件

来自分类Dev

如何使用Open XML SDK在.xlsx文件的现有行中添加新单元格?

来自分类Dev

如何指定不使用Open XML SDK包装Word TableCell?

来自分类Dev

插入图像会损坏Open XML SDK生成的Word文件

来自分类Dev

如何使用Open XML .net SDK将幻灯片编号添加到PowerPoint演示文稿中?

来自分类Dev

使用F#和Open XML SDK读取Excel文件中的单元格内容

来自分类Dev

使用Open XML SDK 2.0获取占位符值

来自分类Dev

无法使用Open XML SDK创建文档

来自分类Dev

使用Open XML SDK读取Excel图表模板(* .crtx)

来自分类Dev

在UWP中使用OPEN-XML SDK生成Doc文件

来自分类Dev

OPEN XML SDK无限循环

来自分类Dev

如何使用Facebook SDK的Open Graph喜欢Android中的Url

来自分类Dev

Open XML SDK:如何为WordprocessingDocument.Open获取有效的Word文档

来自分类Dev

NUGET上的Microsoft OPEN XML sdk 2.5

来自分类Dev

使用Open XML SDK检索内容控件时出现问题

来自分类Dev

使用C#在OPEN XML sdk中添加引用另一个工作簿中的单元格的公式

来自分类Dev

有什么方法可以将ID分配给Open XML SDK 2.5中的段落?

来自分类Dev

在 Open XML SDK 2.5 中创建的文件在选择打印时崩溃 excel

来自分类Dev

Open Office xml SDK异常“无法插入OpenXmlElement“ newChild”,因为它是树的一部分“

来自分类Dev

如何使用 Linq 打开 Open XML

来自分类Dev

以编程方式更改/添加pptx powerpoint的缩略图。使用Openxml SDK?

来自分类Dev

如何在 C# 中使用 Open XML SDK 锁定 word 文档上的所有字段(CTRL-A、CTRL-F11)

来自分类Dev

python-pptx模块可以插入视频吗?

来自分类Dev

对服务器实施Open XML SDK 2.5

来自分类Dev

如何在C#中使用Open XML从Word文档中查找确切的单词?

来自分类Dev

使用python-pptx在PowerPoint中删除超链接

来自分类Dev

如何在特定元素索引处修改pptx.oxml.xmlchemy.XmlString对象的xml?

来自分类Dev

如何使用XML :: Writer perl插入XML

Related 相关文章

  1. 1

    如何使用开放XML SDK C#向PPTX添加值?

  2. 2

    如何使用Open XML SDK将文本插入内容控件

  3. 3

    如何使用Open XML SDK在.xlsx文件的现有行中添加新单元格?

  4. 4

    如何指定不使用Open XML SDK包装Word TableCell?

  5. 5

    插入图像会损坏Open XML SDK生成的Word文件

  6. 6

    如何使用Open XML .net SDK将幻灯片编号添加到PowerPoint演示文稿中?

  7. 7

    使用F#和Open XML SDK读取Excel文件中的单元格内容

  8. 8

    使用Open XML SDK 2.0获取占位符值

  9. 9

    无法使用Open XML SDK创建文档

  10. 10

    使用Open XML SDK读取Excel图表模板(* .crtx)

  11. 11

    在UWP中使用OPEN-XML SDK生成Doc文件

  12. 12

    OPEN XML SDK无限循环

  13. 13

    如何使用Facebook SDK的Open Graph喜欢Android中的Url

  14. 14

    Open XML SDK:如何为WordprocessingDocument.Open获取有效的Word文档

  15. 15

    NUGET上的Microsoft OPEN XML sdk 2.5

  16. 16

    使用Open XML SDK检索内容控件时出现问题

  17. 17

    使用C#在OPEN XML sdk中添加引用另一个工作簿中的单元格的公式

  18. 18

    有什么方法可以将ID分配给Open XML SDK 2.5中的段落?

  19. 19

    在 Open XML SDK 2.5 中创建的文件在选择打印时崩溃 excel

  20. 20

    Open Office xml SDK异常“无法插入OpenXmlElement“ newChild”,因为它是树的一部分“

  21. 21

    如何使用 Linq 打开 Open XML

  22. 22

    以编程方式更改/添加pptx powerpoint的缩略图。使用Openxml SDK?

  23. 23

    如何在 C# 中使用 Open XML SDK 锁定 word 文档上的所有字段(CTRL-A、CTRL-F11)

  24. 24

    python-pptx模块可以插入视频吗?

  25. 25

    对服务器实施Open XML SDK 2.5

  26. 26

    如何在C#中使用Open XML从Word文档中查找确切的单词?

  27. 27

    使用python-pptx在PowerPoint中删除超链接

  28. 28

    如何在特定元素索引处修改pptx.oxml.xmlchemy.XmlString对象的xml?

  29. 29

    如何使用XML :: Writer perl插入XML

热门标签

归档