使用COM将PPT文档转成JPG文件

来源:互联网 发布:静境电纸书 知乎 编辑:程序博客网 时间:2024/05/20 20:01

我们还是按步骤来,首先,添加类,并将头文件引进来:


选择“文件”:


找到MSOffice安装目录,找到MSPPT.OLB文件并选择打开:


再选择要导出的类:


接着点完成就OK了,下一步在刚刚选择的这几个类的生成出来的头文件里面注释掉下面这行代码,不然编译通不过:

//#import "C:\\Program Files (x86)\\Microsoft Office\\Office12\\MSPPT.OLB" no_namespace

然后开始正式写代码了,首先,初始化COM,我选择的是

//初始化COM if(!AfxOleInit()){AfxMessageBox(_T( "Cannot initialize COM dll" )); }

每次调用的时候都调用这个初始化,接下来,直接上代码: 


CApplicationPPT app; //我这里只是把导出来的类改了一下名字而已,导出来的那几个头文件类名都可以自己随便改的。if(!app.CreateDispatch(_T("Powerpoint.Application")))  {  AfxMessageBox(_T("无法启动PowerPoint服务器!"));  return;  }   Sleep( 500 );CPresentations cpres;cpres.AttachDispatch( app.get_Presentations() );LPDISPATCH lpDisp;  lpDisp = cpres.Open(pPPTFile,0,0,0);  CPresentation cpre;cpre.AttachDispatch( lpDisp );CSlides cslides;cslides.AttachDispatch( cpre.get_Slides() );//获取幻灯片总数int nPageCount = cslides.get_Count();


for ( int i = 1; i <= nPageCount; i++ ){CSlide cSlide;  cSlide.AttachDispatch( cslides.Item(COleVariant((long)i)) ); cSlide.Copy();  //使用Ppt自带的方式输出图片,而且图片清晰度更好。使用PPT自带的输出文件接口 //传0,0表示使用默认的大小输出文件。cSlide.Export( strJPGFileEx,"jpg",0,0);}

整个读取PPT文档就这样了,想起来比较复杂,但实际上代码很少,接下来释放:

//清理工作  cslides.ReleaseDispatch();   cpre.ReleaseDispatch(); cpres.ReleaseDispatch(); app.ReleaseDispatch();app.Quit();

 
如果PPT里有特别的字体,发现输出来的图片,会有些模糊,不知道什么原因,哪位朋友知道还望告知一下啊,就这样,完工! 这部分代码在WINXP,WIN7,WIN8, 32/64位系统下都运行良好。
原创粉丝点击