Diaelrendezések alkalmazása vagy módosítása Java-ban

Áttekintés

A diavetítés elrendezés meghatározza a helyőrzők, például címek, szöveg, képek, diagramok és táblázatok pozícióit és formázását. Egy elrendezés alkalmazása egységes szerkezetet biztosít a diák számára, miközben lehetővé teszi, hogy minden dia a saját tartalmát tartalmazza.

A leggyakoribb elrendezések a következők:

  • Címdia: Címet és alcímet tartalmazó helyőrzőket tartalmaz.
  • Cím és Tartalom: Címhelyőrzőt és általános célú tartalomhelyőrzőt tartalmaz.
  • Üres: Nem tartalmaz tartalomhelyőrzőket, és hasznos, ha minden alakzatot manuálisan helyeznek el.

Az elrendezés öröklődésének megértése

Egy prezentációnak három kapcsolódó szintje van:

  1. A master dia meghatározza a témát, a megosztott formázást, a hátteret és a közös objektumokat.
  2. Egy elrendezési dia egy masterhez tartozik, és egy adott helyőrző-elosztást definiál.
  3. Egy normál dia egy elrendezést használ, és tárolja az adott diára beírt tartalmat.

A normál dia az elrendezéstől örökli a témát és a formázást, az elrendezés pedig a mastertől örököl. A normál dián közvetlenül beállított érték felülírja az örökölt értéket azon a szinten. Amikor egy normál diát hoznak létre, a helyőrző alakzatok a kiválasztott elrendezésből generálódnak, míg a helyőrzőkbe beírt tartalom a normál dia része.

Adjon hozzá szükséges helyőrzőket egy elrendezéshez, mielőtt diákat hozna létre belőle. Egy újabb helyőrző későbbi hozzáadása egy elrendezéshez nem ad automatikusan megfelelő helyőrző alakzatot a meglévő normál diákhoz.

Ennek a kapcsolatnak két fontos következménye van:

  • Az örökölt formázás vagy a meglévő helyőrző geometria módosítása egy elrendezésen frissítheti az összes tőle függő diát. Mielőtt egy már használt elrendezést szerkesztené, ellenőrizze a függő diákat, és tekintse át a keletkező prezentációt.
  • Az olyan elrendezést, amelyet még diák használnak, nem lehet eltávolítani. Először rendelje át a függő diákat egy másik elrendezésre, vagy csak a nem használt elrendezéseket távolítsa el.

További információkért a hierarchia felső szintjével kapcsolatban lásd a Dia mester.

Elrendezés kiválasztása és alkalmazása

Használjon elrendezéstípust, ha a prezentáció a PowerPoint szabványos elrendezésdefinícióit követi. Az elrendezésnevek felhasználó által szerkeszthetők és lokalizálhatók, ezért a név alapján történő kiválasztás kevésbé megbízható, hacsak nem ellenőrzi a forrás sablont.

