Quản lý Slide Master của bản trình bày trong Python
Tổng quan
Một slide master xác định các cài đặt thiết kế chung cho một nhóm slide. Nó có thể chứa các hình dạng chung, logo, nền, kiểu chữ, cài đặt chủ đề và cài đặt chân trang. Trong PowerPoint, việc chỉnh sửa slide master là cách thông thường để duy trì sự nhất quán của bản trình bày mà không phải lặp lại cùng một định dạng trên mỗi slide.
Aspose.Slides for Python via .NET hỗ trợ cùng mô hình này. Một bản trình bày có thể chứa một hoặc nhiều master slide, và mỗi master slide có thể chứa nhiều layout slide. Các slide bình thường thường không tham chiếu trực tiếp tới master slide. Thay vào đó, một slide bình thường sử dụng một layout slide, và layout slide đó thuộc về một master slide.
Cây phân cấp như sau:
- Slide master – xác định thiết kế và chủ đề chung.
- Layout slide – xác định cách sắp xếp cụ thể của các placeholder và định dạng cấp layout.
- Normal slide – chứa nội dung thực tế của bản trình bày và sử dụng một layout slide.

Trong Aspose.Slides, một slide master được biểu diễn bằng lớp MasterSlide. Tất cả các master slide trong một bản trình bày có thể truy cập thông qua bộ sưu tập Presentation.masters.
Inheritance
Khi cùng một thuộc tính được định nghĩa ở hơn một mức, mức cụ thể hơn sẽ thắng. Ví dụ, nếu một master slide và một layout slide đều định nghĩa nền, các slide dựa trên layout đó sẽ sử dụng nền của layout. Để biết thêm thông tin về layout slide, xem Apply or Change Slide Layouts.Truy cập Slide Masters
Trong PowerPoint, bạn có thể mở chế độ xem Slide Master từ View > Slide Master.

Trong Aspose.Slides, sử dụng bộ sưu tập masters để truy cập các master slide:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
first_master_slide = presentation.masters[0]
master_slide_count = len(presentation.masters)
first_master_layout_slide_count = len(first_master_slide.layout_slides)
print("Master slides: " + str(master_slide_count))
print("Layouts in the first master: " + str(first_master_layout_slide_count))
Bạn cũng có thể lấy master slide được sử dụng bởi một slide bình thường thông qua layout của nó:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slide = presentation.slides[0]
layout_slide = slide.layout_slide
master_slide = layout_slide.master_slide
master_slide_name = master_slide.name
print(master_slide_name)
Nội dung của một Slide Master
Một master slide là một đối tượng giống slide. Nó kế thừa hành vi chung của slide từ lớp BaseSlide, vì vậy nó cung cấp nhiều thuộc tính slide giống như slide bình thường và layout. Các thành viên đặc thù của master được liệt kê trên trang API MasterSlide.
Các thành viên master slide thường được sử dụng bao gồm:
| Thành viên | Mục đích |
|---|---|
background |
Đặt nền slide ở mức master. |
shapes |
Lưu trữ các hình dạng đặt trên master, chẳng hạn logo, khung hình ảnh và văn bản chung. |
layout_slides |
Lưu trữ các layout slide thuộc về master. |
theme_manager |
Cung cấp truy cập vào API chủ đề của master. |
header_footer_manager |
Điều khiển header, footer, ngày tháng và số slide cho master và các layout con của nó. |
get_depending_slides |
Trả về các slide bình thường phụ thuộc vào master thông qua layout của chúng. |
Thêm hình ảnh vào Slide Master
Khi bạn thêm hình ảnh vào một master slide, nó sẽ xuất hiện trên các slide sử dụng layout từ master đó. Điều này hữu ích cho logo, watermark, dải trang trí và các yếu tố hình ảnh lặp lại khác.
Ví dụ dưới đây thêm một logo vào master slide đầu tiên:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
with open("logo.png", "rb") as logo_stream:
logo_bytes = logo_stream.read()
logo_image = presentation.images.add_image(logo_bytes)
master_slide.shapes.add_picture_frame(
slides.ShapeType.RECTANGLE,
20,
20,
80,
80,
logo_image)
presentation.save("presentation-with-logo.pptx", slides.export.SaveFormat.PPTX)
Để biết thêm thông tin về khung hình ảnh, xem Picture Frame.
Làm việc với Placeholder
Placeholder thường được định nghĩa trên layout slide. Master slide cung cấp kiểu và chủ đề chung mà các layout kế thừa, trong khi mỗi layout quyết định placeholder nào khả dụng và vị trí của chúng.
Trong PowerPoint, các lệnh placeholder có sẵn trong chế độ xem Slide Master.

