مدیریت اسلاید مسترهای ارائه در .NET

مروری کلی

یک اسلاید مستر تنظیمات طراحی مشترک برای گروهی از اسلایدها را تعریف می‌کند. می‌تواند شامل اشکال مشترک، لوگوها، پس‌زمینه‌ها، سبک‌های متن، تنظیمات قالب و تنظیمات فوتر باشد. در PowerPoint، ویرایش اسلاید مستر راه معمول برای حفظ یکپارچگی ارائه بدون تکرار همان قالب‌بندی روی هر اسلاید است.

Aspose.Slides for .NET مدل مشابهی را پشتیبانی می‌کند. یک ارائه می‌تواند یک یا چند اسلاید مستر داشته باشد و هر اسلاید مستر می‌تواند چندین اسلاید لِی‌آوت داشته باشد. اسلایدهای معمولاً به‌صورت مستقیم به اسلاید مستر ارجاع نمی‌دهند. در عوض، یک اسلاید معمولی از یک اسلاید لِی‌آوت استفاده می‌کند و آن لِی‌آوت متعلق به یک اسلاید مستر است.

سلسله‌مراتب به این صورت است:

  1. اسلاید مستر – تنظیمات طراحی و قالب مشترک را تعریف می‌کند.
  2. اسلاید لِی‌آوت – ترتیب خاصی از جای‌گیرها و قالب‌بندی سطح لِی‌آوت را تعریف می‌کند.
  3. اسلاید معمولی – محتوای واقعی ارائه را دربر می‌گیرد و از یک اسلاید لِی‌آوت استفاده می‌کند.

سلسله‌مراتب اسلایدهای مستر، اسلایدهای لِی‌آوت و اسلایدهای معمولی

در Aspose.Slides، یک اسلاید مستر توسط رابط IMasterSlide نمایان می‌شود. تمام اسلایدهای مستر در یک ارائه از طریق مجموعه Presentation.Masters در دسترس هستند که رابط IMasterSlideCollection را پیاده‌سازی می‌کند.

دسترسی به اسلایدهای مستر

در PowerPoint می‌توانید نمای اسلاید مستر را از View > Slide Master باز کنید.

دکمه Slide Master در برگه View نرم‌افزار PowerPoint

در Aspose.Slides، برای دسترسی به اسلایدهای مستر از مجموعه Masters استفاده کنید:

using var presentation = new Presentation("presentation.pptx");

var firstMasterSlide = presentation.Masters[0];
var masterSlideCount = presentation.Masters.Count;
var firstMasterLayoutSlideCount = firstMasterSlide.LayoutSlides.Count;

Console.WriteLine("Master slides: " + masterSlideCount);
Console.WriteLine("Layouts in the first master: " + firstMasterLayoutSlideCount);

همچنین می‌توانید اسلاید مستری که توسط یک اسلاید معمولی استفاده می‌شود را از طریق لِی‌آوت آن به‌دست آورید:

using var presentation = new Presentation("presentation.pptx");

var slide = presentation.Slides[0];
var layoutSlide = slide.LayoutSlide;
var masterSlide = layoutSlide.MasterSlide;
var masterSlideName = masterSlide.Name;

Console.WriteLine(masterSlideName);

محتوای یک اسلاید مستر

یک اسلاید مستر یک شیء شبیه اسلاید است. این شیء رابط IBaseSlide را پیاده‌سازی می‌کند، بنابراین بسیاری از ویژگی‌های اسلاید که در اسلایدهای معمولی و لِی‌آوت استفاده می‌شوند، در دسترس است. اعضای خاص مستر در صفحه API IMasterSlide فهرست شده‌اند.

عضوهای پرکاربرد اسلاید مستر عبارتند از:

Member Purpose
Background پس‌زمینه سطح مستر را تنظیم می‌کند.
Shapes اشکالی که روی مستر قرار گرفته‌اند (مانند لوگوها، فریم‌های تصویری و متن‌های مشترک) را ذخیره می‌کند.
LayoutSlides اسلایدهای لِی‌آوت متعلق به مستر را نگه می‌دارد.
ThemeManager دسترسی به APIهای قالب مستر را فراهم می‌آورد.
HeaderFooterManager سرصفحه‌ها، فوترها، تاریخ‌ها و شماره اسلایدها را برای مستر و لِی‌آوت‌های فرزندش کنترل می‌کند.
GetDependingSlides اسلایدهای معمولی که از طریق لِی‌آوت به این مستر وابسته‌اند را برمی‌گرداند.

