有一大批PPT文件,想对每一个PPT文件采集其中一页,转换成Jpg或Gif文件,这样可以通过图像浏览软件迅速找到想要的PPT文件,也可以做成相册之类的集中直观地浏览这些PPT文件。大概是这个想法。 所以查了一些资料,用DELPHI控制PowerPoint,打开某个PPT文件,然后用程序自动提取其中的一页,转换成图像文件。 发现还是比较容易的,PowerPoint有两大模式,一是设计模式,用PowerPointPresentation组件去控制,另一个模式是幻灯播放模式,用PowerPointSlide去控制。幻灯模式我们的软件不需要用到,所以没有写,不过例程中有一些注释的演示代码,如果需要可以参考一下。 DELPHI控制PowerPoint基本套路是,放一个TPowerPointApplication用于与PowerPoint之间沟通,然后用PowerPointPresentation打开一个文件,后面就全部用PowerPointPresentation去控制了。至于PowerPointPresentation的代码属性,其实可以在PowerPoint里录制一段宏,把宏的代码直接抄过来修改一下就可以。DELPHI提供Office组件的贡献是让它支持VBA吧。 帖一下代码吧,以下是把PPT文件的最后一页转换成640x480大小的Gif图片 begin PowerPointApplication1.Connect; //调用PowerPoint时,PowerPoint窗口可见 PowerPointApplication1.Visible := msoTrue; //打开Ppt文件 PowerPointPresentation1.ConnectTo(PowerPointApplication1.Presentations.Open(fn, msofalse, msofalse, msoTrue)); //导出最后一页为Gif PowerPointPresentation1.Slides.Item(PowerPointPresentation1.Slides.Count).Export(ChangeFileExt(fn, '.gif'), '.gif', 640, 480); PowerPointPresentation1.Close; PowerPointPresentation1.Disconnect; PowerPointApplication1.Disconnect; ShowMessage('转换完成'); end; 以下的代码则是利用“另存”的功能,把整个PPT转换成一组JPG文件,运行结果是产生一个图片目录,而不是一张图片 var EParam: OleVariant; begin PowerPointApplication1.Connect; PowerPointApplication1.Visible := msoTrue; PowerPointPresentation1.ConnectTo(PowerPointApplication1.Presentations.Open(fn, msofalse, msofalse, msoTrue)); //全部另存为Jpg PowerPointPresentation1.SaveAs(ChangeFileExt(fn, '.jpg'), ppSaveAsJPG, msoFalse); //这句将导出所有页面 PowerPointPresentation1.Close; PowerPointPresentation1.Disconnect; PowerPointApplication1.Disconnect; ShowMessage('转换完成'); end; 同时提供例程的源码和截图,欢迎交流。
