Freigeben über


Arbeiten mit Folienlayouts

Letzte Änderung: Freitag, 8. Oktober 2010

Gilt für: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010

Inhalt dieses Artikels
Folienlayouts in PresentationML
Die Open XML SDK 2.0-Klasse "SlideLayout"
Arbeiten mit der SlideLayout-Klasse
Open XML SDK-Codebeispiel
Generierter PresentationML-Code

In diesem Thema wird die Open XML SDK 2.0-Klasse SlideLayout und ihre Beziehung zum Open XML-Dateiformatschema für PresentationML erläutert.

Folienlayouts in PresentationML

In der Spezifikation ISO/IEC 29500 wird das Open XML PresentationML-Element <sldLayout> zur Darstellung von Folienlayouts in einem PresentationML-Dokument wie folgt beschrieben:

Dieses Element gibt eine Instanz eines Folienlayouts an. Das Folienlayout enthält im Wesentlichen eine Foliendesignvorlage, die auf jede vorhandene Folie angewendet werden kann. Bei der Anwendung auf eine vorhandene Folie sollten alle entsprechenden Inhalte in das neue Folienlayout übertragen werden.

© ISO/IEC29500: 2008.

Das <sldLayout>-Element ist das Stammelement des PresentationML-Folienlayoutteils. Weitere Informationen zur Gesamtstruktur der Teile und Elemente eines PresentationML-Dokuments finden Sie unter Struktur eines PresentationML-Dokuments.

In der folgenden Tabelle sind die untergeordneten Elemente des <sldLayout>-Elements, die bei der Arbeit mit Folienlayouts verwendet werden, und die ihnen entsprechenden Open XML SDK 2.0-Klassen aufgeführt.

PresentationML-Element

Open XML SDK 2.0-Klasse

<clrMapOvr>

ColorMapOverride

<cSld>

CommonSlideData

<extLst>

ExtensionListWithModification

<hf>

HeaderFooter

<timing>

Timing

<transition>

Transition

In der folgenden Tabelle aus der Spezifikation ISO/IEC 29500 werden die Attribute des <sldLayout>-Elements beschrieben.

Attribut

Beschreibung

matchingName (Matching Name)

Gibt einen Namen an, der statt des name-Attributs innerhalb des cSld-Elements verwendet werden soll. Dies dient zur Anpassung des Layouts nach Layoutänderungen und der Anwendung von Vorlagen.

Die möglichen Werte für dieses Attribut sind durch den string-Datentyp des W3C XML-Schemas definiert.

preserve (Preserve Slide Layout)

Gibt an, ob das entsprechende Folienlayout gelöscht werden soll, wenn alle dem Layout entsprechenden Folien gelöscht werden. Ist das Attribut nicht angegeben, sollte von der generierenden Anwendung der Wert false angenommen werden. Dies würde bedeuten, dass die Folie gelöscht wird, wenn keine Folien in der Präsentation damit verbunden sind.

Die möglichen Werte für dieses Attribut sind durch den boolean-Datentyp des W3C XML-Schemas definiert.

showMasterPhAnim (Show Master Placeholder Animations)

Gibt an, ob Animationen für Platzhalter aus der Masterfolie angezeigt werden sollen.

Die möglichen Werte für dieses Attribut sind durch den boolean-Datentyp des W3C XML-Schemas definiert.

showMasterSp (Show Master Shapes)

Gibt an, ob Formen von der Masterfolie auf Folien angezeigt werden sollen.

Die möglichen Werte für dieses Attribut sind durch den boolean-Datentyp des W3C XML-Schemas definiert.

type (Slide Layout Type)

Gibt den von dieser Folie verwendeten Folienlayouttyp an.

Die möglichen Werte für dieses Attribut sind durch den einfachen Typ ST_SlideLayoutType (§19.7.15) definiert.

userDrawn (Is User Drawn)

Gibt an, ob das entsprechende Objekt vom Benutzer gezeichnet wurde und daher nicht gelöscht werden soll. Dies ermöglicht das Kennzeichnen von Folien, die vom Benutzer gezeichnete Daten enthalten.

Die möglichen Werte für dieses Attribut sind durch den boolean-Datentyp des W3C XML-Schemas definiert.

© ISO/IEC29500: 2008.

Die Open XML SDK 2.0-Klasse "SlideLayout"

Die OXML SDK-Klasse SlideLayout stellt das <sldLayout>-Element dar, das im Open XML-Dateiformatschema für PresentationML-Dokumente definiert ist. Verwenden Sie die SlideLayout-Klasse zum Bearbeiten einzelner <sldLayout>-Elemente in einem PresentationML-Dokument.

Klassen, die untergeordnete Elemente des <sldLayout>-Elements darstellen und daher im Allgemeinen der SlideLayout-Klasse zugeordnet werden, sind in der folgenden Liste aufgeführt.