افزودن تصویر به اسلاید مستر

هنگامی که تصویری را به یک اسلاید مستر اضافه می‌کنید، در اسلایدهایی که از لِی‌آوت‌های آن مستر استفاده می‌کنند ظاهر می‌شود. این کار برای لوگوها، واترمارک‌ها، نوارهای تزئینی و سایر عناصر بصری تکراری مفید است.

مثال زیر یک لوگو را به اولین اسلاید مستر اضافه می‌کند:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];
var logoBytes = File.ReadAllBytes("logo.png");
var logoImage = presentation.Images.AddImage(logoBytes);

masterSlide.Shapes.AddPictureFrame(
    ShapeType.Rectangle,
    x: 20,
    y: 20,
    width: 80,
    height: 80,
    image: logoImage);

presentation.Save("presentation-with-logo.pptx", SaveFormat.Pptx);

برای اطلاعات بیشتر درباره فریم‌های تصویری، به Picture Frame مراجعه کنید.

کار با جای‌گیرها

جای‌گیرها معمولاً در اسلایدهای لِی‌آوت تعریف می‌شوند. اسلاید مستر سبک و قالب مشترکی را که این لِی‌آوت‌ها به ارث می‌برند، فراهم می‌کند؛ هر لِی‌آوت تصمیم می‌گیرد کدام جای‌گیرها موجود هستند و در کجا قرار می‌گیرند.

در PowerPoint، دستورات جای‌گیر در نمای اسلاید مستر در دسترس هستند.

دستور Insert Placeholder در نمای Slide Master نرم‌افزار PowerPoint

برای افزودن جای‌گیرهای جدید با Aspose.Slides، با اسلاید لِی‌آوت متعلق به مستر کار کنید:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];
var blankLayoutSlide =
    masterSlide.LayoutSlides.GetByType(SlideLayoutType.Blank) ??
    masterSlide.LayoutSlides.Add(SlideLayoutType.Blank, "Blank");

blankLayoutSlide.PlaceholderManager.AddTextPlaceholder(
    x: 60,
    y: 120,
    width: 600,
    height: 80);

presentation.Slides.AddEmptySlide(blankLayoutSlide);
presentation.Save("presentation-with-placeholder.pptx", SaveFormat.Pptx);

همچنین می‌توانید اشکال جای‌گیر موجود در یک اسلاید مستر را قالب‌بندی کنید. مثال زیر جای‌گیر عنوان را پیدا کرده و پر شدگی گرادیان خطی اعمال می‌کند:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];
var titlePlaceholder = FindPlaceholder(masterSlide, PlaceholderType.Title);

if (titlePlaceholder != null)
{
    var redGradientColor = Color.FromArgb(255, 0, 0);
    var purpleGradientColor = Color.FromArgb(128, 0, 128);

    titlePlaceholder.FillFormat.FillType = FillType.Gradient;
    titlePlaceholder.FillFormat.GradientFormat.GradientShape = GradientShape.Linear;
    titlePlaceholder.FillFormat.GradientFormat.GradientStops.Add(0, redGradientColor);
    titlePlaceholder.FillFormat.GradientFormat.GradientStops.Add(255, purpleGradientColor);
}

presentation.Save("presentation-title-style.pptx", SaveFormat.Pptx);

static IAutoShape? FindPlaceholder(IMasterSlide masterSlide, PlaceholderType placeholderType)
{
    foreach (var shape in masterSlide.Shapes)
    {
        if (shape is IAutoShape { Placeholder: not null } autoShape &&
            autoShape.Placeholder.Type == placeholderType)
        {
            return autoShape;
        }
    }

    return null;
}

جای‌گیر عنوان قالب‌بندی‌شده که توسط اسلایدهای معمولی به ارث می‌رسد

برای گزینه‌های بیشتر قالب‌بندی جای‌گیر و متن، به Set Prompt Text in Placeholder و Text Formatting مراجعه کنید.

