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

 

이번에 만들어 볼 내용은 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 맨날맑음

댓글을 달아 주세요

  1. Microsoft Office Object를 이용한 PPT Viewer 만들기 2010.02.22 18:20  댓글주소  수정/삭제  댓글쓰기

    안녕 하세요
    Microsoft Office Object를 이용한 PPT Viewer 만들기
    위에 요것 때문에 그러는데요.

    제가 이제 C# 입문이라 잘 안되서 그러는데요..

    죄송하지만 버튼 이벤트 소스까지 볼수 없을까요

    해봤는데 잘 안되네요..
    어찌 하는지도 잘 모르겠고요.
    부탁 드리겠습니다.

    남은 하루도 즐거운 하루 되세요.

  2. mabup1004 2010.02.23 12:10  댓글주소  수정/삭제  댓글쓰기

    mabup1004@lycos.co.kr

    감사합니다. ^^

    부탁 드려요

  3. 2010.04.21 12:42  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  4. 독자2 2010.04.21 16:05  댓글주소  수정/삭제  댓글쓰기

    감사합니다.
    혹시 word, pdf도 같은식으로 이미지로 전환하는 방법은 없을까요?

  5. 2011.04.07 12:48  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  6. 인새갑자 2011.04.07 12:48  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 WPF로 짠 소스좀 참고할수 있을까요? PPT로 변환된 이미지를 불러드리는건 대충 했는데.. 다시 이 이미지를 파일열기를 해서 불러드리는 부분에서 자꾸 에러가 나네요 ㅜ.ㅜ 소스좀 ...부탁드립니다. 도와주세요 dazoa21@naver.com

  7. Favicon of http://erm00.blog.me/ BlogIcon 태부 2011.11.22 13:46  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 저도 소스가 필요 합니다. mtaebu@gmail.com 블로그에 게시된 소스만으로는 도저히 알기 어렵네요.
    이런 오류들이 나기 때문이겠지요. 좀더 상세한 연결구조와 완벽한 소스로 해주신다면 더 큰 도움이 될거라는 생각이 듭니다. 감사합니다.
    오류 1 네임스페이스는 필드나 메서드와 같은 멤버를 직접 포함할 수 없습니다.
    오류 2 클래스, 대리자, 열거형, 인터페이스 또는 구조체가 필요합니다.
    오류 3 클래스, 대리자, 열거형, 인터페이스 또는 구조체가 필요합니다.
    오류 4 형식이나 네임스페이스 정의 또는 파일 끝(EOF)이 필요합니다.

  8. 눈오는아침 2012.01.07 22:41  댓글주소  수정/삭제  댓글쓰기

    맑은님!! 이것 소스코드 좀 부탁드릴께요. 꼭 필요해서 그럽니다. mofebu@naver.com 입니다. 이 글을 보실런지 모르지만 보시면 꼭 좀 부탁 드립니다.

  9. SY 2012.02.16 11:01  댓글주소  수정/삭제  댓글쓰기

    wpf 어플리케이션에서 파워포인트 파일을 open 하면 power point veiwer나 edraw office viewer를 사용하여 power point 슬라이드 쇼를 보려고 하는데 Microsoft Office 12.0 Object Library를 범용적인 프로젝트에 사용하면 안된다는 내용을 보고 질문드립니다.
    윈도우즈에서 상용화할 프로그램을 만들고 있는데 파워포인트는 돈을 주고 사야되서 파워포인트 없이도 뷰어만 있으면 슬라이드 쇼를 보여줄 수 있도록 하는 것이 목적입니다.
    지금 자료들을 찾아보고 있는데 Microsoft Office 12.0 Object Library를 사용하면 안 되는 것인지 Open XML로 WPF에서 파워포인트 슬라이드 쇼를 열 수 있는지 궁금합니다.

  10. bjb 2012.03.21 17:14  댓글주소  수정/삭제  댓글쓰기

    파워포인트 같은 Edit Tool을 만들고 있습니다.
    그러던 준 파워포인트를 추가 하는 기능을 넣고 싶은데요.
    소스코드를 참고하고 싶습니다. 부탁드립니다.
    bjb4229@naver.com

  11. 감사합니다 2012.10.15 19:11  댓글주소  수정/삭제  댓글쓰기

    아 정말 찾고있던 자료인데 감사합니다!!
    죄송하지만 소스코드좀 받을수있을까요?
    sungjun818@nate.com 입니다.
    좋은자료 감사합니다^^