使用Open XML SDK从2个幻灯片中删除演示文稿中的所有幻灯片

问题描述 投票:1回答:2

对不起我的英文:)

我有一些介绍

using (PresentationDocument presentationDocument = PresentationDocument.Open(@"sample.pptx", false))
{

}

其中包含10张幻灯片。除了秒之外我如何删除所有幻灯片并将此结果(演示文稿)保存在单独的.pptx文件中?

我探索了this样本,但这里展示了如何删除一张幻灯片,我无法解决我的任务。

c# ms-office powerpoint openxml openxml-sdk
2个回答
1
投票

使用您提供的示例中的方法,您可以删除第一页,然后删除新的第一页之后的任何页面。在代码中:

private void KeepOnlySecondPage(string presentationFilePath, string onlySecondPageFilePath)
{
   using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFilePath, false))
   {
      if (CountSlides(presentationDocument) > 0)
      {
         DeleteSlide(presentationDoucment, 0);
         while (CountSlides(presentationDocument) > 1)
         {
            DeleteSlide(presentationDocument,1);
         }
         presentationDocument.Save(onlySecondPageFilePath);
      }
    }
}

如果您花费更多时间研究链接到的页面中的示例和PresentationDocument类本身,也许更简单的方法是创建一个仅包含原始第二页的新PresentationDocument。

另外,请编辑您的问题以包含链接页面中的基本部分。链接死了!


0
投票

@Adam:你可以试试这个

 // Delete all slides except Slide at Index i


                    int countSlide = CountSlides(filePath + i + ".pptx");  // Count number of slides
                    int newIndex = i; // Slide index that you want to keep it
                    while (1 < countSlide )
                    {
                        // Delete all slides before index i
                        if (newIndex > 0)
                        {
                            DeleteSlide(filePath + i + ".pptx", 0);
                            countSlide--; // Decrease number of slides after you delete it
                            newIndex--;
                        }
                        // Delete all slides after index i
                        else if (newIndex < 0)
                        {
                            DeleteSlide(filePath + i + ".pptx", 1);
                            countSlide--; // Decrease number of slides after you delete it
                            newIndex--;
                        }
                        else newIndex--;

                    }

DeleteSlide()你可以在这里找到MSDN: OpenXML Delete a slide in presentation

© www.soinside.com 2019 - 2024. All rights reserved.