【问题标题】:Save background image of slide保存幻灯片的背景图片
【发布时间】:2012-09-14 05:59:33
【问题描述】:

有谁知道如何在PowerPoint演示文稿(2010)中保存幻灯片的背景图像。这是我的代码的一部分,我试图清除幻灯片以获取背景图像,但这不是理想的结果

PowerPoint.Presentation p = app.Presentations.Open(slidesContainerPath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);

        string imagename;
        foreach (PowerPoint.Slide s in p.Slides) {
            imagename = s.SlideIndex.ToString() + ".jpg";
            s.BackgroundStyle = Microsoft.Office.Core.MsoBackgroundStyleIndex.msoBackgroundStyleNotAPreset;
            foreach(Microsoft.Office.Interop.PowerPoint.Shape shape in s.Shapes)
            {
                shape.Delete();
            }                
            s.Export(imagesContainerPath + "\\" + imagename, "JPG");
        }
        if (p != null) {
            p.Close();
        }

【问题讨论】:

标签: c# ms-office powerpoint office-interop


【解决方案1】:

如果您陈述问题,则更容易帮助您解决问题。 你说“这不是理想的结果”。这可能意味着很多事情,从“什么都没发生”到“我的电脑爆炸了”。 ;-)

如果我必须猜测(我确实猜到了),我会说您可能会看到从幻灯片中删除的所有其他形状,而不是所有形状。而不是 foreach 循环,使用类似这样的东西(VB/VBA,根据需要翻译):

For x = s.Shapes.Count to 1 Step -1
  sShapes(x).Delete
Next

这将删除幻灯片上的所有形状。

或者只是这个而不是循环:

s.Shapes.ShapeRange.Delete

【讨论】:

  • 好吧,你是对的,我可能应该发布一个更清晰的问题 :) 但正如你在我的代码中看到的那样,有一个 foreach 循环应该从幻灯片中删除所有形状,但原因不明它不是。对我有用的最终解决方案是使用 2 个连续相同的 foreach 循环来删除形状。我不知道为什么,可能是因为我拥有的文件有些愚蠢。不过感谢您的努力。
猜你喜欢
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 2017-12-05
相关资源
最近更新 更多