Quản lý Slide Master của Bản trình bày trong .NET
Tổng quan
Một slide master định nghĩa 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 giao diện và cài đặt chân trang. Trong PowerPoint, chỉnh sửa slide master là cách thường dùng để giữ cho bản trình bày nhất quán mà không phải lặp lại cùng một định dạng trên mỗi slide.
Aspose.Slides for .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 slide master, và mỗi slide master có thể chứa một số slide layout. Các slide thường không tham chiếu trực tiếp tới slide master. Thay vào đó, một slide thường sử dụng một slide layout, và slide layout đó thuộc về một slide master.
Cấu trúc phân cấp như sau:
- Slide master – định nghĩa thiết kế và giao diện chung.
- Layout slide – định nghĩa sắp xếp cụ thể của các placeholder và định dạng mức 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, slide master được biểu diễn bằng giao diện IMasterSlide. Tất cả các slide master trong một bản trình bày có thể truy cập qua bộ sưu tập Presentation.Masters, bộ sưu tập này thực hiện IMasterSlideCollection.
Inheritance
Khi cùng một thuộc tính được định nghĩa ở nhiều mức, mức cụ thể hơn sẽ thắng. Ví dụ, nếu một slide master 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ế độ Slide Master bằng View > Slide Master.

Trong Aspose.Slides, sử dụng bộ sưu tập Masters để truy cập các slide master:
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);
Bạn cũng có thể lấy slide master được sử dụng bởi một slide thường thông qua layout của nó:
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);
Nội dung của một Slide Master
Slide master là một đối tượng giống slide. Nó thực hiện IBaseSlide, vì vậy nó cung cấp nhiều thuộc tính slide giống như các slide thường và layout. Các thành viên đặc thù của master được liệt kê trên trang API IMasterSlide.
Các thành viên master thường được sử dụng bao gồm:
| Thành viên | Mục đích |
|---|---|
Background |
Đặt nền ở mức master. |
Shapes |
Lưu các hình dạng đặt trên master, như logo, khung ảnh và văn bản chia sẻ. |
LayoutSlides |
Lưu các layout slide thuộc về master. |
ThemeManager |
Cung cấp truy cập tới các API giao diện của master. |
HeaderFooterManager |
Điều khiển tiêu đề, chân trang, ngày tháng và số slide cho master và các layout con của nó. |
GetDependingSlides |
Trả về các slide 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 slide master, hình ảnh 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ụ sau thêm một logo vào slide master đầu tiên:
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);
Để biết thêm thông tin về khung ảnh, xem Picture Frame.
Làm việc với Placeholder
Placeholder thường được định nghĩa trên layout slide. Slide master cung cấp kiểu dáng và giao diện chung mà các layout kế thừa, trong khi mỗi layout quyết định placeholder nào có sẵn và vị trí của chúng.
Trong PowerPoint, các lệnh placeholder có sẵn trong chế độ Slide Master view.

Để thêm placeholder mới với Aspose.Slides, làm việc với layout slide thuộc về master:
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);
Bạn cũng có thể định dạng các placeholder đã tồn tại trên slide master. Ví dụ sau tìm placeholder tiêu đề và áp dụng tô đầy gradient tuyến tính:
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;
}

Để 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 của Slide Master
Nền master được kế thừa bởi các layout và slide không ghi đè nó. Ví dụ sau đặt màu nền đặc cho slide master đầu tiên:
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);
Đố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 IMasterSlideCollection.AddClone để sao chép một slide master 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.
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);
Nếu bạn cần sao chép cả slide 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 slide master. Đ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 giao diện riêng.

Ví dụ sau sao chép master mặc định, đặt nền khác cho bản sao, tạo một layout dưới master đã sao chép và thêm một slide mới dựa trên layout đó:
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);
So sánh Slide Masters
Slide master có thể được so sánh bằng phương thức Equals kế thừa từ IBaseSlide. Việc so sánh kiểm tra cấu trúc và nội dung tĩnh, chẳng hạn như hình dạng, 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 như ID slide, hay các giá trị placeholder động như ngày hiện tại.
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);
}
}
}
Để biết thêm chi tiết, xem Compare Presentation Slides.
Đặt Slide Master View làm View Mặc định
Sử dụng thuộc tính LastView trên ViewProperties để điều khiển view mà PowerPoint mở đầu tiên. Ví dụ sau mở bản trình bày trong chế độ Slide Master view:
using var presentation = new Presentation("presentation.pptx");
presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("presentation-master-view.pptx", SaveFormat.Pptx);
Đối với các cài đặt view khác, xem Save Presentation.
Xóa Các Slide Master Không dùng
Đôi khi bản trình bày chứa các slide master không còn được bất kỳ slide 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 MasterSlideCollection.RemoveUnused để xóa các master không dùng khỏi bộ sưu tập Masters:
using var presentation = new Presentation("presentation.pptx");
presentation.Masters.RemoveUnused(ignorePreserveField: true);
presentation.Save("presentation-clean.pptx", SaveFormat.Pptx);
Bạn cũng có thể dùng phương thức low-code Compress.RemoveUnusedMasterSlides :
using var presentation = new Presentation("presentation.pptx");
Aspose.Slides.LowCode.Compress.RemoveUnusedMasterSlides(presentation);
presentation.Save("presentation-clean.pptx", SaveFormat.Pptx);
FAQ
Sự khác nhau giữa slide master và layout slide là gì?
Slide master định nghĩa các cài đặt thiết kế chung như giao diện, nền, các hình dạng và kiểu văn bản chung. Layout slide thuộc về một slide master và định nghĩa sắp xếp cụ thể của các placeholder. Slide thường sử dụng một layout slide, vì vậy 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 slide master hay layout slide?
Trong hầu hết các trường hợp, hãy thêm placeholder vào layout slide. Đặt các yếu tố hình ảnh và định dạng chung trên slide master, sau đó đặt các placeholder nội dung trên các layout mà slide thường sẽ sử dụng.
Tôi có thể xóa một slide master còn đang được sử dụng không?
Không. Slide master có các slide phụ thuộc không thể bị xóa trực tiếp một cách an toàn. Đầu tiên di chuyển các slide đó sang layout thuộc 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.