2017-02-24 5 views
0

여러 이미지가있는 PPT 슬라이드 데크가 있습니다. 각 슬라이드와 각 모양을 반복합니다. 나는 이미지로 유형 msoPicture의 각 모양을 저장하려면 다음과 같이 :C# Office.Interop을 사용하여 이미지로 PPT 모양 (msoPicture) 저장

  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); 
        } 
       } 
      } 

답변

1

당신은 각각의 모양에서 이미지를 만들 수 Shape.Export() method를 사용할 수 있습니다.

이 같은 예를 들어

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

오히려 파일 시스템보다 스트림에 저장 될 수 있는지 궁금? – JDR

+0

@JDR AFAIK 이것은 COM 자동화를 사용하여 (즉,'Microsoft.Interop'을 사용하여) 불가능합니다. 그러나 OpenXML과 같이 파일을 직접 사용하기 위해 라이브러리를 사용할 때 가능할 것입니다 (Office 파일 형식이 매우 복잡하기 때문에 COM 자동화를 사용하는 것보다 약간 복잡 할 수도 있음) – bassfader

+0

감사합니다. 이 파일을 살펴본 결과, IO에 작은 비트를 저장하는 것보다 더 많은 번거 로움이 있기 때문에 파일 시스템에 충실하십시오. – JDR