Freigeben über


Arbeiten mit Folienmastern

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

Folienmaster in PresentationML

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

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 Elements aufgeführt, die <sldMaster/> 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
<transition/> Transition
<txStyles/> TextStyles

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

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. 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-Schema-Datentyp Boolean definiert.

Open XML SDK SlideMaster-Klasse

Die Open XML SDK-KlasseSlideMaster stellt das element dar, das <sldMaster/> 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 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 SPEZIFIKATION ISO/IEC 29500 führen das <extLst/> Element ein:

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.

SlideLayoutIdList-Klasse

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

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

TextStyles-Klasse

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

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>
                    <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 Codebeispiel des Open XML SDK gezeigt, ist jede instance der SlideMaster Klasse einem instance der Klasse zugeordnet, die SlideMasterPart eine Folie master Teil darstellt, einem der erforderlichen Teile eines PresentationML-Präsentationsdateipakets. Jede SlideMaster Klasse instance muss auch Instanzen der SlideLayout - und Slide -Klasse zugeordnet werden, die wiederum ähnlich benannten erforderlichen Präsentationsteilen zugeordnet sind, die durch die SlideLayoutPart Klassen und SlidePart 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 ColorMapShapeTree -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 create an instance of an Open XML SDK SlideMaster class in the new slide master part. Der SlideMaster Klassenkonstruktor erstellt Instanzen der CommonSlideData -Klasse und der ColorMapKlassen , SlideLayoutIdListund 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.

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