Hantera bildmastere för presentationer på Android

Översikt

En bildmaster definierar gemensamma designinställningar för en grupp bildspel. Den kan innehålla gemensamma former, logotyper, bakgrunder, textstilar, temainställningar och sidfotinställningar. I PowerPoint är redigering av en bildmaster det vanliga sättet att hålla en presentation enhetlig utan att upprepa samma formatering på varje bild.

Aspose.Slides for Android via Java stöder samma modell. En presentation kan innehålla en eller flera bildmastere, och varje bildmaster kan innehålla flera layoutbilder. Vanliga bilder refererar vanligtvis inte direkt till en bildmaster. Istället använder en vanlig bild en layoutbild, och den layoutbilden tillhör en bildmaster.

Hierarkin är:

  1. Bildmaster – definierar den gemensamma designen och temat.
  2. Layoutbild – definierar en specifik placering av platshållare och layoutnivåformatering.
  3. Normal bild – innehåller det faktiska presentationsinnehållet och använder en layoutbild.

Hierarkin av bildmastere, layoutbilder och normala bilder

I Aspose.Slides representeras en bildmaster av gränssnittet IMasterSlide . Alla bildmastere i en presentation är tillgängliga via samlingen Presentation.getMasters , som implementerar IMasterSlideCollection. För hela Android via Java API‑ytan, se com.aspose.slides API‑referensen.

Åtkomst till bildmastere

I PowerPoint kan du öppna bildmaster‑visning via Visa > Bildmaster.

Bildmaster‑kommandot på PowerPoints flik Visa

I Aspose.Slides, använd samlingen getMasters() för att komma åt bildmastere:

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();
}

Du kan också hämta bildmastern som används av en normal bild via dess layout:

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();
}

Vad en bildmaster innehåller

En bildmaster är ett objekt liknande en bild. Den implementerar IBaseSlide, så den exponerar många av samma bildegenskaper som används av normala bilder och layoutbilder.

Vanligt använda medlemmar i en bildmaster inkluderar:

Medlem Syfte
getBackground() Ställer in bakgrunden på masternivå för bilden.
getShapes() Lagrar former placerade på mastern, såsom logotyper, bildramar och delad text.
getLayoutSlides() Lagrar layoutbilderna som tillhör mastern.
getThemeManager() Ger åtkomst till mastertema‑API:erna.
getHeaderFooterManager() Styr sidhuvuden, sidfötter, datum och bildnummer för mastern och dess underliggande layouter.
getDependingSlides() Returnerar normala bilder som är beroende av mastern via deras layouter.

Lägg till en bild i en bildmaster

När du lägger till en bild i en bildmaster visas den på bilder som använder layouter från den mastern. Detta är användbart för logotyper, vattenstämplar, dekorativa band och andra återkommande visuella element.

Följande exempel lägger till en logotyp till den första bildmastern:

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();
}

För mer information om bildramar, se Picture Frame.

Arbeta med platshållare

Platshållare definieras normalt på layoutbilder. Bildmastern tillhandahåller den delade stilen och temat som dessa layouter ärver, medan varje layout bestämmer vilka platshållare som är tillgängliga och var de placeras.

I PowerPoint finns platshållarkommandon tillgängliga i bildmaster‑vyn.

Infoga platshållarkommandot i PowerPoints bildmaster‑vy

För att lägga till nya platshållare med Aspose.Slides, arbeta med den layoutbild som tillhör mastern:

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();
}

Du kan också formatera platshållarformer som redan finns på en bildmaster. Följande exempel hittar titelplatshållaren och applicerar en linjär gradientfyllning:

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();
}

Formaterad titelplatshållare ärvd av normala bilder

För fler alternativ för platshållare och textformatering, se Set Prompt Text in Placeholder och Text Formatting.

Ändra en bildmasters bakgrund

En masterbakgrund ärvs av layouter och bilder som inte åsidosätter den. Följande exempel sätter en solid bakgrundsfärg för den första bildmastern:

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();
}

För relaterade ämnen, se Presentation Background och Presentation Theme.

Klona en bildmaster till en annan presentation

Använd IMasterSlideCollection.addClone för att kopiera en bildmaster till en annan presentation. Den kopierade mastern kan sedan användas av layouter och bilder i destinationspresentationen.

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();
}

Om du behöver klona normala bilder tillsammans med deras master, se Clone Slides.

Lägg till flera bildmastere

En presentation kan innehålla flera bildmastere. Detta är användbart när olika sektioner kräver olika varumärkesprofil, sidstruktur eller temainställningar.

PowerPoint‑kommandon för att infoga och hantera bildmastere

Följande exempel klonar standardmastern, ger klonen en annan bakgrund, skapar en layout under den klonade mastern och lägger till en ny bild baserad på den layouten:

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();
}

Jämför bildmastere

Bildmastere kan jämföras med equals‑metoden som ärvd från IBaseSlide. Jämförelsen kontrollerar struktur och statiskt innehåll, såsom former, text, formatering, animationer och andra bildinställningar. Den jämför inte unika identifierare, såsom bild‑ID:n, eller dynamiska platshållarvärden, såsom aktuellt datum.

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();
}

För mer information, se Compare Presentation Slides.

Ställ in bildmaster‑vyn som standardvy

Använd metoden setLastViewViewProperties för att styra den vy som PowerPoint öppnar först. Följande exempel öppnar presentationen i bildmaster‑vyn:

Presentation presentation = new Presentation("presentation.pptx");
try {
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
    presentation.save("presentation-master-view.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

För fler vyinställningar, se Save Presentation.

Ta bort oanvända bildmastere

Presentationer kan ibland innehålla bildmastere som inte längre används av någon normal bild. Att ta bort oanvända mastere kan minska filstorleken och förenkla underhållet av mallar.

Använd removeUnused för att ta bort oanvända mastere från samlingen getMasters():

Presentation presentation = new Presentation("presentation.pptx");
try {
    presentation.getMasters().removeUnused(true);
    presentation.save("presentation-clean.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Du kan också använda low‑code‑metoden Compress.removeUnusedMasterSlides :

Presentation presentation = new Presentation("presentation.pptx");
try {
    Compress.removeUnusedMasterSlides(presentation);
    presentation.save("presentation-clean.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

FAQ

Vad är skillnaden mellan en bildmaster och en layoutbild?

En bildmaster definierar gemensamma designinställningar såsom tema, bakgrund, gemensamma former och textstilar. En layoutbild tillhör en bildmaster och definierar en specifik placering av platshållare. En normal bild använder en layoutbild, så den ärver både från layouten och från mastern.

Kan en presentation innehålla flera bildmastere?

Ja. En presentation kan innehålla flera bildmastere. Använd flera mastere när olika sektioner kräver olika visuella system eller varumärkesprofil.

Bör jag lägga till platshållare i en bildmaster eller en layoutbild?

I de flesta fall lägger du till platshållare i layoutbilder. Placera delade visuella element och gemensam formatering på bildmastern, och lägg sedan innehållsplatshållare på de layouter som normala bilder kommer att använda.

Kan jag ta bort en bildmaster som fortfarande används?

Nej. En bildmaster som har beroende bilder kan inte tas bort säkert direkt. Flytta först dessa bilder till layouter under en annan master, eller använd en städningsmetod för oanvända mastere som bara tar bort mastere som inte används.