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

در Aspose.Slides، یک اسلاید مستر توسط کلاس MasterSlide نمایندگی میشود. تمام اسلایدهای مستر در یک ارائه از طریق مجموعه Presentation.masters در دسترس هستند.
Inheritance
هنگامی که یک ویژگی در بیش از یک سطح تعریف شود، سطح خاصتر برتری دارد. به عنوان مثال، اگر یک اسلاید مستر و یک اسلاید لایهبندی هر دو پسزمینهای تعریف کنند، اسلایدهای مبتنی بر آن لایهبندی از پسزمینه لایهبندی استفاده میکنند. برای اطلاعات بیشتر درباره اسلایدهای لایهبندی، به 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 فهرست شدهاند.
عضوهای معمولاً استفادهشده از اسلاید مستر شامل:
| Member | Purpose |
|---|---|
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 مراجعه کنید.
کار با جایگیرها
جایگیرها معمولاً در اسلایدهای لایهبندی تعریف میشوند. اسلاید مستر سبک و تم مشترکی را که این لایهبندیها ارث میبرند فراهم میکند، در حالی که هر لایهبندی تصمیم میگیرد کدام جایگیرها در دسترس هستند و کجا قرار میگیرند.
در 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(255, 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 به ارث برده شده است، مقایسه شوند. این مقایسه ساختار و محتوای ثابت مانند اشکال، متن، قالببندی، انیمیشنها و سایر تنظیمات اسلاید را بررسی میکند. شناسههای یکتا مانند Slide ID یا مقادیر پویا مانند تاریخ جاری مقایسه نمیشوند.
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)
پرسشهای متداول
تفاوت اسلاید مستر و اسلاید لایهبندی چیست؟
اسلاید مستر تنظیمات طراحی مشترکی مانند تم، پسزمینه، اشکال عمومی و سبکهای متنی را تعریف میکند. اسلاید لایهبندی به یک اسلاید مستر تعلق دارد و ترتیب خاصی از جایگیرها را تعیین میکند. اسلاید عادی از یک اسلاید لایهبندی استفاده میکند، بنابراین از هر دو لایهبندی و مستر ارث میبرد.
آیا یک ارائه میتواند چندین اسلاید مستر داشته باشد؟
بله. یک ارائه میتواند شامل چندین اسلاید مستر باشد. وقتی بخشهای مختلف نیاز به سیستمهای بصری یا برندینگ متفاوت دارند، از مسترهای متعدد استفاده کنید.
آیا باید جایگیرها را به اسلاید مستر یا اسلاید لایهبندی اضافه کنم؟
در اکثر موارد، جایگیرها را به اسلایدهای لایهبندی اضافه کنید. عناصر بصری مشترک و قالببندی مشترک را بر روی اسلاید مستر بگذارید و سپس جایگیرهای محتوا را بر روی لایهبندیهایی که اسلایدهای عادی استفاده میکنند، قرار دهید.
آیا میتوانم اسلاید مستری را که هنوز استفاده میشود حذف کنم؟
خیر. اسلاید مستری که اسلایدهای وابسته دارد نمیتواند بهصورت مستقیم حذف شود. ابتدا آن اسلایدها را به لایهبندیهای تحت مستر دیگری منتقل کنید یا از روش پاکسازی مسترهای استفادهنشده که فقط مسترهای غیرقابله بهکار استفاده را حذف میکند، استفاده کنید.