Встроенный шрифт - PowerPoint JavaScript API
Встроенные шрифты в PowerPoint полезны, когда нужно, чтобы ваша презентация отображалась правильно на любой системе или устройстве. Если вы использовали сторонний или нестандартный шрифт, потому что проявили креативность в работе, то у вас есть ещё больше причин встраивать шрифт. В противном случае (без встроенных шрифтов) текст или цифры на слайдах, макет, стили и т.д. могут измениться или превратиться в непонятные прямоугольники.
Классы FontsManager, FontData, Compress и их члены содержат большинство свойств и методов, необходимых для работы со встроенными шрифтами в презентациях PowerPoint.
Получить или удалить встроенные шрифты из презентации
Aspose.Slides предоставляет метод getEmbeddedFonts (доступный через класс FontsManager), позволяющий получить (или узнать) шрифты, встроенные в презентацию. Для удаления шрифтов используется метод removeEmbeddedFont того же класса.
Этот JavaScript‑код показывает, как получить и удалить встроенные шрифты из презентации:
// Создаёт объект Presentation, представляющий файл презентации
var pres = new aspose.slides.Presentation("EmbeddedFonts.pptx");
try {
// Рендерит слайд, содержащий текстовый фрейм, использующий встроенный "FunSized"
var slideImage = pres.getSlides().get_Item(0).getImage(java.newInstanceSync("java.awt.Dimension", 960, 720));
// Сохраняет изображение на диск в формате JPEG
try {
slideImage.save("picture1_out.jpg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
var fontsManager = pres.getFontsManager();
// Получает все встроенные шрифты
var embeddedFonts = fontsManager.getEmbeddedFonts();
// Находит шрифт "Calibri"
var calibriEmbeddedFont = null;
for (var i = 0; i < embeddedFonts.length; i++) {
console.log("" + embeddedFonts[i].getFontName());
if ("Calibri" == embeddedFonts[i].getFontName()) {
calibriEmbeddedFont = embeddedFonts[i];
break;
}
}
// Удаляет шрифт "Calibri"
fontsManager.removeEmbeddedFont(calibriEmbeddedFont);
// Рендерит презентацию; шрифт "Calibri" заменяется существующим
slideImage = pres.getSlides().get_Item(0).getImage(java.newInstanceSync("java.awt.Dimension", 960, 720));
// Сохраняет изображение на диск в формате JPEG
try {
slideImage.save("picture2_out.jpg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
// Сохраняет презентацию без встроенного шрифта "Calibri" на диск
pres.save("WithoutManageEmbeddedFonts_out.ppt", aspose.slides.SaveFormat.Ppt);
} finally {
if (pres != null) {
pres.dispose();
}
}
Добавить встроенные шрифты в презентацию
Используя перечисление EmbedFontCharacters и два перегруженных варианта метода addEmbeddedFont, вы можете выбрать предпочтительное правило встраивания шрифтов в презентацию. Этот JavaScript‑код показывает, как встроить и добавить шрифты в презентацию:
// Загружает презентацию
var pres = new aspose.slides.Presentation("Fonts.pptx");
try {
var allFonts = pres.getFontsManager().getFonts();
var embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
allFonts.forEach(font => {
var embeddedFontsContainsFont = false;
for (var i = 0; i < embeddedFonts.length; i++) {
if (embeddedFonts[i].equals(font)) {
embeddedFontsContainsFont = true;
break;
}
}
if (!embeddedFontsContainsFont) {
pres.getFontsManager().addEmbeddedFont(font, aspose.slides.EmbedFontCharacters.All);
embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
}
});
// Сохраняет презентацию на диск
pres.save("AddEmbeddedFont_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Сжать встроенные шрифты
Чтобы позволить сжать встроенные в презентацию шрифты и уменьшить её размер, Aspose.Slides предоставляет метод compressEmbeddedFonts (доступный через класс Compress).
Этот JavaScript‑код показывает, как сжать встроенные шрифты PowerPoint:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
aspose.slides.Compress.compressEmbeddedFonts(pres);
pres.save("pres-out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
FAQ
Как понять, что конкретный шрифт в презентации всё равно будет заменён при рендеринге, несмотря на встраивание?
Проверьте информацию о замене в менеджере шрифтов и правила резервирования/замены: если шрифт недоступен или ограничен, будет использован резервный шрифт.
Стоит ли встраивать системные шрифты, такие как Arial/Calibri?
Обычно нет — они почти всегда доступны. Но для полной портативности в «плотных» средах (Docker, Linux‑сервер без предустановленных шрифтов) встраивание системных шрифтов может устранить риск неожиданной замены.