Použít nebo změnit rozvržení snímků v Pythonu

Přehled

Rozvržení snímku určuje polohy a formátování zástupných objektů, jako jsou názvy, text, obrázky, grafy a tabulky. Použití rozvržení dodává snímkům konzistentní strukturu a zároveň umožňuje, aby každý snímek obsahoval vlastní obsah.

Nejčastější rozvržení zahrnují:

  • Úvodní snímek: Obsahuje zástupné objekty názvu a podnadpisu.
  • Název a obsah: Obsahuje zástupný objekt názvu a obecný zástupný objekt obsahu.
  • Prázdný: Neobsahuje žádné zástupné objekty a je užitečný, když budou všechny tvary umístěny ručně.

Pochopení dědičnosti rozvržení

Prezentace má tři související úrovně:

  1. hlavní snímek určuje motiv, sdílené formátování, pozadí a společné objekty.
  2. rozvržení snímku patří k hlavnímu snímku a definuje konkrétní uspořádání zástupných objektů.
  3. normální snímek používá jedno rozvržení a ukládá obsah zadaný pro tento snímek.

Normální snímek dědí motiv a formátování ze svého rozvržení a rozvržení dědí z hlavního snímku. Hodnota nastavená přímo na normálním snímku přepíše zděděnou hodnotu na této úrovni. Když je vytvořen normální snímek, jeho tvary zástupných objektů jsou generovány z vybraného rozvržení, zatímco obsah zadaný do těchto zástupných objektů patří k normálnímu snímku.

Přidejte požadované zástupné objekty do rozvržení před tím, než z něj budete vytvářet snímky. Přidání dalšího zástupného objektu do rozvržení později automaticky nepřidá odpovídající tvar zástupného objektu do existujících normálních snímků.

Tento vztah má dvě důležité důsledky:

  • Změna zděděného formátování nebo geometrie existujících zástupných objektů v rozvržení může aktualizovat každý snímek, který na něm závisí. Před úpravou rozvržení, které je již používáno, zkontrolujte jeho závislé snímky a přezkoumejte výslednou prezentaci.
  • Rozvržení, které je stále používáno snímkem, nelze odstranit. Nejprve přiřaďte jeho závislé snímky k jinému rozvržení nebo odstraňte pouze nepoužívaná rozvržení.

Další informace o nejvyšší úrovni této hierarchie najdete v Slide Master.

Výběr a použití rozvržení snímku

Použijte typ rozvržení, když prezentace následuje standardní definice rozvržení PowerPointu. Názvy rozvržení jsou editovatelné uživatelem a mohou být lokalizovány, takže výběr podle názvu je méně spolehlivý, pokud nekontrolujete zdrojovou šablonu.

Následující příklad hledá Název a obsah na prvním hlavním snímku. Pokud není toto rozvržení k dispozici, úmyslně přejde na Prázdný. Druhá kontrola na null je nutná, protože prezentace může obsahovat pouze vlastní rozvržení. Vybrané rozvržení je pak použito na prvním normálním snímku pomocí vlastnosti Slide.layout_slide.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    layout_slides = presentation.masters[0].layout_slides
    target_layout = layout_slides.get_by_type(slides.SlideLayoutType.TITLE_AND_OBJECT)

    if target_layout is None:
        target_layout = layout_slides.get_by_type(slides.SlideLayoutType.BLANK)

    if target_layout is None:
        raise RuntimeError("The first master does not contain a suitable layout slide.")

    presentation.slides[0].layout_slide = target_layout
    presentation.save("output-with-new-layout.pptx", slides.export.SaveFormat.PPTX)

Změna rozvržení snímku neodstraňuje obyčejné tvary přidané přímo do snímku. Avšak pozice zástupných objektů, zděděné formátování a shoda mezi existujícími zástupnými objekty a novým rozvržením se mohou změnit, takže výstup zkontrolujte při přepínání mezi výrazně odlišnými rozvrženími.

Přidání rozvržení snímku

Výběr a vytvoření jsou oddělené operace. Předchozí příklad vybírá existující rozvržení; nevytváří ho. Pro vytvoření rozvržení zavolejte metodu MasterLayoutSlideCollection.add na kolekci rozvržení cílového hlavního snímku.

Následující příklad vždy přidá nové rozvržení Název a obsah pojmenované Report Title and Content a následně přidá normální snímek založený na něm. Názvy rozvržení musí být v kolekci jedinečné.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    master_slide = presentation.masters[0]
    report_layout = master_slide.layout_slides.add(slides.SlideLayoutType.TITLE_AND_OBJECT, "Report Title and Content")
    presentation.slides.add_empty_slide(report_layout)

    presentation.save("output-with-report-layout.pptx", slides.export.SaveFormat.PPTX)

Přidávejte rozvržení pouze tehde, když šablona skutečně potřebuje další opakovaně použitelnou strukturu. Pokud již existuje vhodné rozvržení, vyberte jej a znovu použijte místo vytváření duplikátu.

Přidání zástupných objektů do rozvržení snímku

Vlastnost LayoutSlide.placeholder_manager poskytuje LayoutPlaceholderManager pro přidávání tvarů zástupných objektů do rozvržení.

Placeholder PowerPointu Metoda LayoutPlaceholderManager
Content add_content_placeholder(x, y, width, height)
Content (Vertical) add_vertical_content_placeholder(x, y, width, height)
Text add_text_placeholder(x, y, width, height)
Text (Vertical) add_vertical_text_placeholder(x, y, width, height)
Picture add_picture_placeholder(x, y, width, height)
Chart add_chart_placeholder(x, y, width, height)
Table add_table_placeholder(x, y, width, height)
SmartArt add_smart_art_placeholder(x, y, width, height)
Media add_media_placeholder(x, y, width, height)
Online Image add_online_image_placeholder(x, y, width, height)

