Управление шрифтами в презентациях с помощью Python через Java

Обзор

Aspose.Slides позволяет управлять свойствами шрифтов в тексте презентации непосредственно из вашего кода. Вы можете получать доступ к тексту в слайдах через фигуры, текстовые кадры, абзацы и части, а затем применять форматирование к выбранному тексту.

В этой статье объясняется, как настроить свойства шрифта для существующего текста в презентации, включая семейство шрифтов, полужирный и курсивный стили, выравнивание абзаца и цвет шрифта. Также показано, как создать текстовое поле, добавить в него текст и задать свойства шрифта, такие как семейство шрифтов, полужирный, курсив, подчеркивание, размер шрифта и цвет, перед сохранением результата в файл PPTX.

Управление свойствами шрифта

Для управления свойствами шрифта абзаца с помощью Aspose.Slides for Python via Java:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд, используя его индекс.
  3. Получите доступ к фигуре Placeholder на слайде как к AutoShape.
  4. Получите Paragraph из TextFrame, предоставленного AutoShape.
  5. Выровняйте абзац по ширине.
  6. Доступ к Portion текста Paragraph.
  7. Определите шрифт с помощью FontData и установите Font для текста Portion соответственно.
    1. Установите шрифт полужирным.
    2. Установите шрифт курсивом.
  8. Установите цвет шрифта с помощью FillFormat, предоставляемого объектом Portion.
  9. Сохраните изменённую презентацию в файл PPTX.

Реализация вышеуказанных шагов приведена ниже. Она берёт исходную презентацию без форматирования и применяет к шрифтам одного из слайдов нужные изменения. На скриншотах ниже показан входной файл и как фрагменты кода меняют его. Код изменяет шрифт, цвет и стиль шрифта.

Текст во входной презентации
Рисунок: Текст во входном файле
Текст с обновленным форматированием шрифта
Рисунок: Тот же текст с обновленным форматированием
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, FontData, NullableBool, Presentation, SaveFormat, TextAlignment
from java.awt import Color

# Загрузить презентацию.
presentation = Presentation("FontProperties.pptx")
try:
    # Получить первый слайд и текстовые кадры его первых двух заполнителей.
    slide = presentation.getSlides().get_Item(0)
    title_text_frame = slide.getShapes().get_Item(0).getTextFrame()
    body_text_frame = slide.getShapes().get_Item(1).getTextFrame()

    # Получить первый абзац в каждом текстовом кадре.
    title_paragraph = title_text_frame.getParagraphs().get_Item(0)
    body_paragraph = body_text_frame.getParagraphs().get_Item(0)
    body_paragraph.getParagraphFormat().setAlignment(TextAlignment.JustifyLow)

    # Получить первую часть в каждом абзаце.
    title_portion = title_paragraph.getPortions().get_Item(0)
    body_portion = body_paragraph.getPortions().get_Item(0)

    # Определить и назначить новые шрифты.
    title_font = FontData("Elephant")
    body_font = FontData("Castellar")
    title_portion.getPortionFormat().setLatinFont(title_font)
    body_portion.getPortionFormat().setLatinFont(body_font)

    # Установить шрифты полужирными и курсивными.
    title_portion.getPortionFormat().setFontBold(NullableBool.True_)
    body_portion.getPortionFormat().setFontBold(NullableBool.True_)
    title_portion.getPortionFormat().setFontItalic(NullableBool.True_)
    body_portion.getPortionFormat().setFontItalic(NullableBool.True_)

    # Установить цвета шрифтов.
    title_portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
    title_portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE)
    body_portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
    body_portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GREEN)

    # Сохранить презентацию.
    presentation.save("WelcomeFont.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Установка свойств шрифта текста

Для создания текстового поля и установки свойств шрифта текста в нём:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд, используя его индекс.
  3. Добавьте [AutoShape] типа Rectangle на слайд.
  4. Удалите стиль заливки, связанный с AutoShape.
  5. Получите доступ к [TextFrame] у AutoShape.
  6. Добавьте некоторый текст в TextFrame.
  7. Получите объект Portion, связанный с TextFrame.
  8. Определите шрифт, который будет использоваться для Portion.
  9. Установите другие свойства шрифта, такие как полужирный, курсив, подчеркивание, цвет и высоту, используя соответствующие свойства, доступные в объекте Portion.
  10. Запишите изменённую презентацию в файл PPTX.
Текст с применёнными свойствами шрифта
Рисунок: Текст с некоторыми свойствами шрифта, установленными Aspose.Slides for Python via Java
import jpage
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, FontData, NullableBool, Presentation, SaveFormat, ShapeType, TextUnderlineType
from java.awt import Color

presentation = Presentation()
try:
    # Получить первый слайд и добавить прямоугольник.
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 200, 50)

    # Удалить заливку фигуры.
    shape.getFillFormat().setFillType(FillType.NoFill)

    # Добавить текст в текстовый кадр фигуры.
    text_frame = shape.getTextFrame()
    text_frame.setText("Aspose TextBox")
    portion = text_frame.getParagraphs().get_Item(0).getPortions().get_Item(0)

    # Установить семейство шрифта.
    font = FontData("Times New Roman")
    portion.getPortionFormat().setLatinFont(font)

    # Установить полужирный, курсив, подчеркивание и размер шрифта.
    portion.getPortionFormat().setFontBold(NullableBool.True_)
    portion.getPortionFormat().setFontItalic(NullableBool.True_)
    portion.getPortionFormat().setFontUnderline(TextUnderlineType.Single)
    portion.getPortionFormat().setFontHeight(25)

    # Установить цвет шрифта.
    portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
    portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE)

    # Сохранить презентацию.
    presentation.save("pptxFont.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()