Freigeben über


Arbeiten mit Folienmastern

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

Folienmaster in PresentationML

Die SPEZIFIKATION ISO/IEC 29500 beschreibt das Open XML PresentationML <sldMaster-Element> , das zur Darstellung von Folienlayouts in einem PresentationML-Dokument verwendet wird.

Dieses Element gibt eine Instanz einer Folienmasterfolie an. Eine Folienmasterfolie enthält alle Elemente, welche die Objekte und ihre Formatierung auf einer Präsentationsfolie beschreiben. Eine Folienmasterfolie enthält zwei Hauptelemente. Das cSld-Element gibt die allgemeinen Folienelemente, z. B. Formen und die angefügten Textkörper, an. Das txStyles-Element gibt dann die Formatierung des Texts in jeder dieser Formen an. Die anderen Eigenschaften auf einer Folienmasterfolie geben andere Eigenschaften auf einer Präsentationsfolie an, wie Farbinformationen, Kopf- und Fußzeilen sowie Anzeigedauer- und Übergangsinformationen für alle entsprechenden Präsentationsfolien.

Das <sldMaster-Element> ist das Stammelement des PresentationML-Folienmasterteils. 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 sldMaster-Elements> aufgeführt, die <beim Arbeiten mit Folienmastern und den entsprechenden Open XML SDK-Klassen verwendet werden.

PresentationML-Element Open XML SDK-Klasse
<clrMap> Colormap
<cSld> CommonSlideData
<extLst> ExtensionListWithModification
<Hf> HeaderFooter
<sldLayoutIdLst> SlideLayoutIdList
<Timing> Timing
<Übergang> Übergang
<txStyles> TextStyles

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

Attribute Beschreibung
preserve (Preserve Slide Master) 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.

Open XML SDK SlideMaster-Klasse

DieSlideMaster-Klasse des Open XML SDK stellt das <sldMaster-Element> dar, das im Open XML-Dateiformatschema für PresentationML-Dokumente definiert ist. Verwenden Sie die SlideMaster-Klasse , um einzelne <sldMaster-Elemente> in einem PresentationML-Dokument zu bearbeiten.

Klassen, die untergeordnete Elemente des <sldMaster-Elements> darstellen und daher häufig der SlideMaster-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.

SlideLayoutIdList-Klasse

Die SlideLayoutIdList-Klasse entspricht dem <sldLayoutIdLst-Element> . Die folgenden Informationen aus der ISO/IEC 29500-Spezifikation stellen das <sldLayoutIdLst-Element> vor:

Dieses Element gibt das Vorhandensein der Folienlayout-Identifizierungsliste an. Diese Liste ist im Folienmaster enthalten und dient zur Bestimmung der in der Folienmasterdatei verwendeten Layouts. Jedes Layout in der Liste der Folienlayouts weist eine eigene ID und Beziehungs-ID auf, die es eindeutig im Präsentationsdokument und auf der Masterfolie, auf der es verwendet wird, identifiziert.

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.

TextStyles-Klasse

Die TextStyles-Klasse entspricht dem <txStyles-Element> . Die folgenden Informationen aus der SPEZIFIKATION ISO/IEC 29500 stellen das <txStyles-Element> vor:

Dieses Element gibt die Textformatvorlagen in einem Folienmaster an. Das Element enthält die Formatinformationen für den Titeltext, den Textkörper und anderen Folientext. Das Element wird nur innerhalb des Folienmasters verwendet und legt somit die Textformatvorlagen für die entsprechenden Präsentationsfolien fest.

Betrachten Sie den Fall, in dem wir den Titeltext für eine master Folie angeben möchten.

<p:txStyles>  
    <p:titleStyle>
        <a:lvl1pPr algn="ctr" rtl="0" latinLnBrk="0">  
            <a:spcBef>  
                <a:spcPct val="0"/>  
            </a:spcBef>  
            <a:buNone/>  
            <a:defRPr sz="4400" kern="1200">  
                <a:solidFill>vv  
                    <a:schemeClr val="tx1"/>  
                </a:solidFill\>  
                <a:latin typeface="+mj-lt"/>  
                <a:ea typeface="+mj-ea"/>  
                <a:cs typeface="+mj-cs"/>  
            </a:defRPr>  
        </a:lvl1pPr>  
    </p:titleStyle>  
</p:txStyles>

Im vorherigen Beispiel wird der Titeltext gemäß der obigen Formatierung für alle zugehörigen Folien innerhalb der Präsentation festgelegt.

Arbeiten mit der SlideMaster-Klasse

Wie im folgenden Open XML SDK-Codebeispiel gezeigt, ist jede instance der SlideMaster-Klasse einem instance der SlideMasterPart-Klasse zugeordnet, die eine Folie master Teil darstellt, einem der erforderlichen Teile eines PresentationML-Präsentationsdateipakets. Jede SlideMaster-Klasse instance muss auch Instanzen der SlideLayout- und <Slide-Klassen zugeordnet sein, die wiederum ähnlich benannten erforderlichen Präsentationsteilen zugeordnet sind, die durch die SlideLayoutPart- und SlidePart-Klassen dargestellt werden.

Die SlideMaster-Klasse , die das <sldMaster-Element> darstellt, ist daher auch einer Reihe anderer Klassen zugeordnet, die die untergeordneten Elemente des <sldMaster-Elements> darstellen. Zu diesen Klassen gehören, wie im folgenden Codebeispiel gezeigt, die CommonSlideData-Klasse , die ColorMap-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 add a new slidemaster part to an existing presentation and creates an instance of an Open XML SDKSlideMaster class in the new slide master part. Der Konstruktor der SlideMaster-Klasse erstellt Instanzen der Klassen CommonSlideData, ColorMap, SlideLayoutIdList und TextStyles. 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 .

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

static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1)
{
    SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart<SlideMasterPart>("rId1");
    SlideMaster slideMaster = new SlideMaster(
    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 = "Title Placeholder 1" },
        new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
        new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Type = PlaceholderValues.Title })),
      new P.ShapeProperties(),
      new P.TextBody(
        new BodyProperties(),
        new ListStyle(),
        new Paragraph())))),
    new P.ColorMap() { Background1 = D.ColorSchemeIndexValues.Light1, Text1 = D.ColorSchemeIndexValues.Dark1, Background2 = D.ColorSchemeIndexValues.Light2, Text2 = D.ColorSchemeIndexValues.Dark2, Accent1 = D.ColorSchemeIndexValues.Accent1, Accent2 = D.ColorSchemeIndexValues.Accent2, Accent3 = D.ColorSchemeIndexValues.Accent3, Accent4 = D.ColorSchemeIndexValues.Accent4, Accent5 = D.ColorSchemeIndexValues.Accent5, Accent6 = D.ColorSchemeIndexValues.Accent6, Hyperlink = D.ColorSchemeIndexValues.Hyperlink, FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink },
    new SlideLayoutIdList(new SlideLayoutId() { Id = (UInt32Value)2147483649U, RelationshipId = "rId1" }),
    new TextStyles(new TitleStyle(), new BodyStyle(), new OtherStyle()));
    slideMasterPart1.SlideMaster = slideMaster;
    return slideMasterPart1;
}