有时候由于工作需要,常在PPT中应用个性化模板,那么在PPT中如何新建自定义PPT主题呢?我们一起来看看吧!首先打开PPT演示文稿,创建四张空白文档(连按四下enter键),点击工作栏【视图......
2022-05-05 183 自定义PPT主题
很多人工作学习中经常需要做演示报告,如果自己没有笔记本,那么准备好的PPT文件就得手动转移了。这个过程中如果不能将文件中使用的特殊字体一起带走,到演示机器上的效果可能会让你的精心准备大打折扣。正是因为自己碰到过这个问题,所以希望做个简单的小工具将 PPT文件中使用到的字体都提取出来,方便携带到其他机器上安装。
简单介绍一下这个小工具制作的过程~
工作原理设想
很简单,分三步:
1. 解析PPT文件,收集其中的所有文字使用到的字体名称;
2. 通过这些字体名称,去系统的字体文件存放目录将相应的字体文件导出;
3. 生成一个字体安装脚本,以便在目标机器安装这些字体。
具体实现
有了这个简单设计,就用c#去着手实现了,可即使设计这么简单了,还是碰到一些问题:)
1. PPT文件解析
由于.net对office应用已经做了良好封装,这步做起来没有什么困难,基本只要查一查需要的查询接口就可以。只有一点需要注意一下,因为PPT文字格式的任意性,每一个文字都可以设置字体,所以我们需要让字体提取的粒度保持在单个的字符上,这样才不会有所遗漏。
首先在后台模式打开PPT文件:
PowerPoint.Application pptApplication = new PowerPoint.ApplicationClass();
PowerPoint.Presentation presentation = pptApplication.Presentations.Open2007(
_fileName,
Office.MsoTriState.msoTrue,
Office.MsoTriState.msoTrue,
Office.MsoTriState.msoFalse,
Office.MsoTriState.msoFalse);
然后遍历文字取得字体名,层次顺序是 slide > shape > text > character:
foreach (PowerPoint.Slide slide in presentation.Slides)
{
foreach (PowerPoint.Shape shape in slide.Shapes)
{
if (shape.HasTextFrame == Office.MsoTriState.msoTrue &&
shape.TextFrame.HasText == Office.MsoTriState.msoTrue)
{
PowerPoint.TextRange textRange = shape.TextFrame.TextRange;
for (int i = 0; i < textRange.Length; ++i)
{
PowerPoint.Font font = textRange.Characters(i, 1).Font;
if (!_fontNames.Contains(font.Name))
_fontNames.Add(font.Name);
}
}
}
}
这样就可以获得各种PPT文件中各种形式文本使用的每一个字体名(smartart形式的除外,因为微软没有开放相应的模型数据)。
别忘了关闭文件和PPT程序:
presentation.Close();
pptApplication.Quit();
相关文章
有时候由于工作需要,常在PPT中应用个性化模板,那么在PPT中如何新建自定义PPT主题呢?我们一起来看看吧!首先打开PPT演示文稿,创建四张空白文档(连按四下enter键),点击工作栏【视图......
2022-05-05 183 自定义PPT主题
我们有时候在使用PPT过程中需要在PPT中批量插入图片三种方法,你知道怎样在PPT中批量插入图片吗?今天小编就教一下大家在PPT中批量插入图片三种方法。一、把多张图片批量插入到一张幻灯......
2022-05-05 355 PPT批量插入图片
如何在PPT中绘制倒金字塔的逻辑表达效果老规矩,方法看看效果。是一个倒金字塔逻辑思路表达,表达经过层层筛选总结,最后合作得以实现的表达。这种有立体的环形的金字塔怎么绘制呢?......
2022-05-05 491 PPT绘制倒金字塔效果
用PPT演示文稿的操作中,我们会根据需要进行背景设置,如果想使用电脑上的图片,例如团队照片、网上下载的图片,我们该怎么操作呢?第一步,在页面空白处,点击右键,点击【设置背景......
2022-05-05 261 PPT背景