PowerPoint文件字体提取工具计算机等级考试

文章作者 100test 发表时间 2009:11:11 17:05:47
来源 100Test.Com百考试题网


  很多人工作学习中经常需要做演示报告,如果自己没有笔记本,那么准备好的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().



相关文章


一级B第四章Excel2000的使用[3]计算机等级考试
老提示缺纸?并口数据线惹祸计算机等级考试
计算机三级辅导:内存越多越好吗计算机等级考试
在Word2003文档窗口中使用“自动更正”功能计算机等级考试
PowerPoint文件字体提取工具计算机等级考试
别把散热搞成保温!乱弹散热六大误区计算机等级考试
OpenOffice.org专用多重按钮鼠标面世计算机等级考试
错接鼠标键盘的故障计算机等级考试
电池引起的主板故障计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