Zarządzanie masterami slajdów prezentacji na Androidzie
Przegląd
Master slajdów definiuje wspólne ustawienia projektu dla grupy slajdów. Może zawierać wspólne kształty, logotypy, tła, style tekstu, ustawienia motywu oraz stopki. W programie PowerPoint edycja mastera slajdów jest typowym sposobem utrzymania spójności prezentacji bez powtarzania tego samego formatowania na każdym slajdzie.
Aspose.Slides dla Android via Java obsługuje ten sam model. Prezentacja może zawierać jeden lub więcej masterów slajdów, a każdy master może zawierać kilka slajdów układu. Normalne slajdy zwykle nie odwołują się bezpośrednio do mastera. Zamiast tego używają slajdu układu, który należy do mastera slajdów.
Hierarchia wygląda następująco:
- Master slajdów – definiuje wspólny projekt i motyw.
- Slajd układu – definiuje konkretny układ elementów zastępczych i formatowanie na poziomie układu.
- Normalny slajd – zawiera rzeczywistą treść prezentacji i korzysta z jednego slajdu układu.

W Aspose.Slides master slajdu jest reprezentowany przez interfejs IMasterSlide. Wszystkie mastery slajdów w prezentacji są dostępne poprzez kolekcję Presentation.getMasters implementującą IMasterSlideCollection. Pełną powierzchnię API Android via Java znajdziesz w odniesieniu API com.aspose.slides.
Inheritance
Gdy to samo własność jest zdefiniowane na kilku poziomach, wygrywa poziom bardziej szczegółowy. Na przykład, jeśli master slajdów i slajd układu definiują tło, slajdy oparte na tym układzie używają tła układu. Więcej informacji o slajdach układu znajdziesz w Zastosuj lub zmień układy slajdów.Dostęp do masterów slajdów
W programie PowerPoint możesz otworzyć widok Master slajdów z Widok > Master slajdów.

