Настройка шрифтов PowerPoint в JavaScript
Aspose Slides позволяет загружать эти шрифты с помощью метода loadExternalFonts:
Load Custom Fonts
Aspose.Slides позволяет загружать шрифты, используемые в презентации, без их установки в системе. Это влияет на вывод при экспорте — например PDF, изображения и другие поддерживаемые форматы — так что получаемые документы выглядят одинаково в разных средах. Шрифты загружаются из пользовательских каталогов.
- Укажите одну или несколько папок, содержащих файлы шрифтов.
- Вызовите статический метод FontsLoader.loadExternalFonts для загрузки шрифтов из этих папок.
- Загрузите и отрендерите/экспортируйте презентацию.
- Вызовите FontsLoader.clearCache для очистки кэша шрифтов.
Ниже приведён пример кода, демонстрирующий процесс загрузки шрифтов:
// Определите папки, содержащие пользовательские файлы шрифтов.
let fontFolders = java.newArray("java.lang.String", [externalFontFolder1, externalFontFolder2]);
// Загрузите пользовательские шрифты из указанных папок.
aspose.slides.FontsLoader.loadExternalFonts(fontFolders);
let presentation = null;
try {
presentation = new aspose.slides.Presentation("sample.pptx");
// Выполните рендеринг/экспорт презентации (например, в PDF, изображения или другие форматы), используя загруженные шрифты.
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf);
} finally {
if (presentation != null) presentation.dispose();
// Очистите кэш шрифтов после завершения работы.
aspose.slides.FontsLoader.clearCache();
}
Note
FontsLoader.loadExternalFonts добавляет дополнительные папки в пути поиска шрифтов, но не изменяет порядок инициализации шрифтов.
Шрифты инициализируются в следующем порядке:
- Путь к шрифтам по умолчанию операционной системы.
- Путья, загруженные через FontsLoader.
Get Custom Fonts Folder
Aspose.Slides предоставляет метод getFontFolders для поиска папок шрифтов. Этот метод возвращает папки, добавленные через метод LoadExternalFonts, а также системные папки шрифтов.
Ниже JavaScript‑код, показывающий, как использовать getFontFolders:
// Эта строка выводит папки, где ищутся файлы шрифтов.
// Это папки, добавленные через метод LoadExternalFonts, и системные папки шрифтов.
var fontFolders = aspose.slides.FontsLoader.getFontFolders();
Specify Custom Fonts Used With Presentation
Aspose.Slides предоставляет свойство setDocumentLevelFontSources для указания внешних шрифтов, которые будут использоваться в презентации.
Ниже JavaScript‑код, демонстрирующий использование свойства setDocumentLevelFontSources:
var memoryFont1 = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "customfonts/CustomFont1.ttf"));
var memoryFont2 = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "customfonts/CustomFont2.ttf"));
var loadOptions = new aspose.slides.LoadOptions();
loadOptions.getDocumentLevelFontSources().setFontFolders(java.newArray("java.lang.String", ["assets/fonts", "global/fonts"]));
loadOptions.getDocumentLevelFontSources().setMemoryFonts(java.newArray("[B", [java.newArray("byte", ["item1", "item2", "item3"])]));
var pres = new aspose.slides.Presentation("MyPresentation.pptx", loadOptions);
try {
// Работа с презентацией
// CustomFont1, CustomFont2 и шрифты из папок assets\fonts и global\fonts и их подпапок доступны для презентации
} finally {
if (pres != null) {
pres.dispose();
}
}
Manage Fonts Externally
Aspose.Slides предоставляет метод loadExternalFont(byte[] data) для загрузки внешних шрифтов из бинарных данных.
Ниже JavaScript‑код, показывающий процесс загрузки шрифта из массива байтов:
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALN.TTF")));
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALNBI.TTF")));
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALNI.TTF")));
try {
var pres = new aspose.slides.Presentation("");
try {
// внешний шрифт, загруженный во время жизни презентации
} finally {
}
} finally {
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "clearCache");
}
FAQ
Влияют ли пользовательские шрифты на экспорт во все форматы (PDF, PNG, SVG, HTML)?
Да. Подключённые шрифты используются рендерером во всех форматах экспорта.
Автоматически ли пользовательские шрифты встраиваются в полученный PPTX?
Нет. Регистрация шрифта для рендеринга не равна его встраиванию в PPTX. Если нужен шрифт внутри файла презентации, используйте явные возможности встраивания.
Можно ли управлять поведением fallback, когда у пользовательского шрифта отсутствуют некоторые глифы?
Да. Настройте замену шрифтов, правила замены и наборы fallback, чтобы точно определить, какой шрифт использовать при отсутствии требуемого глифа.
Можно ли использовать шрифты в контейнерах Linux/Docker без их установки в системе?
Да. Указывайте собственные папки со шрифтами или загружайте шрифты из массивов байтов. Это устраняет зависимость от системных каталогов шрифтов в образе контейнера.
А что с лицензированием — можно ли встраивать любой пользовательский шрифт без ограничений?
Вы несёте ответственность за соблюдение лицензий шрифтов. Условия различаются; некоторые лицензии запрещают встраивание или коммерческое использование. Всегда проверяйте EULA шрифта перед распространением результатов.