تغییر پس‌زمینه اسلاید مستر

یک پس‌زمینه مستر توسط لِی‌آوت‌ها و اسلایدهایی که آن را بازنویسی نکنند، ارث‌بری می‌شود. مثال زیر رنگ پس‌زمینه‌ی ثابت را برای اولین اسلاید مستر تنظیم می‌کند:

using var presentation = new Presentation("presentation.pptx");

var masterSlide = presentation.Masters[0];

masterSlide.Background.Type = BackgroundType.OwnBackground;
masterSlide.Background.FillFormat.FillType = FillType.Solid;
masterSlide.Background.FillFormat.SolidFillColor.Color = Color.ForestGreen;

presentation.Save("presentation-master-background.pptx", SaveFormat.Pptx);

برای موضوعات مرتبط، به Presentation Background و Presentation Theme نگاه کنید.

کلون کردن اسلاید مستر به ارائه دیگر

از IMasterSlideCollection.AddClone برای کپی یک اسلاید مستر به ارائه دیگری استفاده کنید. مستر کپی‌شده سپس می‌تواند توسط لِی‌آوت‌ها و اسلایدهای مقصد استفاده شود.

using var sourcePresentation = new Presentation("source.pptx");
using var destinationPresentation = new Presentation("destination.pptx");

var sourceMasterSlide = sourcePresentation.Masters[0];
var clonedMasterSlide = destinationPresentation.Masters.AddClone(sourceMasterSlide);

destinationPresentation.Save("destination-with-master.pptx", SaveFormat.Pptx);

اگر نیاز به کلون کردن اسلایدهای معمولی همراه با مسترشان دارید، به Clone Slides مراجعه کنید.

افزودن چندین اسلاید مستر

یک ارائه می‌تواند شامل چندین اسلاید مستر باشد. این ویژگی وقتی مفید است که بخش‌های مختلف نیاز به برندینگ، ساختار صفحه یا تنظیمات قالب متفاوت داشته باشند.

دستورات PowerPoint برای افزودن و مدیریت اسلایدهای مستر

مثال زیر مستر پیش‌فرض را کلون می‌کند، پس‌زمینه‌ی متفاوتی به کلون می‌دهد، یک لِی‌آوت زیر آن مستر کلون‌شده ایجاد می‌کند و اسلاید جدیدی بر پایه آن لِی‌آوت اضافه می‌نماید:

using var presentation = new Presentation("presentation.pptx");

var defaultMasterSlide = presentation.Masters[0];
var sectionMasterSlide = presentation.Masters.AddClone(defaultMasterSlide);

sectionMasterSlide.Background.Type = BackgroundType.OwnBackground;
sectionMasterSlide.Background.FillFormat.FillType = FillType.Solid;
sectionMasterSlide.Background.FillFormat.SolidFillColor.Color = Color.LightSteelBlue;

var sourceBlankLayout =
    defaultMasterSlide.LayoutSlides.GetByType(SlideLayoutType.Blank) ??
    defaultMasterSlide.LayoutSlides[0];
var sectionBlankLayout = sectionMasterSlide.LayoutSlides.AddClone(sourceBlankLayout);

presentation.Slides.AddEmptySlide(sectionBlankLayout);
presentation.Save("presentation-with-multiple-masters.pptx", SaveFormat.Pptx);

مقایسه اسلایدهای مستر

اسلایدهای مستر می‌توانند با متد Equals که از IBaseSlide به ارث می‌برد، مقایسه شوند. این مقایسه ساختار و محتوای ثابت مانند اشکال، متن، قالب‌بندی، انیمیشن‌ها و سایر تنظیمات اسلاید را بررسی می‌کند. شناسه‌های منحصربه‌فرد مانند شناسه اسلاید یا مقادیر جای‌گیرهای پویا (مثلاً تاریخ جاری) در این مقایسه در نظر گرفته نمی‌شوند.

using var firstPresentation = new Presentation("first.pptx");
using var secondPresentation = new Presentation("second.pptx");

var firstPresentationMasterCount = firstPresentation.Masters.Count;
var secondPresentationMasterCount = secondPresentation.Masters.Count;