ColorMapOverride-Klasse

Die ColorMapOverride-Klasse entspricht dem <clrMapOvr>-Element. In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das <clrMapOvr>-Element eingeführt:

Dieses Element bietet einen Mechanismus, um die Farbschemas im <ClrMap>-Element zu überschreiben. Wenn das untergeordnete <masterClrMapping>-Element vorhanden ist, wird das im Master definierte Farbschema verwendet. Wenn das untergeordnete <overrideClrMapping>-Element vorhanden ist, definiert es ein neues, für die übergeordnete Notizenfolie, Präsentationsfolie oder das übergeordnete Folienlayout spezifisches Farbschema.

© ISO/IEC29500: 2008.

CommonSlideData-Klasse

Die CommonSlideData-Klasse entspricht dem <cSld>-Element. In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das <cSld>-Element eingeführt:

Dieses Element gibt einen Container für den Typ von Folieninformationen an, der für alle Folientypen relevant ist. Allen Folien ist ein Satz von Eigenschaften gemeinsam, die unabhängig vom Folientyp sind. Die Beschreibung dieser Eigenschaften für eine bestimmte Folie ist im <cSld>-Container der Folie gespeichert. Spezifische Foliendaten für den vom übergeordneten Element angegebenen Folientyp sind an einer anderen Stelle gespeichert.

Die tatsächlichen Daten in <cSld> beschreiben nur die bestimmte übergeordnete Folie. Nur der Typ der gespeicherten Informationen ist bei allen Folien gleich.

© ISO/IEC29500: 2008.

ExtensionListWithModification-Klasse

Die ExtensionListWithModification-Klasse entspricht dem <extLst>-Element. In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das <extLst>-Element eingeführt:

Dieses Element gibt die Erweiterungsliste mit Modifikationsmöglichkeit an, in der alle künftigen Erweiterungen des Elementtyps <ext> definiert werden. Die Erweiterung wird gemeinsam mit den entsprechenden künftigen Erweiterungen genutzt, um die Speicherfähigkeiten des PresentationML-Frameworks zu vergrößern. Dadurch können verschiedene neue Arten von Daten systeminhärent im Framework gespeichert werden.

[Hinweis: Mithilfe des extLst-Elements kann die generierende Anwendung speichern, ob diese Erweiterungseigenschaft geändert wurde. Ende des Hinweises]

© ISO/IEC29500: 2008.

HeaderFooter-Klasse

Die HeaderFooter-Klasse entspricht dem <hf>-Element. In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das <hf>-Element eingeführt:

Dieses Element gibt die Kopf- und Fußzeileninformationen für eine Folie an. Kopf- und Fußzeilen bestehen aus Platzhaltern für Text, der einheitlich für alle Folien und Folientypen gelten soll, wie beispielsweise Datum und Uhrzeit, Foliennummerierung sowie benutzerdefinierter Kopf- und Fußzeilentext.

© ISO/IEC29500: 2008.

Timing-Klasse

Die Timing-Klasse entspricht dem <timing>-Element. In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das <timing>-Element eingeführt:

Dieses Element gibt die Anzeigedauer für alle Animationen und zeitgesteuerten Ereignisse auf der entsprechenden Folie an. Diese Informationen werden über Zeitknoten innerhalb des <timing>-Elements nachverfolgt. Weitere Informationen zu den Besonderheiten dieser Zeitknoten und zu ihrer Definition finden Sie im Animationsabschnitt des PresentationML-Frameworks.

© ISO/IEC29500: 2008.

Transition-Klasse

Die Transition-Klasse entspricht dem <transition>-Element. In den folgenden Informationen aus der Spezifikation ISO/IEC 29500 wird das <transition>-Element eingeführt:

Dieses Element gibt die Art des Folienübergangs an, die für den Wechsel von der vorherigen Folie zur aktuellen Folie verwendet werden soll. Die Übergangsinformationen sind somit auf der Folie gespeichert, die nach dem Übergang angezeigt wird.

© ISO/IEC29500: 2008.

Arbeiten mit der SlideLayout-Klasse

Wie im folgenden Open XML SDK-Codebeispiel gezeigt wird, wird jeder Instanz der SlideLayout-Klasse eine Instanz der SlideLayoutPart-Klasse zugeordnet. Diese stellt einen Folienlayoutteil, einen der erforderlichen Teile eines PresentationML-Präsentationsdateipakets, dar. Jeder Instanz der SlideLayout-Klasse müssen zudem Instanzen der Klassen SlideMaster und Slide zugeordnet werden, denen wiederum ähnlich benannte erforderliche Präsentationsteile zugeordnet sind, die durch die Klassen SlideMasterPart und SlidePart dargestellt werden.

