小编Kat*_*epa的帖子

C# - OpenXML SDK 2.5 - 从幻灯片母版插入新幻灯片,布局包含图像

我在 OpenXML 2.5 SDK 的帮助下用它来创建我的新幻灯片。我设计并使用自己的幻灯片母版来创建一张新幻灯片。我的幻灯片母版包括一些带图像的布局和一些不带图像的布局。

如果我从主布局创建没有图像的幻灯片,则一切正常。如果我使用包含图像的布局创建一张幻灯片,我会得到正确的布局,但在每个固定图像之上还有另一个可移动图像与固定图像重叠,因此存在不必要的固定图像重复,我不需要在我新创建的幻灯片中。

我怎么解决这个问题?

我的代码如下:

       public static void InsertNewSlide(string presentationFile, int position, string layoutName)
      {
        using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, true))
        {

            InsertNewSlide(presentationDocument, position, layoutName);
        }
      }

    public static void InsertNewSlide(PresentationDocument presentationDocument, int position, string layoutName)
    {
        PresentationPart presentationPart = presentationDocument.PresentationPart;

        OpenXML.Slide slide = new OpenXML.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(layoutName, StringComparison.OrdinalIgnoreCase));

        slidePart.AddPart<SlideLayoutPart>(slideLayoutPart);

        slidePart.Slide.CommonSlideData = (CommonSlideData)slideMasterPart.SlideLayoutParts.SingleOrDefault(sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName)).SlideLayout.CommonSlideData.Clone();

        using (Stream stream = slideLayoutPart.GetStream()) …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

1
推荐指数
1
解决办法
2308
查看次数

标签 统计

c# ×1

openxml ×1

openxml-sdk ×1