Freigeben über


Arbeiten mit Folienlayouts

In diesem Thema wird die SlideLayout-Klasse des Open XML SDK für Office 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 <sldLayout-Element> , 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 sldLayout-Elements> aufgeführt, die <beim Arbeiten mit Folienlayouts und den entsprechenden Open XML SDK-Klassen verwendet werden.

PresentationML-Element Open XML SDK-Klasse
<clrMapOvr> ColorMapOverride
<cSld> CommonSlideData
<extLst> ExtensionListWithModification
<Hf> HeaderFooter
<Timing> Timing
<Übergang> Übergang

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

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 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.

Die SlideLayout-Klasse des Open XML SDK

Die SlideLayout-Klasse des OXML SDK stellt das <sldLayout-Element> dar, das 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 stellen das <clrMapOvr-Element> vor:

Dieses Element stellt einen Mechanismus bereit, mit dem die im <ClrMap-Element> aufgeführten Farbschemas überschrieben werden. Wenn das <untergeordnete masterClrMapping-Element> vorhanden ist, wird das durch die master definierte Farbschema verwendet. Wenn das <untergeordnete overrideClrMapping-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 stellen das <cSld-Element> vor:

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 cSld-Container> der Folie <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 SPEZIFIKATION ISO/IEC 29500 stellen das <extLst-Element> vor:

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 stellen das <hf-Element> vor:

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 <Zeitsteuerungselement> 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 Zeitsteuerungselements <> 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 stellen das <Übergangselement> vor:

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 Open XML SDK-Codebeispiel gezeigt, ist jede instance der SlideLayout-Klasse einem instance der SlideLayoutPart-Klasse zugeordnet, die einen Folienlayoutteil darstellt, einer der erforderlichen Teile eines PresentationML-Präsentationsdateipakets. Jede SlideLayout-Klasse instance muss auch Instanzen der SlideMaster- und Slide-Klassen zugeordnet sein, die wiederum mit ähnlich benannten erforderlichen Präsentationsteilen verknüpft sind, die durch die SlideMasterPart- und SlidePart-Klassendargestellt 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 ColorMapOverride-Klasse , die ShapeTree-Klasse und die Shape-Klasse .

Open XML SDK-Codebeispiel

Die folgende Methode aus dem Artikel How to: Create a presentation document by providing a file name adds a new slide layout part to an existing presentation and create an instance of an Open XML SDKSlideLayout class in the new slide layout part. Der Konstruktor der SlideLayout-Klasse erstellt Instanzen der Klassen CommonSlideData und ColorMapOverride. Der CommonSlideData-Klassenkonstruktor erstellt eine instance der ShapeTree-Klasse, deren Konstruktor wiederum zusätzliche Klasseninstanzen erstellt: eine instance der [NonVisualGroupShapeProperties(https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx) -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(https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -Namespace).

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using P = DocumentFormat.OpenXml.Presentation;

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