使用 Python via Java 在簡報中管理字體

概覽

Aspose.Slides 允許您直接從程式碼中管理簡報文字的字體屬性。您可以透過形狀、文字框、段落和 Portion 來存取投影片中的文字,然後對所選文字套用格式設定。

本文說明如何為簡報中現有的文字配置字體相關屬性,包括字體族、粗體與斜體樣式、段落對齊方式以及字體顏色。它還示範如何建立文字方塊、向其中加入文字,並在儲存為 PPTX 檔案之前設定字體屬性,如字體族、粗體、斜體、底線、字型大小及顏色。

管理字體相關屬性

  1. 建立 Presentation 類別的實例。
  2. 透過索引取得投影片的參考。
  3. AutoShape 方式存取投影片中的 Placeholder 形狀。
  4. 從由 AutoShape 所公開的 TextFrame 中取得 Paragraph
  5. 將段落設定為兩端對齊。
  6. 存取 Paragraph 的文字 Portion
  7. 使用 FontData 定義字體,並相應設定文字 PortionFont
    1. 設定字體為粗體。
    2. 設定字體為斜體。
  8. 使用由 Portion 物件所公開的 FillFormat 設定字體顏色。
  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)

    # 取得每個段落的第一個 Portion。
    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. 向投影片加入類型為 RectangleAutoShape
  4. 移除與 AutoShape 相關的填充樣式。
  5. 存取 AutoShapeTextFrame
  6. TextFrame 中加入一些文字。
  7. 存取與 TextFrame 關聯的 Portion 物件。
  8. 定義用於 Portion 的字體。
  9. 使用 Portion 物件所公開的相關屬性,設定其他字體屬性,如粗體、斜體、底線、顏色與高度。
  10. 將修改後的簡報寫入為 PPTX 檔案。

以下提供上述步驟的實作範例。

已套用字體屬性的文字
圖:由 Aspose.Slides for Python via Java 設定的字體屬性示例
import jpype
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()