W Aspose.Slides użyj kolekcji getMasters() aby uzyskać dostęp do masterów slajdów:
Presentation presentation = new Presentation("presentation.pptx");
try {
IMasterSlide firstMasterSlide = presentation.getMasters().get_Item(0);
int masterSlideCount = presentation.getMasters().size();
int firstMasterLayoutSlideCount = firstMasterSlide.getLayoutSlides().size();
System.out.println("Master slides: " + masterSlideCount);
System.out.println("Layouts in the first master: " + firstMasterLayoutSlideCount);
} finally {
presentation.dispose();
}
Możesz także pobrać master slajdu używany przez normalny slajd poprzez jego układ:
Presentation presentation = new Presentation("presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ILayoutSlide layoutSlide = slide.getLayoutSlide();
IMasterSlide masterSlide = layoutSlide.getMasterSlide();
String masterSlideName = masterSlide.getName();
System.out.println(masterSlideName);
} finally {
presentation.dispose();
}
Co zawiera master slajdu
Master slajd jest obiektem podobnym do slajdu. Implementuje IBaseSlide, więc udostępnia wiele tych samych właściwości slajdu używanych przez slajdy normalne i układu.
Typowo używane członkowie mastera slajdu to:
| Członek | Przeznaczenie |
|---|---|
getBackground() |
Ustawia tło na poziomie mastera. |
getShapes() |
Przechowuje kształty umieszczone na masterze, takie jak logotypy, ramki obrazów i współdzielony tekst. |
getLayoutSlides() |
Przechowuje slajdy układu należące do mastera. |
getThemeManager() |
Udostępnia dostęp do interfejsów API motywu mastera. |
getHeaderFooterManager() |
Steruje nagłówkami, stopkami, datami i numerami slajdów dla mastera i jego układów podrzędnych. |
getDependingSlides() |
Zwraca normalne slajdy, które zależą od mastera poprzez ich układy. |
Dodanie obrazu do mastera slajdu
Kiedy dodasz obraz do mastera slajdu, pojawi się on na slajdach korzystających z układów z tego mastera. Jest to przydatne przy logotypach, znakach wodnych, dekoracyjnych pasach i innych powtarzających się elementach wizualnych.
Poniższy przykład dodaje logotyp do pierwszego mastera slajdu:
Presentation presentation = new Presentation("presentation.pptx");
try {
IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
IImage logo = Images.fromFile("logo.png");
try {
IPPImage logoImage = presentation.getImages().addImage(logo);
masterSlide.getShapes().addPictureFrame(
ShapeType.Rectangle,
20,
20,
80,
80,
logoImage);
} finally {
logo.dispose();
}
presentation.save("presentation-with-logo.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Więcej informacji o ramkach obrazu znajdziesz w Ramka obrazu.
Praca z elementami zastępczymi
Elementy zastępcze są zazwyczaj definiowane na slajdach układu. Master slajdu zapewnia wspólny styl i motyw, które te układy dziedziczą, natomiast każdy układ decyduje, które elementy zastępcze są dostępne i gdzie są umieszczone.
W programie PowerPoint polecenia elementów zastępczych są dostępne w widoku Master slajdów.

Aby dodać nowe elementy zastępcze w Aspose.Slides, pracuj ze slajdem układu należącym do mastera:
Presentation presentation = new Presentation("presentation.pptx");
try {
IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
ILayoutSlide blankLayoutSlide = masterSlide.getLayoutSlides().getByType(SlideLayoutType.Blank);
if (blankLayoutSlide == null) {
blankLayoutSlide = masterSlide.getLayoutSlides().add(SlideLayoutType.Blank, "Blank");
}
blankLayoutSlide.getPlaceholderManager().addTextPlaceholder(60, 120, 600, 80);
presentation.getSlides().addEmptySlide(blankLayoutSlide);
presentation.save("presentation-with-placeholder.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Możesz także formatować istniejące kształty elementów zastępczych na masterze. Poniższy przykład znajduje element zastępczy tytułu i stosuje wypełnienie gradientem liniowym:
Presentation presentation = new Presentation("presentation.pptx");
try {
IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
IAutoShape titlePlaceholder = null;
for (IShape shape : masterSlide.getShapes()) {
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
if (autoShape.getPlaceholder() != null &&
autoShape.getPlaceholder().getType() == PlaceholderType.Title) {
titlePlaceholder = autoShape;
break;
}
}
}
if (titlePlaceholder != null) {
int redGradientColor = Color.valueOf(255, 0, 0).toArgb();
int purpleGradientColor = Color.valueOf(128, 0, 128).toArgb();
titlePlaceholder.getFillFormat().setFillType(FillType.Gradient);
titlePlaceholder.getFillFormat().getGradientFormat().setGradientShape(GradientShape.Linear);
titlePlaceholder.getFillFormat().getGradientFormat().getGradientStops().add(0.0f, redGradientColor);
titlePlaceholder.getFillFormat().getGradientFormat().getGradientStops().add(1.0f, purpleGradientColor);
}
presentation.save("presentation-title-style.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}

Więcej opcji formatowania elementów zastępczych i tekstu znajdziesz w Ustaw tekst podpowiedzi w elemencie zastępczym oraz Formatowanie tekstu.
Zmiana tła mastera slajdu
Tło mastera jest dziedziczone przez układy i slajdy, które go nie nadpisują. Poniższy przykład ustawia jednolite tło koloru dla pierwszego mastera slajdu:
Presentation presentation = new Presentation("presentation.pptx");
try {
IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
int masterBackgroundColor = Color.GREEN;
masterSlide.getBackground().setType(BackgroundType.OwnBackground);
masterSlide.getBackground().getFillFormat().setFillType(FillType.Solid);
masterSlide.getBackground().getFillFormat().getSolidFillColor().setColor(masterBackgroundColor);
presentation.save("presentation-master-background.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Powiązane tematy: Tło prezentacji oraz Motyw prezentacji.
Klonowanie mastera slajdu do innej prezentacji
Użyj IMasterSlideCollection.addClone aby skopiować master slajdu do innej prezentacji. Skopiowany master może następnie być używany przez układy i slajdy w docelowej prezentacji.
Presentation sourcePresentation = new Presentation("source.pptx");
Presentation destinationPresentation = new Presentation("destination.pptx");
try {
IMasterSlide sourceMasterSlide = sourcePresentation.getMasters().get_Item(0);
IMasterSlide clonedMasterSlide = destinationPresentation.getMasters().addClone(sourceMasterSlide);
destinationPresentation.save("destination-with-master.pptx", SaveFormat.Pptx);
} finally {
sourcePresentation.dispose();
destinationPresentation.dispose();
}
Jeśli potrzebujesz sklonować normalne slajdy wraz z ich masterem, zobacz Klonowanie slajdów.
Dodanie wielu masterów slajdów
Prezentacja może zawierać wiele masterów slajdów. Jest to przydatne, gdy różne sekcje wymagają odmiennych elementów brandingowych, struktury strony lub ustawień motywu.

Poniższy przykład klonuje domyślny master, nadaje klonowi inne tło, tworzy układ pod tym sklonowanym masterem i dodaje nowy slajd oparty na tym układzie:
Presentation presentation = new Presentation("presentation.pptx");
try {
IMasterSlide defaultMasterSlide = presentation.getMasters().get_Item(0);
IMasterSlide sectionMasterSlide = presentation.getMasters().addClone(defaultMasterSlide);
int sectionMasterBackgroundColor = Color.GRAY;
sectionMasterSlide.getBackground().setType(BackgroundType.OwnBackground);
sectionMasterSlide.getBackground().getFillFormat().setFillType(FillType.Solid);
sectionMasterSlide.getBackground().getFillFormat().getSolidFillColor().setColor(sectionMasterBackgroundColor);
ILayoutSlide sourceBlankLayout = defaultMasterSlide.getLayoutSlides().getByType(SlideLayoutType.Blank);
if (sourceBlankLayout == null) {
sourceBlankLayout = defaultMasterSlide.getLayoutSlides().get_Item(0);
}
ILayoutSlide sectionBlankLayout = sectionMasterSlide.getLayoutSlides().addClone(sourceBlankLayout);
presentation.getSlides().addEmptySlide(sectionBlankLayout);
presentation.save("presentation-with-multiple-masters.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Porównywanie masterów slajdów
Mastery slajdów można porównać metodą equals odziedziczoną po IBaseSlide. Porównanie sprawdza strukturę i statyczną zawartość, taką jak kształty, tekst, formatowanie, animacje i inne ustawienia slajdu. Nie porównuje unikalnych identyfikatorów, takich jak identyfikatory slajdów, ani dynamicznych wartości elementów zastępczych, takich jak bieżąca data.
Presentation firstPresentation = new Presentation("first.pptx");
Presentation secondPresentation = new Presentation("second.pptx");
try {
int firstPresentationMasterCount = firstPresentation.getMasters().size();
int secondPresentationMasterCount = secondPresentation.getMasters().size();
for (int firstMasterIndex = 0; firstMasterIndex < firstPresentationMasterCount; firstMasterIndex++) {
for (int secondMasterIndex = 0; secondMasterIndex < secondPresentationMasterCount; secondMasterIndex++) {
IMasterSlide firstMasterSlide = firstPresentation.getMasters().get_Item(firstMasterIndex);
IMasterSlide secondMasterSlide = secondPresentation.getMasters().get_Item(secondMasterIndex);
boolean areMasterSlidesEqual = firstMasterSlide.equals(secondMasterSlide);
if (areMasterSlidesEqual) {
System.out.printf(
"first.pptx master #%d equals second.pptx master #%d%n",
firstMasterIndex,
secondMasterIndex);
}
}
}
} finally {
firstPresentation.dispose();
secondPresentation.dispose();
}
Więcej informacji znajdziesz w Porównywanie slajdów prezentacji.
Ustawienie widoku Master slajdów jako widoku domyślnego
Użyj metody setLastView na ViewProperties, aby kontrolować widok, który PowerPoint otwiera jako pierwszy. Poniższy przykład otwiera prezentację w widoku Master slajdów:
Presentation presentation = new Presentation("presentation.pptx");
try {
presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
presentation.save("presentation-master-view.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Więcej ustawień widoku znajdziesz w Zapisz prezentację.
Usuwanie nieużywanych masterów slajdów
Prezentacje czasami zawierają mastery slajdów, które nie są już używane przez żadne normalne slajdy. Usunięcie nieużywanych masterów może zmniejszyć rozmiar pliku i uprościć utrzymanie szablonu.
Użyj removeUnused, aby usunąć nieużywane mastery z kolekcji getMasters():
Presentation presentation = new Presentation("presentation.pptx");
try {
presentation.getMasters().removeUnused(true);
presentation.save("presentation-clean.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Możesz także skorzystać z metody niskokodowej Compress.removeUnusedMasterSlides:
Presentation presentation = new Presentation("presentation.pptx");
try {
Compress.removeUnusedMasterSlides(presentation);
presentation.save("presentation-clean.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
FAQ
Jaka jest różnica między masterem slajdu a slajdem układu?
Master slajdu definiuje wspólne ustawienia projektu, takie jak motyw, tło, wspólne kształty i style tekstu. Slajd układu należy do mastera i definiuje konkretny układ elementów zastępczych. Normalny slajd używa slajdu układu, więc dziedziczy zarówno z układu, jak i z mastera.
Czy jedna prezentacja może zawierać kilka masterów slajdów?
Tak. Prezentacja może zawierać kilka masterów slajdów. Używaj wielu masterów, gdy różne sekcje wymagają odmiennych systemów wizualnych lub brandingu.
Gdzie powinienem dodać elementy zastępcze – do mastera slajdu czy do slajdu układu?
W większości przypadków dodawaj elementy zastępcze do slajdów układu. Umieść współdzielone elementy wizualne i formatowanie na masterze, a elementy zastępcze treści na układach, które będą używane przez normalne slajdy.
Czy mogę usunąć master slajdu, który jest nadal używany?
Nie. Master slajdu, który ma zależne slajdy, nie może być bezpiecznie usunięty bezpośrednio. Najpierw przenieś te slajdy do układów pod innym masterem lub użyj metody czyszczenia nieużywanych masterów, która usuwa tylko mastery nie będące w użyciu.