Freigeben über


Arbeiten mit Folienlayouts

In diesem Thema wird die Open XML SDK für Office-Klasse SlideLayout und ihre Beziehung zum PresentationML-Schema des Open XML-Dateiformats erläutert.

Folienlayouts in PresentationML

Die ISO/IEC 29500-Spezifikation beschreibt das Open XML PresentationML-Element <sldLayout/> , das zur Darstellung von Folienlayouts in einem PresentationML-Dokument verwendet wird, wie folgt:

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.

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 Elements aufgeführt, die <sldLayout/> beim Arbeiten mit Folienlayouts verwendet werden, und die Open XML SDK-Klassen, die ihnen entsprechen.

PresentationML-Element Open XML SDK-Klasse
<clrMapOvr/> ColorMapOverride
<cSld/> CommonSlideData
<extLst/> ExtensionListWithModification
<hf/> HeaderFooter
<timing/> Timing
<transition/> Transition

The following table from the ISO/IEC 29500 specification describes the attributes of the <sldLayout/> element.

Attribute Beschreibung
matchingName (Matching Name) Gibt einen Namen an, der anstelle des name-Attributs im cSld-Element verwendet werden soll. Dies wird für den Layoutabgleich als Reaktion auf Layoutänderungen und Vorlagenanwendungen verwendet.

Die möglichen Werte für dieses Attribut werden durch den W3C-XML-Schemadatentyp string definiert.
preserve (Preserve Slide Layout) Gibt an, ob das entsprechende Folienlayout gelöscht werden soll, wenn alle dem Layout entsprechenden Folien gelöscht werden. Wenn dieses Attribut nicht angegeben ist, sollte von der generierenden Anwendung ein Wert von 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 werden durch den W3C-XML-Schemadatentyp boolean 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 werden durch den W3C-XML-Schemadatentyp boolean 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 werden durch den W3C-XML-Schemadatentyp boolean 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 werden durch den W3C-XML-Schemadatentyp boolean definiert.

Die SlideLayout-Klasse des Open XML SDK

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

Klassen, die untergeordnete Elemente des <sldLayout/> Elements darstellen und daher häufig der SlideLayout Klasse zugeordnet sind, werden in der folgenden Liste angezeigt.

ColorMapOverride-Klasse

Die ColorMapOverride -Klasse entspricht dem <clrMapOvr/> -Element. Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 führen das <clrMapOvr/> Element ein:

Dieses Element stellt einen Mechanismus bereit, mit dem die im <ClrMap/> -Element aufgeführten Farbschemas überschrieben werden. Wenn das <masterClrMapping/> untergeordnete Element vorhanden ist, wird das vom master definierte Farbschema verwendet. Wenn das <overrideClrMapping/> untergeordnete Element vorhanden ist, definiert es ein neues Farbschema, das für die übergeordnete Notizenfolie, die Präsentationsfolie oder das Folienlayout spezifisch ist.

CommonSlideData-Klasse

Die CommonSlideData -Klasse entspricht dem <cSld/> -Element. Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 führen das <cSld/> Element ein:

Dieses Element gibt einen Container für den Folieninformationstyp an, der für alle Folientypen relevant ist. Alle Folien verwenden einen gemeinsamen Satz von Eigenschaften, die unabhängig vom Folientyp sind. Die Beschreibung dieser Eigenschaften für eine bestimmte Folie wird im Container der Folie <cSld/> gespeichert. Foliendaten, die für den vom übergeordneten Element angegebenen Folientyp spezifisch sind, werden an anderer Stelle gespeichert.

Die tatsächlichen Daten in <cSld/> beschreiben nur die jeweilige übergeordnete Folie. Es ist nur der Typ der gespeicherten Informationen, der für alle Folien gilt.

ExtensionListWithModification-Klasse

Die ExtensionListWithModification -Klasse entspricht dem <extLst/>-Element. Die folgenden Informationen aus der

ISO/IEC 29500

specification führt das -Element ein <extLst/> :

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

Hinweis

Mithilfe dieses extLst-Elements kann die generierende Anwendung speichern, ob diese Erweiterungseigenschaft geändert wurde.

HeaderFooter-Klasse

Die HeaderFooter -Klasse entspricht dem <hf/> -Element. Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 führen das <hf/> Element ein:

