مدیریت اسلاید مسترهای ارائه در پایتون
بررسی کلی
یک اسلاید مستر تنظیمات طراحی مشترک را برای یک گروه از اسلایدها تعریف میکند. میتواند شامل شکلهای عمومی، لوگوها، پسزمینهها، سبکهای متن، تنظیمات تم و تنظیمات پاورقی باشد. در PowerPoint، ویرایش اسلاید مستر روش معمول برای حفظ ثبات ارائه بدون تکرار قالببندی در هر اسلاید است.
Aspose.Slides for Python via .NET نیز همین مدل را پشتیبانی میکند. یک ارائه میتواند حاوی یک یا چند اسلاید مستر باشد و هر اسلاید مستر میتواند چندین اسلاید طرحبندی (layout) داشته باشد. اسلایدهای معمولی بهطور مستقیم به اسلاید مستر ارجاع نمیدهند. در عوض، یک اسلاید معمولی از اسلاید طرحبندی استفاده میکند و آن اسلاید طرحبندی به یک اسلاید مستر تعلق دارد.
ساختار سلسلهمراتبی بهصورت زیر است:
- اسلاید مستر – تنظیمات طراحی و تم مشترک را تعریف میکند.
- اسلاید طرحبندی – چینش خاصی از نگهدارندهها و قالببندی سطح طرحبندی را تعیین میکند.
- اسلاید معمولی – محتوای ارائه واقعی را شامل میشود و از یک اسلاید طرحبندی استفاده میکند.

در Aspose.Slides، اسلاید مستر توسط کلاس MasterSlide نمایندگی میشود. تمام اسلایدهای مستر موجود در یک ارائه از طریق مجموعه Presentation.masters در دسترس هستند.
ارثبری
هنگامی که یک ویژگی در بیش از یک سطح تعریف شده باشد، سطح خاصتر برتری مییابد. به عنوان مثال، اگر یک اسلاید مستر و یک اسلاید طرحبندی هر دو پسزمینهای تعریف کنند، اسلایدهای مبتنی بر آن طرحبندی از پسزمینهٔ طرحبندی استفاده میکنند. برای اطلاعات بیشتر دربارهٔ اسلایدهای طرحبندی، به صفحهٔ Apply or Change Slide Layouts مراجعه کنید.دسترسی به اسلایدهای مستر
در PowerPoint، میتوانید نمای اسلاید مستر را از View > Slide Master باز کنید.

