如何使用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
从Openxml格式获取图像的最简单方法:
使用任何zip存档库从pptx文件的媒体文件夹中提取图像。 这将包含文档中的图像。 同样,您可以手动将扩展名.pptx替换为.zip并解压缩以从媒体文件夹中获取图像。
希望这可以帮助。