使用 PHP 简化演示文稿中的字体替换

替换字体

如果您改变了使用字体的想法,可以用另一种字体替换该字体。旧字体的所有实例都将被新字体取代。

Aspose.Slides 允许您以以下方式替换字体:

  1. 加载相关演示文稿。
  2. 加载将被替换的字体。
  3. 加载新字体。
  4. 替换字体。
  5. 将修改后的演示文稿写入 PPTX 文件。

此 PHP 代码演示了字体替换:

  # 加载演示文稿
  $pres = new Presentation("Fonts.pptx");
  try {
    # 加载将被替换的源字体
    $sourceFont = new FontData("Arial");
    # 加载新字体
    $destFont = new FontData("Times New Roman");
    # 替换字体
    $pres->getFontsManager()->replaceFont($sourceFont, $destFont);
    # 保存演示文稿
    $pres->save("UpdatedFont_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

常见问题

“字体替换”、 “字体替代” 和 “后备字体” 有何区别?

替换是有意地在整个文档中将一个字体族切换为另一个。 字体替代 是一种规则,例如“如果字体不可用,使用 X”。 后备字体 则在单个缺失字形时进行局部应用,当基础字体已安装但不包含所需字符时使用。

替换是否适用于母版幻灯片、布局、备注和批注?

是的。替换会影响所有使用原始字体的演示文稿对象,包括母版幻灯片和备注;批注也是文档的一部分,字体引擎会考虑它们。

嵌入的 OLE 对象(例如 Excel)内部的字体会变化吗?

不会。OLE 内容 由其自身的应用程序控制。演示文稿中的替换不会重新格式化内部 OLE 数据;它可能会显示为图像或作为可外部编辑的内容。

我能只在演示文稿的某部分(按幻灯片或区域)替换字体吗?

如果在所需对象/范围层面更改字体,而不是对整个文档进行全局替换,则可以实现针对性替换。渲染期间的整体字体选择逻辑保持不变。

如何提前确定演示文稿使用了哪些字体?

使用演示文稿的字体管理器:它提供正在使用的字体族列表以及关于替代/“未知”字体的信息,帮助规划替换工作。

字体替换在转换为 PDF/图像时是否有效?

有效。在导出期间,Aspose.Slides 应用相同的字体选择/替代顺序,因此预先进行的替换将在转换时得到尊重。

我需要在系统中安装目标字体,还是可以附加一个字体文件夹?

无需安装:库允许从用户文件夹加载外部字体,以便在渲染和导出期间使用。

替换能解决字符显示为“豆腐块”(方框)的问题吗?

仅当目标字体实际包含所需字形时才会解决。如果不包含,请配置后备字体以覆盖缺失字符。