在 Python 中套用或變更投影片版面
簡介
投影片版面定義了投影片上占位框的排列方式與內容的格式設定。它控制哪些占位元件可用以及它們出現的位置。投影片版面可協助您快速且一致地設計簡報,無論是建立簡單或較複雜的內容。PowerPoint 中最常見的投影片版面包括:
Title Slide 版面 – 包含兩個文字占位元件:一個用於標題,另一個用於副標題。
Title and Content 版面 – 在頂部有較小的標題占位元件,下方則有較大的主要內容占位元件(例如文字、項目符號、圖表、圖片等)。
Blank 版面 – 不含任何占位元件,讓您可以從頭開始完整設計投影片。
投影片版面是投影片母片的一部份,母片是定義簡報版面樣式的最高層投影片。您可以透過投影片母片以類型、名稱或唯一 ID 來存取與修改版面投影片。或者,您也可以直接在簡報內編輯特定的版面投影片。
若要在 Aspose.Slides for Python 中使用投影片版面,您可以使用:
- Properties such as layout_slides 和 masters 位於 Presentation 類別下
- Types 如 LayoutSlide、MasterLayoutSlideCollection、LayoutPlaceholderManager,以及 LayoutSlideHeaderFooterManager
Info
To learn more about working with master slides, check out the Manage PowerPoint Slide Masters in Python article.將投影片版面新增至簡報
若要自訂投影片的外觀與結構,您可能需要在簡報中新增版面投影片。Aspose.Slides for Python 可讓您檢查特定版面是否已存在,必要時新增,並利用該版面插入投影片。
- 建立一個 Presentation 類別的實例。
- 取得 MasterLayoutSlideCollection。
- 檢查目標版面投影片是否已在集合中存在。若不存在,則新增所需的版面投影片。
- 基於新建的版面投影片新增空白投影片。
- 儲存簡報。
以下 Python 程式碼示範如何將版面投影片新增至 PowerPoint 簡報:
import aspose.slides as slides
# 實例化 Presentation 類別以開啟簡報檔案。
with slides.Presentation("sample.pptx") as presentation:
# 瀏覽版面投影片類型以選取版面投影片。
layout_slides = presentation.masters[0].layout_slides
layout_slide = layout_slides.get_by_type(slides.SlideLayoutType.TITLE_AND_OBJECT)
if layout_slide is None:
layout_slide = layout_slides.get_by_type(slides.SlideLayoutType.TITLE)
if layout_slide is None:
# 簡報不包含所有版面類型的情況。
# 簡報檔案僅包含 Blank 和 Custom 版面類型。
# 但具有自訂類型的版面投影片可能具有可辨識的名稱,
# 例如「Title」、「Title and Content」等,可用於版面投影片的選取。
# 您也可以依賴一組占位形狀類型。
# 例如,標題投影片應僅有 Title 占位元件類型,依此類推。
for title_and_object_layout_slide in layout_slides:
if title_and_object_layout_slide.name == "Title and Object":
layout_slide = title_and_object_layout_slide
break
if layout_slide is None:
for title_layout_slide in layout_slides:
if title_layout_slide.name == "Title":
layout_slide = title_layout_slide
break
if layout_slide is None:
layout_slide = layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
if layout_slide is None:
layout_slide = layout_slides.Add(slides.SlideLayoutType.TITLE_AND_OBJECT, "Title and Object")
# 使用新增的版面投影片插入空白投影片。
presentation.slides.insert_empty_slide(0, layout_slide)
# 將簡報儲存至磁碟。
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
移除未使用的版面投影片
Aspose.Slides 提供 Compress 類別的 remove_unused_layout_slides 方法,讓您刪除不需要且未使用的版面投影片。
以下 Python 程式碼示範如何從 PowerPoint 簡報中移除版面投影片:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slides.lowcode.Compress.remove_unused_layout_slides(presentation)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
在投影片版面中新增占位元件
Aspose.Slides 提供 LayoutSlide.placeholder_manager 屬性,讓您可以在版面投影片中新增占位元件。
此管理器包含以下占位元件類型的相關方法:
| PowerPoint 占位元件 | LayoutPlaceholderManager 方法 |
|---|---|
![]() |
add_content_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_vertical_content_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_text_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_vertical_text_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_picture_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_chart_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_table_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_smart_art_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_media_placeholder(x: float, y: float, width: float, height: float) |
![]() |
add_online_image_placeholder(x: float, y: float, width: float, height: float) |
以下 Python 程式碼示範如何在 Blank 版面投影片中新增占位形狀:
import aspose.slides as slides
with slides.Presentation() as presentation:
# 取得 Blank 版面投影片。
layout = presentation.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
# 取得版面投影片的占位元件管理器。
placeholder_manager = layout.placeholder_manager
# 為 Blank 版面投影片新增不同的占位元件。
placeholder_manager.add_content_placeholder(20, 20, 310, 270)
placeholder_manager.add_vertical_text_placeholder(350, 20, 350, 270)
placeholder_manager.add_chart_placeholder(20, 310, 310, 180)
placeholder_manager.add_table_placeholder(350, 310, 350, 180)
# 使用 Blank 版面新增新的投影片。
new_slide = presentation.slides.add_empty_slide(layout)
presentation.save("placeholders.pptx", slides.export.SaveFormat.PPTX)
結果:

設定版面投影片的頁腳可見性
在 PowerPoint 簡報中,頁腳元素(例如日期、投影片編號與自訂文字)可依版面決定顯示或隱藏。Aspose.Slides for Python 允許您控制這些頁腳占位元件的可見性。當您希望特定版面顯示頁腳資訊,而其他版面保持簡潔時,此功能相當有用。
- 建立一個 Presentation 類別的實例。
- 依索引取得版面投影片參考。
- 設定投影片頁腳占位元件為可見。
- 設定投影片編號占位元件為可見。
- 設定日期時間占位元件為可見。
- 儲存簡報。
以下 Python 程式碼示範如何設定投影片頁腳的可見性及相關操作:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
header_footer_manager = presentation.layout_slides[0].header_footer_manager
if not header_footer_manager.is_footer_visible:
header_footer_manager.set_footer_visibility(True)
if not header_footer_manager.is_slide_number_visible:
header_footer_manager.set_slide_number_visibility(True)
if not header_footer_manager.is_date_time_visible:
header_footer_manager.set_date_time_visibility(True)
header_footer_manager.set_footer_text("Footer text")
header_footer_manager.set_date_time_text("Date and time text")
presentation.save("output.ppt", slides.export.SaveFormat.PPT)
設定子投影片的頁腳可見性
在 PowerPoint 簡報中,頁腳元素(如日期、投影片編號與自訂文字)可在母片層級進行控制,以確保所有版面投影片的一致性。Aspose.Slides for Python 讓您能在母片上設定這些頁腳占位元件的可見性與內容,並將設定傳遞至所有子版面投影片。此做法可確保整份簡報的頁腳資訊保持一致。
- 建立一個 Presentation 類別的實例。
- 依索引取得母片的參考。
- 設定母片及所有子版面的頁腳占位元件為可見。
- 設定母片及所有子版面的投影片編號占位元件為可見。
- 設定母片及所有子版面的日期時間占位元件為可見。
- 儲存簡報。
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
header_footer_manager = presentation.masters[0].header_footer_manager
header_footer_manager.set_footer_and_child_footers_visibility(True)
header_footer_manager.set_slide_number_and_child_slide_numbers_visibility(True)
header_footer_manager.set_date_time_and_child_date_times_visibility(True)
header_footer_manager.set_footer_and_child_footers_text("Footer text")
header_footer_manager.set_date_time_and_child_date_times_text("Date and time text")
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
常見問題
母片與版面投影片有何不同?
母片定義了整體主題與預設格式,而版面投影片則為不同類型的內容定義特定的占位元件排列。
我可以將版面投影片從一個簡報複製到另一個嗎?
是的,您可以從一個簡報的 layout_slides 集合中複製(clone)版面投影片,然後使用 add_clone 方法將其插入至另一個簡報。
如果我刪除仍被投影片使用的版面投影片,會發生什麼事?
如果您嘗試刪除仍被簡報中至少一張投影片參照的版面投影片,Aspose.Slides 會拋出 PptxEditException。為避免此情況,請使用 remove_unused_layout_slides,它只會安全地移除未被使用的版面投影片。