Mit diesem Element werden die Kopf- und Fußzeileninformationen für eine Folie angegeben. Kopf- und Fußzeilen bestehen aus Platzhaltern für Text, der für alle Folien und Folientypen konsistent sein soll, z. B. Datum und Uhrzeit, Foliennummerierung und benutzerdefinierter Kopf- und Fußzeilentext.

Timing-Klasse

Die Timing -Klasse entspricht dem <timing/> -Element. Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 führen das <timing/> Element ein:

Dieses Element gibt die Zeitgeberinformationen zur Behandlung aller Animationen und geplanten Ereignisse innerhalb 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 innerhalb des Animationsabschnitts des PresentationML-Frameworks.

Transition-Klasse

Die Transition -Klasse entspricht dem <transition/> -Element. Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 führen das <transition/> Element ein:

Dieses Element gibt die Art des Folienübergangs an, der beim Übergang zur aktuellen Folie von der vorherigen Folie verwendet werden soll. Dies bedeutet, dass die Übergangsinformationen in der Folie gespeichert sind, die nach Abschluss des Übergangs angezeigt wird.

Arbeiten mit der SlideLayout-Klasse

Wie im folgenden Codebeispiel für das Open XML SDK gezeigt, ist jede instance der SlideLayout Klasse einer instance der Klasse zugeordnet, die SlideLayoutPart einen Folienlayoutteil darstellt, einen der erforderlichen Teile eines PresentationML-Präsentationsdateipakets. Jede SlideLayout Klasse instance muss auch Instanzen der SlideMaster - und Slide -Klasse zugeordnet werden, die wiederum ähnlich benannten erforderlichen Präsentationsteilen zugeordnet sind, die durch die SlideMasterPart Klassen und SlidePart dargestellt werden.

Die SlideLayout -Klasse, die das <sldLayout/> -Element darstellt, ist daher auch einer Reihe anderer Klassen zugeordnet, die die untergeordneten Elemente des <sldLayout/> Elements darstellen. Zu diesen Klassen gehören, wie im folgenden Codebeispiel gezeigt, die CommonSlideData -Klasse, die ColorMapOverrideShapeTree -Klasse und die - Shape Klasse.

Open XML SDK-Codebeispiel

Die folgende Methode aus dem Artikel Vorgehensweise: Erstellen eines Präsentationsdokuments durch Angabe eines Dateinamens fügt einer vorhandenen Präsentation einen neuen Folienlayoutteil hinzu und erstellt eine instance einer Open XML SDK-Klasse SlideLayout im neuen Folienlayoutteil. Der SlideLayout Klassenkonstruktor erstellt Instanzen der CommonSlideData -Klasse und der ColorMapOverride -Klasse. Der CommonSlideData Klassenkonstruktor erstellt eine instance der ShapeTree Klasse, deren Konstruktor wiederum zusätzliche Klasseninstanzen erstellt: eine instance der NonVisualGroupShapeProperties Klasse, eine instance der GroupShapeProperties Klasse und eine instance der Shape Klasse.

Der Namespace, der durch den Buchstaben P im Code dargestellt wird, ist der DocumentFormat.OpenXml.Presentation Namespace.

static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1)
{
    SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart<SlideLayoutPart>();
    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;
}

Generiertes PresentationML-Dokument

Wenn der Open XML SDK-Code ausgeführt wird, wird der folgende XML-Code in die PresentationML-Dokumentdatei geschrieben, auf die im Code verwiesen wird.

    <?xml version="1.0" encoding="utf-8"?>
    <p:sldLayout xmlns:p="http://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="http://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="http://schemas.openxmlformats.org/drawingml/2006/main" />
              </p:cNvSpPr>
              <p:nvPr>
                <p:ph />
              </p:nvPr>
            </p:nvSpPr>
            <p:spPr />
            <p:txBody>
              <a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:lstStyle xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
                <a:endParaRPr />
              </a:p>
            </p:txBody>
          </p:sp>
        </p:spTree>
      </p:cSld>
      <p:clrMapOvr>
        <a:masterClrMapping xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
      </p:clrMapOvr>
    </p:sldLayout>

Siehe auch

Informationen zum Open XML SDK für Office

Gewusst wie: Erstellen einer Präsentation durch Bereitstellen eines Dateinamens

Vorgehensweise: Anwenden eines Designs auf eine Präsentation