如何使用MS Open XML SDK从.pptx文件中检索图像?

我开始尝试使用Open XML SDK 2.0 for Microsoft Office 。

我现在能够做某些事情,例如检索每张幻灯片中的所有文本,并获得演示文稿的大小。 例如,我这样做:

using (var doc = PresentationDocument.Open(pptx_filename, false)) { var presentation = doc.PresentationPart.Presentation; Debug.Print("width: " + (presentation.SlideSize.Cx / 9525.0).ToString()); Debug.Print("height: " + (presentation.SlideSize.Cy / 9525.0).ToString()); } 

现在我想在给定的幻灯片中检索嵌入的图像。 有谁知道如何做到这一点或者可以指向我关于这个主题的一些文档?

首先,您需要获取SlidePart中获取图像的SlidePart

 public static SlidePart GetSlidePart(PresentationDocument presentationDocument, int slideIndex) { if (presentationDocument == null) { throw new ArgumentNullException("presentationDocument", "GetSlidePart Method: parameter presentationDocument is null"); } // Get the number of slides in the presentation int slidesCount = CountSlides(presentationDocument); if (slideIndex < 0 || slideIndex >= slidesCount) { throw new ArgumentOutOfRangeException("slideIndex", "GetSlidePart Method: parameter slideIndex is out of range"); } PresentationPart presentationPart = presentationDocument.PresentationPart; // Verify that the presentation part and presentation exist. if (presentationPart != null && presentationPart.Presentation != null) { Presentation presentation = presentationPart.Presentation; if (presentation.SlideIdList != null) { // Get the collection of slide IDs from the slide ID list. var slideIds = presentation.SlideIdList.ChildElements; if (slideIndex < slideIds.Count) { // Get the relationship ID of the slide. string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId; // Get the specified slide part from the relationship ID. SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); return slidePart; } } } // No slide found return null; } 

然后,您需要根据图像的文件名搜索将包含您要查找的图像的Picture对象:

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

从Openxml格式获取图像的最简单方法:

使用任何zip存档库从pptx文件的媒体文件夹中提取图像。 这将包含文档中的图像。 同样,您可以手动将扩展名.pptx替换为.zip并解压缩以从媒体文件夹中获取图像。

希望这可以帮助。