안녕하세요? 맨날맑음 입니다.

 

이번에 만들어 볼 내용은 Microsoft Office Object를 이용한 간단한 PPT Viewer를 만드는 것입니다.

제가 2010년 HOONS.NET WPF 시삽으로 활동하게 되면서 어플리케이션은 WPF로 만들어 보겠습니다.

이 방법의 대략적인 과정을 살펴보면 다음과 같습니다.

 

1. Microsoft Office 12.0 Object Library를 참조한다.(Office 2007 버전에 경우 12.0)

2. ApplicationClass 객체를 이용하여 PPT 파일을 읽어온다.

3. Presentation 객체를 이용하여 슬라이드를 그림 파일로 하드에 저장한다.

4. 그림 파일을 로딩하여 마치 PTT Viewer인척(?) 한다.

 

전체적인 과정에서 보듯이 PPT파일을 읽어드려 하드에 그림파일로 저장한 것을 띄우는 방식이기 때문에 PPT에 들어있는 애니메이션 효과를 기대하기는 어렵습니다. 그래서 PTT Viewer인척(?)이라고 한 것 이구요.

 

#1. 관련 어셈블리 참조하기


우선 PPT Viewer를 구현하기 위해 두가지 객체가 필요합니다.

 

COM으로 이루어진 Microsoft Office 12.0 Object Library에 포함된 ApplicationClass 객체가 필요하구요. .NET 어셈블리중 Microsoft.Office.Interop.PowerPoint 12.0에 포함된 Presentation 객체가 필요합니다. 두가지 어셈블리를 참조하고 using도 추가해 줍니다.

 

using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;

 

- Fig1. 관련 어셈블리 참조 -

 

 

#2. 소스 구현

string Path;

Presentation PPT;


private
void ReadPPTfile()

{

    ApplicationClass app = new ApplicationClass();

    PPT = app.Presentations.Open(Path, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

    app.Quit();

}      

 

private void MakePPTIamge()

{

    string myPicturesPath = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

    for (int i = 0; i < PPT.Slides.Count; ++i)

    {               

        PPT.Slides[i + 1].Export(string.Format("{0}\\temp{1}.jpg", myPicturesPath, i), "JPG",

            (int)PPT.Slides[i + 1].Master.Width, (int)PPT.Slides[i + 1].Master.Height);               

    }

}

 

소스는 간단합니다. ReadPPTfile()에서 ApplicationClass 객체를 이용하여 ppt 파일을 Open하고 Presentation 객체를 return 받아 놓습니다. MakePPTIamge()에서 PPT.Slides.Export() 메서드를 호출하여 적당한 경로에 jpg 파일(다른 포맷도 지정 가능)로 저장하는 방법입니다! PPT.Slides.Count를 이용하여 읽어들인 슬라이드 갯수도 알 수 있습니다.

이제 동작에 따라 적당한 그림파일을 로딩하여 사용하면 초간단 PPT Viewer 완성입니다^^;


#3. 마치면서..

요방법의 단점을 좀 생각해 보면. 앞서 이야기한 애니메이션 효과는 사용 할 수 없다는 것과.. 많은양의 슬라이드를 로딩할 경우 오래 걸린다는 단점이 있습니다. 하지만 간단한 방법으로 구현 할 수 있고, 웹으로 뷰어를 제공 할 경우 더 어울리는 방법 일 것 같네요.

Posted by 맨날맑음