Der SlideLayout-Klasse, die das <sldLayout>-Element darstellt, ist somit ebenfalls eine Folge anderer Klassen zugeordnet, die die untergeordneten Elemente des <sldLayout>-Elements darstellen. Zu diesen Klassen gehören, wie im folgenden Codebeispiel gezeigt wird, die Klassen CommonSlideData, ColorMapOverride, ShapeTree und Shape.

Open XML SDK-Codebeispiel

Durch die folgende Methode aus dem Artikel Anleitung: Erstellen eines Präsentationsdokuments durch Bereitstellen eines Dateinamens wird einer vorhandenen Präsentation ein neuer Folienlayoutteil hinzugefügt und eine Instanz einer Open XML SDK 2.0-Klasse SlideLayout im neuen Folienlayoutteil erstellt. Der Konstruktor der SlideLayout-Klasse erstellt Instanzen der Klassen CommonSlideData und ColorMapOverride. Der Konstruktor der CommonSlideData-Klasse erstellt eine Instanz der ShapeTree-Klasse, deren Konstruktor wiederum weitere Klasseninstanzen erstellt: eine Instanz der NonVisualGroupShapeProperties-Klasse, eine Instanz der GroupShapeProperties-Klasse und eine Instanz der Shape-Klasse.

Bei dem im Code durch den Buchstaben P dargestellten Namespace handelt es sich um den DocumentFormat.OpenXml.Presentation-Namespace.

private static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1)
        {
            SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart<SlideLayoutPart>("rId1");
            SlideLayout slideLayout = new SlideLayout(
            new CommonSlideData(new ShapeTree(
              new P.NonVisualGroupShapeProperties(
              new P.NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" },
              new P.NonVisualGroupShapeDrawingProperties(),
              new ApplicationNonVisualDrawingProperties()),
              new GroupShapeProperties(new TransformGroup()),
              new P.Shape(
              new P.NonVisualShapeProperties(
                new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "" },
                new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
                new ApplicationNonVisualDrawingProperties(new PlaceholderShape())),
              new P.ShapeProperties(),
              new P.TextBody(
                new BodyProperties(),
                new ListStyle(),
                new Paragraph(new EndParagraphRunProperties()))))),
            new ColorMapOverride(new MasterColorMapping()));
            slideLayoutPart1.SlideLayout = slideLayout;
            return slideLayoutPart1;
         }
Private Shared Function CreateSlideLayoutPart(ByVal slidePart1 As SlidePart) As SlideLayoutPart
            Dim slideLayoutPart1 As SlideLayoutPart = slidePart1.AddNewPart(Of SlideLayoutPart)("rId1")
            Dim slideLayout As New SlideLayout(New CommonSlideData(New ShapeTree(New P.NonVisualGroupShapeProperties(New P.NonVisualDrawingProperties() With { _
              .Id = CType(1UI, UInt32Value), _
              .Name = "" _
            }, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), _
                New GroupShapeProperties(New TransformGroup()), New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _
              .Id = CType(2UI, UInt32Value), _
              .Name = "" _
            }, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _
              .NoGrouping = True _
            }), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New P.TextBody(New BodyProperties(), _
                New ListStyle(), New Paragraph(New EndParagraphRunProperties()))))), New ColorMapOverride(New MasterColorMapping()))
            slideLayoutPart1.SlideLayout = slideLayout
            Return slideLayoutPart1
        End Function

Generierter PresentationML-Code

Bei der Ausführung des Open XML SDK 2.0-Codes wird folgende XML in die PresentationML-Dokumentdatei geschrieben, auf die im Code verwiesen wird.

<?xml version="1.0" encoding="utf-8"?>
<p:sldLayout xmlns:p="https://schemas.openxmlformats.org/presentationml/2006/main">
  <p:cSld>
    <p:spTree>
      <p:nvGrpSpPr>
        <p:cNvPr id="1"
                 name="" />
        <p:cNvGrpSpPr />
        <p:nvPr />
      </p:nvGrpSpPr>
      <p:grpSpPr>
        <a:xfrm xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
      </p:grpSpPr>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="2"
                   name="" />
          <p:cNvSpPr>
            <a:spLocks noGrp="1"
                       xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
          </p:cNvSpPr>
          <p:nvPr>
            <p:ph />
          </p:nvPr>
        </p:nvSpPr>
        <p:spPr />
        <p:txBody>
          <a:bodyPr xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
          <a:lstStyle xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
          <a:p xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main">
            <a:endParaRPr />
          </a:p>
        </p:txBody>
      </p:sp>
    </p:spTree>
  </p:cSld>
  <p:clrMapOvr>
    <a:masterClrMapping xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
  </p:clrMapOvr>
</p:sldLayout>

Siehe auch

Konzepte

Informationen zum Open XML SDK 2.0 für Microsoft Office

Anleitung: Erstellen einer Präsentation durch Bereitstellen eines Dateinamens

Anleitung: Anwenden eines Desigs auf eine Präsentation