در Aspose.Slides، از مجموعه masters برای دسترسی به اسلایدهای مستر استفاده میشود:
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))
همچنین میتوانید اسلاید مستری که یک اسلاید معمولی از طریق طرحبندیاش استفاده میکند، به این شکل دریافت کنید:
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)
محتوای یک اسلاید مستر
اسلاید مستر یک شیء شبیه اسلاید است. این شیء رفتارهای مشترک اسلاید را از کلاس BaseSlide به ارث میبرد، بنابراین بسیاری از ویژگیهای اسلاید مشابه اسلایدهای معمولی و طرحبندی در دسترس است. اعضای مخصوص مستر در صفحهٔ API MasterSlide فهرست شدهاند.
اعضای رایج اسلاید مستر شامل موارد زیر هستند:
| عضو | هدف |
|---|---|
background |
تنظیم پسزمینهٔ سطح مستر. |
shapes |
نگهداری شکلهای قرار گرفته بر روی مستر، مانند لوگوها، فریمهای تصویر و متنهای مشترک. |
layout_slides |
نگهداری اسلایدهای طرحبندی که به مستر تعلق دارند. |
theme_manager |
دسترسی به APIهای تم مستر. |
header_footer_manager |
کنترل سرصفحهها، پاورقیها، تاریخها و شماره اسلاید برای مستر و طرحبندیهای فرزند آن. |
get_depending_slides |
بازگرداندن اسلایدهای معمولی که از طریق طرحبندیهایشان به این مستر وابستهاند. |
افزودن تصویر به اسلاید مستر
هنگامی که تصویری را به اسلاید مستر اضافه میکنید، در اسلایدهایی که از طرحبندیهای آن مستر استفاده میکنند ظاهر میشود. این برای لوگوها، واترمارکها، نوارهای تزئینی و سایر عناصر تصویری تکراری مفید است.
مثال زیر یک لوگو را به اولین اسلاید مستر اضافه میکند:
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)
برای اطلاعات بیشتر دربارهٔ فریمهای تصویر، به صفحهٔ Picture Frame مراجعه کنید.
کنترل نمایش گرافیکهای مستر
از BaseSlide.show_master_shapes برای مخفی کردن گرافیکهای ارثبردهٔ مستر، مانند لوگوها یا شکلهای تزئینی، بدون حذف آنها از مستر استفاده کنید. بر روی اسلایدی که باید این گرافیکها را حذف کند، ویژگی Slide.show_master_shapes را به False تنظیم کنید و بر اسلایدهایی که باید نمایش داده شوند، مقدار True بگذارید.
مثال زیر یک نوار تزئینی آبی را بر روی مستر و دو اسلایدی که از همان طرحبندی خالی استفاده میکنند، ایجاد میکند. نوار در اولین اسلاید قابل مشاهده است و در دوم مخفی میشود. هیچ ارائه یا تصویر ورودی لازم نیست.
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
master_slide = presentation.masters[0]
layout_slide = master_slide.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
layout_slide.show_master_shapes = True
slide_height = presentation.slide_size.size.height
band = master_slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 0, 0, 60, slide_height)
band.fill_format.fill_type = slides.FillType.SOLID
band.fill_format.solid_fill_color.color = draw.Color.steel_blue
band.line_format.fill_format.fill_type = slides.FillType.NO_FILL
visible_slide = presentation.slides[0]
visible_slide.layout_slide = layout_slide
visible_slide.shapes.clear()
hidden_slide = presentation.slides.add_empty_slide(layout_slide)
visible_slide.show_master_shapes = True
hidden_slide.show_master_shapes = False
presentation.save("master-graphics.pptx", slides.export.SaveFormat.PPTX)
این مثال از طرحبندی Blank که همراه با یک ارائهٔ جدید فراهم میشود استفاده میکند و نگهدارندههای اولیهٔ اسلاید را حذف میکند.
انتخاب حوزهٔ تنظیم
یک اسلاید معمولی از طریق Slide.layout_slide و LayoutSlide.master_slide به مستر خود دسترسی دارد. تنظیم این ویژگی بر روی یک اسلاید فردی فقط همان اسلاید را تحت تأثیر قرار میدهد. تنظیم LayoutSlide.show_master_shapes به False گرافیکهای مستر را برای تمام اسلایدهایی که از آن طرحبندی مشترک استفاده میکنند، مخفی میکند، حتی اگر تنظیم شخصی آنها True باشد. برای مخفی کردن گرافیک فقط در یک اسلاید، ویژگی اسلاید را تغییر دهید و طرحبندی مشترک را دستنخورده بگذارید.
این تنظیم بهعنوان کنترل نمایش بر روی خود اسلاید مستر پشتیبانی نمیشود. روی مستر همیشه مقدار False برمیگردد و اختصاص True منجر به پرتاب استثنا میشود. آن را بر روی یک اسلاید معمولی یا یک طرحبندی اعمال کنید.
تمایز گرافیکها از پسزمینه
| عملیات | اثر |
|---|---|
| مخفی کردن گرافیکهای مستر | نمایش یا عدم نمایش اشکال ارثبردهٔ مستر را بدون حذف یا تغییر اشکال خود اسلاید کنترل میکند. |
| تغییر رنگپر پسزمینهٔ اسلاید | رنگ، گرادیان یا تصویر پسزمینه را تغییر میدهد. گرافیکهای مستر اشکال جداگانهای هستند که میتوانند بر روی آن پسزمینه دیده شوند. برای جزئیات بیشتر به صفحهٔ Presentation Background مراجعه کنید. |
| حذف یک شکل از مستر | شکل منبع مشترک را حذف میکند، بهطوری که دیگر برای هیچ اسلایدی که از آن مستر استفاده میکند، در دسترس نخواهد بود. |
کار با نگهدارندهها
نگهدارندهها معمولاً بر روی اسلایدهای طرحبندی تعریف میشوند. اسلاید مستر سبک و تم مشترکی را فراهم میکند که این طرحبندیها از آن ارث میبرند، در حالی که هر طرحبندی تصمیم میگیرد کدام نگهدارندهها موجود هستند و در کجا قرار میگیرند.
در PowerPoint، دستورات نگهدارنده در نمای اسلاید مستر موجود است.

برای افزودن نگهدارندههای جدید با Aspose.Slides، با اسلاید طرحبندی که به مستر تعلق دارد کار کنید:
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)
همچنین میتوانید اشکال نگهدارندهای که قبلاً بر روی اسلاید مستر وجود دارد را قالببندی کنید. مثال زیر نگهدارندهٔ عنوان را پیدا کرده و پرکنندهٔ گرادیان خطی را اعمال میکند:
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)

