2011-11-06 32 views
3

我在.Net 4.0中有一個Windows窗體應用程序。我在C#工作。 我想從.pptx文件中給定的幻燈片中抓取圖像。打開xml從.pptx文件獲取圖像

這段代碼獲得幻燈片上的每一個形象:

public static SlidePart GetSlidePart(PresentationDocument presentationDocument, int slideIndex) 
    { 
     if (presentationDocument == null) 
     { 
      throw new ArgumentNullException("presentationDocument", "GetSlidePart Method: parameter presentationDocument is null"); 
     } 

     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; 

     if (presentationPart != null && presentationPart.Presentation != null) 
     { 
      Presentation presentation = presentationPart.Presentation; 

      if (presentation.SlideIdList != null) 
      { 
       var slideIds = presentation.SlideIdList.ChildElements; 

       if (slideIndex < slideIds.Count) 
       { 
        string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId; 

        SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); 

        return slidePart; 
       } 
      } 
     } 

     return null;// No slide found 
    } 

但是,如何slidePart轉換爲將在我的Windows窗體來顯示的圖像(在圖像列表或類似的東西)?

回答

2

找到了一個方法:

SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); 

        Slide slide = slidePart.Slide; 
        ImagePart imagePart = (ImagePart)slide.SlidePart.GetPartById("rId3"); 
        System.Drawing.Image img = System.Drawing.Image.FromStream(imagePart.GetStream()); 
+0

什麼是 「rId3」 ID?這是一些常量還是某些指向特定圖像的東西?我正在嘗試編寫一些能夠自動從PPTX文件中提取縮略圖的代碼。 –

+1

@CoreyBurnett我忘記了代碼。但顯然這是一些身份證。 –

+0

@petko_stankoski什麼是ID?我有rID3 id的錯誤...在模板的哪個部分?我怎麼能在功率點學習它的名字? – user1688401