C++调用COM组件导出PPT中的图片

笔记 专栏收录该内容
2 篇文章 0 订阅

C++调用COM组件导出PPT中的图片

最近由于项目需求研究MFC,利用COM组件将PPT中的各种对象导出,这篇文章是对几天以来查阅各种资料的记录。
微软官网没有C++的开发文档只有VBA和C#的,很多类和方法两个文档单独看的话有些参数没有详细说明,需要两个文档结合看,我把链接放到下面
VBA文档
C#文档

PPT的文件结构

PPT为树形结构其中根部是CApplication,然后依次为CPresentations、CPresentation(PPT文件),
CSlides、CSlide(幻灯片),CShapes、CShape(每张幻灯片中的图形包含图片、文字、音频、视频等等)

导出PPT中的图片

查看文档发现,PPT中的图片可以直接用export方法导出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接把代码贴在下面

//.h
#include "CApplication.h"
#include "CPresentation.h"
#include "CPresentations.h"
#include "CShape.h"
#include "CShapes.h"
#include "CSlide.h"
#include "CSlides.h"

CApplication m_app;
CPresentation presentation;
CPresentations presentations;
CSlides slides;
CSlide slide;
CShapes shapes;
CShape shape;
//cpp
CString strFileName(/*要导出的PPT文件*/);
presentations = m_app.get_Presentations();
presentation = presentations.Open(strFileName, 0, 0, 1);//打开相应ppt文件
slides = presentation.get_Slides();//获取所有的幻灯片
// 遍历所有幻灯片
for (int i = 1; i <= slides.get_Count(); i++)
{
	slide = slides.Item(COleVariant((long)i));//获取当前的幻灯片
	shapes = slide.get_Shapes();//获取当前幻灯片中的所有图形
	//遍历所有图形
	for (int j = 1; j <= shapes.get_Count(); j++)
	{
		shape = shapes.Item(COleVariant((long)j));//获取当前图形
		CString nameStr = _T("E:\\")+ shape.get_Name() +_T(".png");
		/*void Export(string PathName,		//导出的文件路径
    				PpShapeFormat Filter,	//枚举,转换成某种格式的图片
    				int ScaleWidth,			//
    				int ScaleHeight,		//	
    				PpExportMode ExportMode	//枚举,导出模式
    				) 
    	我发现导出时图片会压缩,但是吧ScaleWidth和ScaleHeight的值设为0,图片就会和PPT中保存的大小,缩				放一样
		*/
		shape.Export(nameStr, 2, 0, 0, 4);
	}
}
presentation.Close();//关闭文件
m_app.Quit();//退出PPT
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值