2017-02-24 3 views
0

Ich habe ein PPT-Diaplay mit mehreren Bildern. Ich wiederhole jede Folie und jede Form. Ich mag jede Form des Typ msoPicture als Bild speichern:C# PPT-Form speichern (msoPicture) als Bild mit Office.Interop

  foreach (PPT.Slide slide in pptDoc.Slides) 
      { 
       foreach (PPT.Shape shape in slide.Shapes) 
       { 
        if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture) 
        { 

         Image img; 
         //???? Save shape as image 
         img.Save(filename); 
        } 
       } 
      } 

Antwort

1

Sie können die Shape.Export() method verwenden, um ein Bild von einer individuellen Form zu erstellen.

Zum Beispiel wie folgt aus:

foreach (PPT.Slide slide in pptDoc.Slides) 
{ 
    foreach (PPT.Shape shape in slide.Shapes) 
    { 
     if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture) 
     { 
      shape.Export(filename, Microsoft.Office.Interop.PowerPoint.PpShapeFormat.ppShapeFormatPNG); 
     } 
    } 
} 
+0

Ich frage mich, ob es zu einem Strom gespart werden kann, anstatt das Dateisystem? – JDR

+0

@JDR AFAIK dies ist nicht möglich mit COM-Automatisierung (d. H. Mit 'Microsoft.Interop'). Aber es sollte möglich sein, wenn man eine Bibliothek benutzt, um direkt mit den Dateien zu arbeiten, zum Beispiel 'OpenXML' (obwohl dies etwas komplizierter sein kann als COM Automation, da die Dateiformate sehr komplex sind) – bassfader

+0

Danke, werde ich wahrscheinlich Bleiben Sie einfach beim Dateisystem, denn nachdem Sie ein bisschen mehr darüber gelesen haben, scheint es viel mühsamer zu sein, als es wert ist, ein kleines bisschen auf IO zu sparen. – JDR