Để thêm placeholder mới với Aspose.Slides, làm việc với layout slide thuộc về master:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
blank_layout_slide = master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
if blank_layout_slide is None:
blank_layout_slide = presentation.layout_slides.add(
master_slide,
slides.SlideLayoutType.BLANK,
"Blank")
blank_layout_slide.placeholder_manager.add_text_placeholder(60, 120, 600, 80)
presentation.slides.add_empty_slide(blank_layout_slide)
presentation.save("presentation-with-placeholder.pptx", slides.export.SaveFormat.PPTX)
Bạn cũng có thể định dạng các shape placeholder đã tồn tại trên master slide. Ví dụ sau tìm placeholder tiêu đề và áp dụng màu nền gradient tuyến tính:
import aspose.pydrawing as draw
import aspose.slides as slides
def find_placeholder(master_slide, placeholder_type):
for shape in master_slide.shapes:
if isinstance(shape, slides.AutoShape) and shape.placeholder is not None:
if shape.placeholder.type == placeholder_type:
return shape
return None
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
title_placeholder = find_placeholder(master_slide, slides.PlaceholderType.TITLE)
if title_placeholder is not None:
red_gradient_color = draw.Color.from_argb(255, 0, 0)
purple_gradient_color = draw.Color.from_argb(128, 0, 128)
title_placeholder.fill_format.fill_type = slides.FillType.GRADIENT
title_placeholder.fill_format.gradient_format.gradient_shape = slides.GradientShape.LINEAR
title_placeholder.fill_format.gradient_format.gradient_stops.add(0, red_gradient_color)
title_placeholder.fill_format.gradient_format.gradient_stops.add(1, purple_gradient_color)
presentation.save("presentation-title-style.pptx", slides.export.SaveFormat.PPTX)

Để biết thêm các tùy chọn định dạng placeholder và văn bản, xem Set Prompt Text in Placeholder và Text Formatting.
Thay đổi nền Slide Master
Nền master được kế thừa bởi các layout và slide không ghi đè nó. Ví dụ dưới đây đặt màu nền đặc cho master slide đầu tiên:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
master_slide = presentation.masters[0]
master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
master_slide.background.fill_format.fill_type = slides.FillType.SOLID
master_slide.background.fill_format.solid_fill_color.color = draw.Color.forest_green
presentation.save("presentation-master-background.pptx", slides.export.SaveFormat.PPTX)
Đối với các chủ đề liên quan, xem Presentation Background và Presentation Theme.
Sao chép Slide Master sang bản trình bày khác
Sử dụng phương thức add_clone trên lớp MasterSlideCollection để sao chép một master slide vào bản trình bày khác. Master đã sao chép sau đó có thể được sử dụng bởi các layout và slide trong bản trình bày đích.
import aspose.slides as slides
with slides.Presentation("source.pptx") as source_presentation:
with slides.Presentation("destination.pptx") as destination_presentation:
source_master_slide = source_presentation.masters[0]
cloned_master_slide = destination_presentation.masters.add_clone(source_master_slide)
destination_presentation.save("destination-with-master.pptx", slides.export.SaveFormat.PPTX)
Nếu bạn cần sao chép cả slide bình thường cùng với master của chúng, xem Clone Slides.
Thêm nhiều Slide Master
Một bản trình bày có thể chứa nhiều master slide. Điều này hữu ích khi các phần khác nhau yêu cầu thương hiệu, cấu trúc trang hoặc cài đặt chủ đề riêng.

