Встраивание шрифтов в презентации с помощью Python
Обзор
Встраивание шрифтов в PowerPoint обеспечивает сохранение задуманного внешнего вида вашей презентации на разных системах. Независимо от того, используете ли вы уникальные шрифты для креативности или стандартные, встраивание шрифтов предотвращает нарушения текста и макета.
Если вы использовали сторонний или нестандартный шрифт, потому что проявили креативность в работе, у вас есть ещё больше причин встраивать шрифт. В противном случае (без встраиваемых шрифтов) тексты или цифры на слайдах, макет, стиль и т.п. могут измениться или превратиться в запутанные прямоугольники.
Используйте классы FontsManager, FontData, и Compress для управления встраиваемыми шрифтами.
Получение и удаление встраиваемых шрифтов
Легко извлекайте или удаляйте встраиваемые шрифты из презентации с помощью методов get_embedded_fonts и remove_embedded_font.
Этот Python-код показывает, как получить и удалить встраиваемые шрифты из презентации:
import aspose.slides as slides
import aspose.pydrawing as draw
# Создайте объект класса Presentation, представляющий файл презентации.
with slides.Presentation("EmbeddedFonts.pptx") as presentation:
slide = presentation.slides[0]
# Отобразите слайд, содержащий текстовый фрейм, использующий встроенный шрифт 'FunSized'.
with slide.get_image(draw.Size(960, 720)) as image:
image.save("picture1_out.png", slides.ImageFormat.PNG)
fonts_manager = presentation.fonts_manager
# Получить все встроенные шрифты.
embedded_fonts = fonts_manager.get_embedded_fonts()
# Найти шрифт 'Calibri'.
font_data = list(filter(lambda data : data.font_name == "Calibri", embedded_fonts))[0]
# Удалить шрифт 'Calibri'.
fonts_manager.remove_embedded_font(font_data)
# Отобразить слайд; шрифт 'Calibri' будет заменён существующим.
with slide.get_image(draw.Size(960, 720)) as image:
image.save("picture2_out.png", slides.ImageFormat.PNG)
# Сохранить презентацию без встроенного шрифта 'Calibri' на диск.
presentation.save("WithoutEmbeddedFonts.ppt", slides.export.SaveFormat.PPT)
Добавление встраиваемых шрифтов
Используя перечисление EmbedFontCharacters, а также две перегрузки метода add_embedded_font, вы можете выбрать предпочитаемое (встраиваемое) правило для встраивания шрифтов в презентацию. Этот Python-код демонстрирует, как встраивать и добавлять шрифты в презентацию:
import aspose.slides as slides
# Загрузить презентацию.
with slides.Presentation("Fonts.pptx") as presentation:
all_fonts = presentation.fonts_manager.get_fonts()
embedded_fonts = presentation.fonts_manager.get_embedded_fonts()
for font in all_fonts:
if font not in embedded_fonts:
presentation.fonts_manager.add_embedded_font(font, slides.export.EmbedFontCharacters.ALL)
# Сохранить презентацию на диск.
presentation.save("AddEmbeddedFont.pptx", slides.export.SaveFormat.PPTX)
Сжатие встраиваемых шрифтов
Оптимизируйте размер файла, сжимая встраиваемые шрифты с помощью compress_embedded_fonts.
Пример кода для сжатия:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slides.lowcode.Compress.compress_embedded_fonts(presentation)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
FAQ
Как узнать, что конкретный шрифт в презентации всё равно будет заменён при рендеринге, несмотря на встраивание?
Проверьте информацию о замене в менеджере шрифтов и правила fallback/замены: если шрифт недоступен или ограничен, будет использован резервный вариант.
Стоит ли встраивать системные шрифты, такие как Arial/Calibri?
Обычно нет — они почти всегда доступны. Но для полной переносимости в «тонких» средах (Docker, Linux-сервер без предустановленных шрифтов) встраивание системных шрифтов может устранить риск неожиданных замен.