for (var firstMasterIndex = 0; firstMasterIndex < firstPresentationMasterCount; firstMasterIndex++)
{
    for (var secondMasterIndex = 0; secondMasterIndex < secondPresentationMasterCount; secondMasterIndex++)
    {
        var firstMasterSlide = firstPresentation.Masters[firstMasterIndex];
        var secondMasterSlide = secondPresentation.Masters[secondMasterIndex];
        var areMasterSlidesEqual = firstMasterSlide.Equals(secondMasterSlide);

        if (areMasterSlidesEqual)
        {
            Console.WriteLine(
                "first.pptx master #{0} equals second.pptx master #{1}",
                firstMasterIndex,
                secondMasterIndex);
        }
    }
}

برای اطلاعات بیشتر، به Compare Presentation Slides مراجعه کنید.

تنظیم نمای اسلاید مستر به عنوان نمای پیش‌فرض

از ویژگی LastView در ViewProperties برای تعیین نمایی که PowerPoint ابتدا باز می‌کند، استفاده کنید. مثال زیر ارائه را در نمای اسلاید مستر باز می‌کند:

using var presentation = new Presentation("presentation.pptx");

presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("presentation-master-view.pptx", SaveFormat.Pptx);

برای تنظیمات نمای بیشتر، به Save Presentation نگاه کنید.

حذف اسلایدهای مستر استفاده‌نشده

گاهی اوقات ارائه‌ها شامل اسلایدهای مستری می‌شوند که دیگر توسط هیچ اسلاید معمولی استفاده نمی‌شوند. حذف مسترهای استفاده‌نشده می‌تواند اندازه فایل را کاهش داده و نگهداری قالب را ساده‌تر کند.

از MasterSlideCollection.RemoveUnused برای حذف مسترهای استفاده‌نشده از مجموعه Masters استفاده کنید:

using var presentation = new Presentation("presentation.pptx");

presentation.Masters.RemoveUnused(ignorePreserveField: true);
presentation.Save("presentation-clean.pptx", SaveFormat.Pptx);

همچنین می‌توانید از متد کم‌کد Compress.RemoveUnusedMasterSlides بهره بگیرید:

using var presentation = new Presentation("presentation.pptx");

Aspose.Slides.LowCode.Compress.RemoveUnusedMasterSlides(presentation);
presentation.Save("presentation-clean.pptx", SaveFormat.Pptx);

سؤالات متداول

تفاوت اسلاید مستر و اسلاید لِی‌آوت چیست؟

اسلاید مستر تنظیمات طراحی مشترکی مانند قالب، پس‌زمینه، اشکال عمومی و سبک‌های متن را تعریف می‌کند. اسلاید لِی‌آوت متعلق به یک اسلاید مستر است و ترتیب خاصی از جای‌گیرها را مشخص می‌کند. یک اسلاید معمولی از یک اسلاید لِی‌آوت استفاده می‌کند، بنابراین هم از لِی‌آوت و هم از مستر ارث می‌برد.

آیا یک ارائه می‌تواند چندین اسلاید مستر داشته باشد؟

بله. یک ارائه می‌تواند شامل چندین اسلاید مستر باشد. زمانی که بخش‌های مختلف نیاز به سیستم‌های بصری یا برندینگ متفاوتی دارند، از چندین مستر استفاده کنید.

آیا باید جای‌گیرها را به اسلاید مستر اضافه کنم یا به اسلاید لِی‌آوت؟

در اکثر موارد، جای‌گیرها را به اسلایدهای لِی‌آوت اضافه کنید. عناصر بصری مشترک و قالب‌بندی‌های عمومی را روی مستر قرار دهید، سپس جای‌گیرهای محتوایی را روی لِی‌آوت‌هایی که اسلایدهای معمولی از آن‌ها استفاده می‌کنند، بگذارید.

آیا می‌توانم اسلاید مستری را که هنوز استفاده می‌شود حذف کنم؟

خیر. اسلاید مستری که اسلایدهای وابسته دارد، نمی‌تواند به‌صورت مستقیم حذف شود. ابتدا آن اسلایدها را به لِی‌آوت‌های تحت مستر دیگری منتقل کنید یا از روش پاک‌سازی مسترهای استفاده‌نشده استفاده کنید که تنها مسترهای بدون استفاده را حذف می‌کند.