2012-08-08 25 views
1

我正在操作使用OpenXML SDK的Power Point幻灯片。幻灯片上有一个图像。我想要做的是,如果在服务器上找到特定图像,请使用服务器上找到的幻灯片图像替换幻灯片图像,否则完全删除图像。OpenXML SDK从PowerPoint中删除图像幻灯片

我有更换工作正常,但如果我尝试删除图片我仍然得到了“此图片无法显示”,在它的图像控制。

下面是我在做什么要删除的图像,请注意slidePart是滑我操作:

'get the first image on the slide 
Dim blip As Drawing.Blip = slidePart.Slide.Descendants(Of Drawing.Blip)().First() 
blip.Remove() 
slidePart.Slide.Save() 

谁能告诉我什么,我做错了什么?任何意见将不胜感激,非常感谢。

回答

2

你要寻找对应于您的形象和删除元素Picture元素。我倾向于通过图像名称进行搜索,以便找到Picture元素,然后将其删除。这里是我使用的代码的C#示例:

Picture imageToRemove = slidePart.Slide.Descendants<Picture>().SingleOrDefault(picture => picture.NonVisualPictureProperties.OuterXml.Contains(imageFileName)); 

if (imageToRemove != null) 
{ 
    imageToRemove.Remove(); 
} 
+0

嗨,感谢您的回应。滑动仅上有一个图像,我尝试以下:'昏暗imageToRemove作为DocumentFormat.OpenXml.Presentation.Picture = slidePart.Slide.Descendants(OF DocumentFormat.OpenXml.Presentation.Picture)()的SingleOrDefault()',但我。我无法获得任何回报。如果我只有一个图像,我不应该通过图像名称进行搜索? – TheMethod 2012-08-09 15:26:09

+1

'Picture'元素位于'slidePart.Slide.CommonSlideData.ShapeTree'的子元素中,因此请尝试在其中搜索元素。如果只有一张图片,则不必通过文件名进行搜索。 – amurra 2012-08-09 15:53:12

+1

感谢您的回复。我想'DocumentFormat.OpenXml.Presentation.Picture = slidePart.Slide.CommonSlideData.ShapeTree.Descendants(中DocumentFormat.OpenXml.Presentation.Picture)()的SingleOrDefault()',但我仍然得到什么回来。 – TheMethod 2012-08-09 16:15:53