A következő példában a Cím és Tartalom elrendezést keresi az első masteren. Ha ez az elrendezés nem érhető el, tudatosan a Üres elrendezésre tér vissza. A második null ellenőrzés szükséges, mert egy prezentáció csak egyedi elrendezéseket tartalmazhat. A kiválasztott elrendezést ezután az első normál diára alkalmazza a ISlide.setLayoutSlide metóduson keresztül.

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    IMasterLayoutSlideCollection layoutSlides = presentation.getMasters().get_Item(0).getLayoutSlides();
    ILayoutSlide targetLayout = layoutSlides.getByType(SlideLayoutType.TitleAndObject);

    if (targetLayout == null) {
        targetLayout = layoutSlides.getByType(SlideLayoutType.Blank);
    }

    if (targetLayout == null) {
        throw new IllegalStateException("The first master does not contain a suitable layout slide.");
    }

    presentation.getSlides().get_Item(0).setLayoutSlide(targetLayout);
    presentation.save("output-with-new-layout.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Egy dia elrendezésének megváltoztatása nem távolítja el a közvetlenül a diára hozzáadott alakzatokat. Azonban a helyőrzők pozíciói, az örökölt formázás és a meglévő helyőrzők és az új elrendezés közötti megfelelés megváltozhat, ezért ellenőrizze a kimenetet, ha lényegesen eltérő elrendezések között vált.

Elrendezési dia hozzáadása

A kiválasztás és a létrehozás külön műveletek. Az előző példa egy meglévő elrendezést választ ki; nem hoz létre újat. Egy elrendezés létrehozásához hívja meg a IMasterLayoutSlideCollection.add metódust a cél master elrendezésgyűjteményén.

A következő példa mindig egy új Cím és Tartalom elrendezést ad hozzá Report Title and Content néven, majd hozzáad egy normál diát, amely ezen alapul. Az elrendezésneveknek egyedieknek kell lenniük a gyűjteményen belül.

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    IMasterSlide masterSlide = presentation.getMasters().get_Item(0);
    ILayoutSlide reportLayout = masterSlide.getLayoutSlides().add(SlideLayoutType.TitleAndObject, "Report Title and Content");
    presentation.getSlides().addEmptySlide(reportLayout);

    presentation.save("output-with-report-layout.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Csak akkor adjon hozzá elrendezést, ha a sablon valóban igényel egy újrahasználható struktúrát. Ha már létezik megfelelő elrendezés, válassza ki és használja újra azt a duplikátum létrehozása helyett.

Helyőrzők hozzáadása egy elrendezési diához

Az ILayoutSlide.getPlaceholderManager metódus egy ILayoutPlaceholderManager objektumot biztosít a helyőrző alakzatok elrendezéshez történő hozzáadásához.

PowerPoint helyőrző ILayoutPlaceholderManager Method
Tartalom addContentPlaceholder(float x, float y, float width, float height)
Tartalom (Függőleges) addVerticalContentPlaceholder(float x, float y, float width, float height)
Szöveg addTextPlaceholder(float x, float y, float width, float height)
Szöveg (Függőleges) addVerticalTextPlaceholder(float x, float y, float width, float height)
Kép addPicturePlaceholder(float x, float y, float width, float height)
Diagram addChartPlaceholder(float x, float y, float width, float height)
Táblázat addTablePlaceholder(float x, float y, float width, float height)
SmartArt addSmartArtPlaceholder(float x, float y, float width, float height)
Média addMediaPlaceholder(float x, float y, float width, float height)
Online kép addOnlineImagePlaceholder(float x, float y, float width, float height)

A következő példa ellenőrzi, hogy a Üres elrendezés létezik-e, négy helyőrzőt ad hozzá, majd létrehoz egy normál diát, amely a módosított elrendezést használja. A sorrend szándékos: a helyőrzőket a normál dia létrehozása előtt adják hozzá, így az Aspose.Slides a megfelelő helyőrző alakzatokat tudja generálni azon a dian.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ILayoutSlide blankLayout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank);

    if (blankLayout == null) {
        throw new IllegalStateException("The presentation does not contain a Blank layout slide.");
    }

    ILayoutPlaceholderManager placeholderManager = blankLayout.getPlaceholderManager();
    placeholderManager.addContentPlaceholder(20, 20, 310, 270);
    placeholderManager.addVerticalTextPlaceholder(350, 20, 350, 270);
    placeholderManager.addChartPlaceholder(20, 310, 310, 180);
    placeholderManager.addTablePlaceholder(350, 310, 350, 180);

    presentation.getSlides().addEmptySlide(blankLayout);
    presentation.save("output-with-placeholders.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Az eredmény:

A helyőrzők az elrendezési dián

Nem használt elrendezési diák eltávolítása

Használja a Compress.removeUnusedLayoutSlides metódust a olyan elrendezések eltávolításához, amelyeket egyetlen normál dia sem hivatkozik. A metódus érintetlenül hagyja a még használatban lévő elrendezéseket.

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    Compress.removeUnusedLayoutSlides(presentation);
    presentation.save("output-without-unused-layouts.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Egy konkrét elrendezés eltávolításához először használja a hasDependingSlides vagy a getDependingSlides metódust. Rendezze át a függő diákat, mielőtt meghívná a ILayoutSlide.remove metódust. Egy használatban lévő elrendezés eltávolítása PptxEditException kivételt dob.

Lábléc láthatóságának vezérlése egy elrendezési dián

Egy elrendezés saját lábléc, dia-szám és dátum-idő helyőrzőkkel rendelkezik. Használja a ILayoutSlide.getHeaderFooterManager metódust ezeknek a helyőrzőknek a vezérléséhez egyetlen elrendezés esetén. Ez hasznos például, ha a tartalom elrendezéseknek láblécet kell megjeleníteniük, míg a cím elrendezéseknek nem.

A következő példa biztonságosan kiválaszt egy elrendezést, és láthatóvá teszi annak lábléc elemeit:

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    ILayoutSlide layoutSlide = presentation.getLayoutSlides().getByType(SlideLayoutType.TitleAndObject);

    if (layoutSlide == null) {
        layoutSlide = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank);
    }

    if (layoutSlide == null) {
        throw new IllegalStateException("The presentation does not contain a suitable layout slide.");
    }

    ILayoutSlideHeaderFooterManager headerFooterManager = layoutSlide.getHeaderFooterManager();
    headerFooterManager.setFooterVisibility(true);
    headerFooterManager.setSlideNumberVisibility(true);
    headerFooterManager.setDateTimeVisibility(true);
    headerFooterManager.setFooterText("Footer text");
    headerFooterManager.setDateTimeText("Date and time text");

    presentation.save("output-with-layout-footers.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Lábléc láthatóságának vezérlése egy masteren és annak alárendelt elrendezésein

A master hierarchiában egységes lábléc beállítások alkalmazásához használja az IMasterSlide.getHeaderFooterManager metódust. Az IMasterSlideHeaderFooterManager terjesztési metódusai a masteren, annak függő elrendezési diáin és normál diáin dolgoznak; nem csak egyetlen normál diát céloznak.

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    IMasterSlideHeaderFooterManager headerFooterManager = presentation.getMasters().get_Item(0).getHeaderFooterManager();
    headerFooterManager.setFooterAndChildFootersVisibility(true);
    headerFooterManager.setSlideNumberAndChildSlideNumbersVisibility(true);
    headerFooterManager.setDateTimeAndChildDateTimesVisibility(true);
    headerFooterManager.setFooterAndChildFootersText("Footer text");
    headerFooterManager.setDateTimeAndChildDateTimesText("Date and time text");

    presentation.save("output-with-master-footers.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

GYIK

Mi a különbség a master dia és az elrendezési dia között?

A master dia meghatározza a prezentáció témáját és a megosztott formázást. Egy elrendezési dia egy masterhez tartozik, és egy újrahasználható helyőrző-elosztást definiál. A normál diák ezeket az elrendezéseket használják, és a diára jellemző tartalmat tárolják.

Másolhatok elrendezési diát egyik prezentációból a másikba?

Igen. A addClone metódussal adjon hozzá egy másolatot a célgyűjteményhez. Prezentációk közötti másolásnál ellenőrizze a betűtípusokat, témákat, képeket és a forrás elrendezés által használt egyéb erőforrásokat is.

Mi történik, ha módosítok egy már használatban lévő elrendezést?

A függő diák öröklik az elrendezés módosításait, hacsak nem írják felül a helyi formázást vagy objektumokat. Ennek következtében a helyőrzők geometriai alakja és az örökölt stílus sok dián egyszerre megváltozhat. Használja a getDependingSlides metódust a érintett diák azonosításához, mielőtt szerkesztené az elrendezést.

Mi történik, ha eltávolítok egy még használatban lévő elrendezést?

Az Aspose.Slides egy PptxEditException kivételt dob. Először rendelje át a függő diákat, vagy használja a removeUnusedLayoutSlides metódust, hogy csak a nem hivatkozott elrendezéseket távolítsa el.