自定义PowerPoint字体
Contents
[
Hide
]
Aspose Slides允许你使用loadExternalFonts方法加载这些字体:
加载自定义字体
Aspose.Slides允许你加载在演示文稿中渲染的字体,而不必安装这些字体。这些字体是从自定义目录加载的。
- 创建FontsLoader类的实例并调用loadExternalFonts方法。
- 加载将被渲染的演示文稿。
- 在FontsLoader类中清除缓存。
以下PHP代码演示了字体加载过程:
# 搜索字体的文件夹
$folders = array($externalFontsDir );
# 加载自定义字体目录的字体
FontsLoader->loadExternalFonts($folders);
# 进行一些工作并执行演示文稿/幻灯片渲染
$pres = new Presentation("DefaultFonts.pptx");
try {
$pres->save("NewFonts_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
# 清除字体缓存
FontsLoader->clearCache();
}
获取自定义字体文件夹
Aspose.Slides提供getFontFolders方法,允许你查找字体文件夹。该方法返回通过LoadExternalFonts
方法添加的文件夹和系统字体文件夹。
以下PHP代码向你展示如何使用getFontFolders:
# 此行输出搜索字体文件的文件夹。
# 这些是通过LoadExternalFonts方法添加的文件夹和系统字体文件夹。
$fontFolders = FontsLoader->getFontFolders();
指定与演示文稿一起使用的自定义字体
Aspose.Slides提供setDocumentLevelFontSources属性,以允许你指定将与演示文稿一起使用的外部字体。
以下PHP代码向你展示如何使用setDocumentLevelFontSources属性:
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = new JavaClass("java.lang.Byte");
$file1 = new Java("java.io.File", "customfonts/CustomFont1.ttf");
$memoryFont1 = $Array->newInstance($Byte, $Array->getLength($file1));
try {
$dis1 = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file1));
$dis1->readFully($memoryFont1);
} finally {
if (!java_is_null($dis1)) $dis1->close();
}
$file2 = new Java("java.io.File", "customfonts/CustomFont2.ttf");
$memoryFont2 = $Array->newInstance($Byte, $Array->getLength($file2));
try {
$dis2 = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file2));
$dis2->readFully($memoryFont2);
} finally {
if (!java_is_null($dis2)) $dis2->close();
}
$loadOptions = new LoadOptions();
$loadOptions->getDocumentLevelFontSources()->setFontFolders(array("assets/fonts", "global/fonts" ));
$loadOptions->getDocumentLevelFontSources()->setMemoryFonts(array($memoryFont1, $memoryFont2 ));
$pres = new Presentation("MyPresentation.pptx", $loadOptions);
try {
# 使用演示文稿
# CustomFont1、CustomFont2以及来自assets\fonts和global\fonts文件夹及其子文件夹的字体可用于演示文稿
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
外部管理字体
Aspose.Slides提供loadExternalFont(byte[] data)方法,以允许你从二进制数据加载外部字体。
以下PHP代码演示了字节数组字体加载过程:
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = (new JavaClass("java.lang.Byte"))->TYPE;
try {
$dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "ARIALN.TTF"));
$bytes = $Array->newInstance($Byte, $dis->available());
$dis->readFully($bytes);
} finally {
if (!java_is_null($dis)) $dis->close();
}
FontsLoader->loadExternalFont($bytes);
try {
$dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "ARIALNBI.TTF"));
$bytes = $Array->newInstance($Byte, $dis->available());
$dis->readFully($bytes);
} finally {
if (!java_is_null($dis)) $dis->close();
}
FontsLoader->loadExternalFont($bytes);
try {
$dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "ARIALNI.TTF"));
$bytes = $Array->newInstance($Byte, $dis->available());
$dis->readFully($bytes);
} finally {
if (!java_is_null($dis)) $dis->close();
}
FontsLoader->loadExternalFont($bytes);
try {
$pres = new Presentation("");
try {
# 在演示文稿生命周期中加载的外部字体
} finally {
}
} finally {
FontsLoader->clearCache();
}