Následující příklad ověří, že rozvržení Prázdný existuje, přidá k němu čtyři zástupné objekty a poté vytvoří normální snímek, který použije upravené rozvržení. Pořadí je záměrné: zástupné objekty jsou přidány před vytvořením normálního snímku, takže Aspose.Slides může vygenerovat odpovídající tvary zástupných objektů na tomto snímku.

import aspose.slides as slides

with slides.Presentation() as presentation:
    blank_layout = presentation.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)

    if blank_layout is None:
        raise RuntimeError("The presentation does not contain a Blank layout slide.")

    placeholder_manager = blank_layout.placeholder_manager
    placeholder_manager.add_content_placeholder(20, 20, 310, 270)
    placeholder_manager.add_vertical_text_placeholder(350, 20, 350, 270)
    placeholder_manager.add_chart_placeholder(20, 310, 310, 180)
    placeholder_manager.add_table_placeholder(350, 310, 350, 180)

    presentation.slides.add_empty_slide(blank_layout)
    presentation.save("output-with-placeholders.pptx", slides.export.SaveFormat.PPTX)

Výsledek:

Zástupné objekty na rozvržení snímku

Odstranění nepoužívaných rozvržení snímků

Použijte metodu Compress.remove_unused_layout_slides k odstranění rozvržení, na která neodkazuje žádný normální snímek. Metoda ponechá rozvržení, která jsou stále používána, nedotčena.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    slides.lowcode.Compress.remove_unused_layout_slides(presentation)
    presentation.save("output-without-unused-layouts.pptx", slides.export.SaveFormat.PPTX)

Pro odstranění konkrétního rozvržení nejprve použijte jeho vlastnost has_depending_slides nebo metodu get_depending_slides. Před voláním LayoutSlide.remove přiřaďte všechny závislé snímky. Pokus o odstranění používaného rozvržení vyvolá výjimku PptxEditException.

Řízení viditelnosti zápatí na rozvržení snímku

Rozvržení má vlastní zástupné objekty zápatí, číslo snímku a datum/čas. Pomocí vlastnosti LayoutSlide.header_footer_manager můžete řídit tyto zástupné objekty pro jedno rozvržení. To je užitečné, například když rozvržení obsahu má zobrazovat zápatí, ale rozvržení titulku ne.

Následující příklad bezpečně vybere rozvržení a zobrazí jeho prvky zápatí:

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    layout_slide = presentation.layout_slides.get_by_type(slides.SlideLayoutType.TITLE_AND_OBJECT)

    if layout_slide is None:
        layout_slide = presentation.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)

    if layout_slide is None:
        raise RuntimeError("The presentation does not contain a suitable layout slide.")

    header_footer_manager = layout_slide.header_footer_manager
    header_footer_manager.set_footer_visibility(True)
    header_footer_manager.set_slide_number_visibility(True)
    header_footer_manager.set_date_time_visibility(True)
    header_footer_manager.set_footer_text("Footer text")
    header_footer_manager.set_date_time_text("Date and time text")

    presentation.save("output-with-layout-footers.pptx", slides.export.SaveFormat.PPTX)

Řízení viditelnosti zápatí na hlavním snímku a jeho podřízených rozvrženích

Pro aplikaci jednotných nastavení zápatí v celé hierarchii hlavního snímku použijte vlastnost MasterSlide.header_footer_manager. Metody šíření třídy MasterSlideHeaderFooterManager působí na hlavní snímek, jeho závislá rozvržení a normální snímky; nezasahují jen jeden konkrétní normální snímek.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    header_footer_manager = presentation.masters[0].header_footer_manager
    header_footer_manager.set_footer_and_child_footers_visibility(True)
    header_footer_manager.set_slide_number_and_child_slide_numbers_visibility(True)
    header_footer_manager.set_date_time_and_child_date_times_visibility(True)
    header_footer_manager.set_footer_and_child_footers_text("Footer text")
    header_footer_manager.set_date_time_and_child_date_times_text("Date and time text")

    presentation.save("output-with-master-footers.pptx", slides.export.SaveFormat.PPTX)

Často kladené otázky

Jaký je rozdíl mezi hlavním snímkem a rozvržením snímku?

Hlavní snímek určuje motiv prezentace a sdílené formátování. Rozvržení snímku patří k hlavnímu snímku a definuje jedno opakovaně použitelné uspořádání zástupných objektů. Normální snímky používají tato rozvržení a ukládají obsah specifický pro jednotlivé snímky.

Mohu kopírovat rozvržení snímku z jedné prezentace do druhé?

Ano. Přidejte kopii do cílové kolekce pomocí metody add_clone. Při kopírování mezi prezentacemi také ověřte fonty, motivy, obrázky a další prostředky používané zdrojovým rozvržením.

Co se stane, když upravím rozvržení, které je již používáno?

Závislé snímky zdědí změny rozvržení, pokud lokálně nepřepíšou postižené formátování nebo objekty. Geometrie zástupných objektů a zděděné stylování se tak mohou najednou změnit na mnoha snímcích. Použijte get_depending_slides k identifikaci ovlivněných snímků před úpravou rozvržení.

Co se stane, když odstraním rozvržení, které je stále používáno?

Aspose.Slides vyvolá výjimku PptxEditException. Nejprve přiřaďte závislé snímky, nebo použijte remove_unused_layout_slides k odstranění pouze neodkazovaných rozvržení.