برای گزینههای بیشتر مربوط به نگهدارنده و قالببندی متن، به صفحات Set Prompt Text in Placeholder و Text Formatting مراجعه کنید.
تغییر پسزمینهٔ اسلاید مستر
پسزمینهٔ مستر توسط طرحبندیها و اسلایدهایی که آن را بازنویسی نمیکنند، ارثبری میشود. مثال زیر یک رنگ پسزمینهٔ ثابت برای اولین اسلاید مستر تنظیم میکند:
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)
برای موضوعات مرتبط، به صفحات Presentation Background و Presentation Theme نگاهی بیندازید.
کلون کردن اسلاید مستر به ارائهٔ دیگر
از متد add_clone بر روی کلاس MasterSlideCollection برای کپی یک اسلاید مستر به ارائهٔ دیگری استفاده کنید. مستر کپیشده سپس میتواند توسط طرحبندیها و اسلایدهای موجود در ارائهٔ مقصد استفاده شود.
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)
اگر نیاز به کلون کردن اسلایدهای معمولی همراه با مسترشان دارید، به صفحهٔ Clone Slides مراجعه کنید.
افزودن چندین اسلاید مستر
یک ارائه میتواند شامل چندین اسلاید مستر باشد. این برای بخشهایی که نیاز به برندینگ، ساختار صفحه یا تنظیمات تم متفاوتی دارند، مفید است.

مثال زیر مستر پیشفرض را کلون میکند، به کلون پسزمینهای متفاوت میدهد، یک طرحبندی خالی زیر آن مستر کلونشده میگیرد و یک اسلاید جدید بر پایهٔ آن طرحبندی اضافه میکند:
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)
مقایسه اسلایدهای مستر
اسلایدهای مستر میتوانند با متد equals که از کلاس BaseSlide ارث برده شده، مقایسه شوند. این مقایسه ساختار و محتوای ثابت مانند اشکال، متن، قالببندی، انیمیشنها و سایر تنظیمات اسلاید را بررسی میکند. شناسههای یکتا مانند شناسهٔ اسلاید یا مقادیر پویا مانند تاریخ فعلی مقایسه نمیشوند.
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))
برای اطلاعات بیشتر، به صفحهٔ Compare Presentation Slides مراجعه کنید.
تنظیم نمای اسلاید مستر به عنوان نمای پیشفرض
از ویژگی last_view بر روی شیء ViewProperties ارائه برای کنترل نمایی که PowerPoint ابتدا باز میکند، استفاده کنید. مثال زیر ارائه را در نمای اسلاید مستر باز میکند:
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)
برای تنظیمات نمای دیگر، به صفحهٔ Save Presentation مراجعه کنید.
حذف اسلایدهای مستر استفاده نشده
گاهی اوقات ارائهها شامل اسلایدهای مستری میشوند که دیگر توسط هیچ اسلاید معمولی استفاده نمیشوند. حذف مسترهای استفادهنشده میتواند حجم فایل را کاهش داده و نگهداری قالبها را سادهتر کند.
از remove_unused برای حذف مسترهای استفادهنشده از مجموعه 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)
همچنین میتوانید از متد کمکد remove_unused_master_slides در کلاس 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)
پرسشهای متداول
فرق اسلاید مستر و اسلاید طرحبندی چیست؟
اسلاید مستر تنظیمات طراحی مشترک مانند تم، پسزمینه، شکلهای عمومی و سبکهای متن را تعریف میکند. اسلاید طرحبندی به یک اسلاید مستر تعلق دارد و چینش خاصی از نگهدارندهها را تعیین میکند. یک اسلاید معمولی از اسلاید طرحبندی استفاده میکند، بنابراین از هر دو طرحبندی و مستر ارث میبرد.
آیا یک ارائه میتواند چندین اسلاید مستر داشته باشد؟
بله. یک ارائه میتواند شامل چندین اسلاید مستر باشد. از مسترهای متعدد زمانی استفاده کنید که بخشهای مختلف نیاز به سیستمهای بصری یا برندینگ متفاوتی داشته باشند.
آیا باید نگهدارندهها را به اسلاید مستر یا اسلاید طرحبندی اضافه کنم؟
در اکثر موارد، نگهدارندهها را به اسلایدهای طرحبندی اضافه کنید. عناصر بصری مشترک و قالببندیهای عمومی را روی اسلاید مستر بگذارید و سپس نگهدارندههای محتوایی را روی طرحبندیهایی که اسلایدهای معمولی از آنها استفاده میکنند، قرار دهید.
آیا میتوانم اسلاید مستری را که هنوز استفاده میشود حذف کنم؟
خیر. اسلاید مستری که اسلایدهای وابسته دارد، نمیتواند بهصورت مستقیم حذف شود. ابتدا آن اسلایدها را به طرحبندیهای تحت مستر دیگر منتقل کنید یا از روش پاکسازی مسترهای استفادهنشده استفاده کنید که فقط مسترهایی را که در حال استفاده نیستند حذف میکند.