Ví dụ dưới đây sao chép master mặc định, đặt nền khác cho bản sao, lấy một layout trống dưới master đã sao chép, và thêm một slide mới dựa trên layout đó:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
default_master_slide = presentation.masters[0]
section_master_slide = presentation.masters.add_clone(default_master_slide)
section_master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
section_master_slide.background.fill_format.fill_type = slides.FillType.SOLID
section_master_slide.background.fill_format.solid_fill_color.color = draw.Color.light_steel_blue
section_blank_layout = section_master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
if section_blank_layout is None:
section_blank_layout = presentation.layout_slides.add(
section_master_slide,
slides.SlideLayoutType.BLANK,
"Section Blank")
presentation.slides.add_empty_slide(section_blank_layout)
presentation.save("presentation-with-multiple-masters.pptx", slides.export.SaveFormat.PPTX)
So sánh Slide Masters
Master slide có thể được so sánh bằng phương thức equals kế thừa từ lớp BaseSlide. So sánh kiểm tra cấu trúc và nội dung tĩnh, như shape, văn bản, định dạng, hoạt ảnh và các cài đặt slide khác. Nó không so sánh các định danh duy nhất, chẳng hạn ID slide, hoặc các giá trị placeholder động, như ngày hiện tại.
import aspose.slides as slides
with slides.Presentation("first.pptx") as first_presentation:
with slides.Presentation("second.pptx") as second_presentation:
first_presentation_master_count = len(first_presentation.masters)
second_presentation_master_count = len(second_presentation.masters)
for first_master_index in range(first_presentation_master_count):
for second_master_index in range(second_presentation_master_count):
first_master_slide = first_presentation.masters[first_master_index]
second_master_slide = second_presentation.masters[second_master_index]
are_master_slides_equal = first_master_slide.equals(second_master_slide)
if are_master_slides_equal:
print(
"first.pptx master #{} equals second.pptx master #{}".format(
first_master_index,
second_master_index))
Để biết thêm chi tiết, xem Compare Presentation Slides.
Đặt Slide Master View làm chế độ xem mặc định
Sử dụng thuộc tính last_view trên ViewProperties của bản trình bày để kiểm soát chế độ xem mà PowerPoint mở đầu tiên. Ví dụ dưới đây mở bản trình bày ở chế độ Slide Master view:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
presentation.view_properties.last_view = slides.ViewType.SLIDE_MASTER_VIEW
presentation.save("presentation-master-view.pptx", slides.export.SaveFormat.PPTX)
Để biết thêm các cài đặt chế độ xem, xem Save Presentation.
Xóa các Master Slide không sử dụng
Đôi khi bản trình bày chứa các master slide không còn được bất kỳ slide bình thường nào sử dụng. Xóa các master không dùng có thể giảm kích thước tệp và đơn giản hoá việc bảo trì mẫu.
Sử dụng remove_unused để xóa các master không dùng khỏi bộ sưu tập masters:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
presentation.masters.remove_unused(True)
presentation.save("presentation-clean.pptx", slides.export.SaveFormat.PPTX)
Bạn cũng có thể dùng phương thức low-code remove_unused_master_slides từ lớp Compress:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slides.lowcode.Compress.remove_unused_master_slides(presentation)
presentation.save("presentation-clean.pptx", slides.export.SaveFormat.PPTX)
FAQ
Sự khác biệt giữa slide master và layout slide là gì?
Slide master xác định các cài đặt thiết kế chung như chủ đề, nền, hình dạng chung và kiểu chữ. Layout slide thuộc về một master slide và xác định cách sắp xếp cụ thể của các placeholder. Slide bình thường sử dụng một layout slide, do đó nó kế thừa cả từ layout và master.
Một bản trình bày có thể chứa nhiều slide master không?
Có. Một bản trình bày có thể chứa nhiều slide master. Sử dụng nhiều master khi các phần khác nhau cần hệ thống hình ảnh hoặc thương hiệu riêng.
Nên thêm placeholder vào master slide hay layout slide?
Trong hầu hết các trường hợp, thêm placeholder vào layout slide. Đặt các yếu tố hình ảnh và định dạng chung trên master slide, sau đó đặt các placeholder nội dung trên layout mà các slide bình thường sẽ sử dụng.
Có thể xóa một master slide vẫn đang được sử dụng không?
Không. Master slide có các slide phụ thuộc không thể bị xóa trực tiếp một cách an toàn. Trước tiên hãy chuyển các slide đó sang layout dưới một master khác, hoặc sử dụng phương pháp dọn dẹp master không dùng chỉ xóa các master không có slide phụ thuộc.