DELPHI控制PowerPoint

来源:互联网 发布:apache tiles 比较 编辑:程序博客网 时间:2024/04/25 14:00

DELPHI控制PowerPoint

 

有一大批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;

同时提供例程的源码和截图,欢迎交流。

原创粉丝点击