このトピックでは、Open XML SDK for Office SlideMaster クラスと、Open XML ファイル形式 PresentationML スキーマとの関係について説明します。
PresentationML のスライド マスター
ISO/IEC 29500 の仕様には、PresentationML ドキュメント内のスライドのレイアウトを表す Open XML の PresentationML <sldMaster/> 要素について、次のように記述されています。
この要素は、スライド マスター スライドのインスタンスを指定します。 スライド マスター スライド内には、プレゼンテーション スライド内のオブジェクトおよびそれらに対応する書式設定を記述するすべての要素が含まれます。 スライド マスター スライド内には、2 つのメイン要素があります。 cSld 要素は、図形とその添付テキスト本文などの一般的なスライド要素を指定します。 次に、txStyles 要素は、これらの各図形内のテキストの書式設定を指定します。 スライド マスター スライド内の他のプロパティでは、色情報、ヘッダー、フッター、対応するすべてのプレゼンテーション スライドのタイミングと切り替え情報など、プレゼンテーション スライド内のその他のプロパティを指定します。
<sldMaster/> 要素は、PresentationML のスライド マスター パーツのルート要素です。 PresentationML ドキュメントを構成するパーツと要素の全体的な構造の詳細については、「PresentationML ドキュメントの構造」を参照してください。
次の表は、スライド マスターと、それらに対応する Open XML SDK クラスを操作するときに使用される <sldMaster/> 要素の子要素の一覧です。
| PresentationML 要素 | Open XML SDK クラス |
|---|---|
<clrMap/> |
ColorMap |
<cSld/> |
CommonSlideData |
<extLst/> |
ExtensionListWithModification |
<hf/> |
HeaderFooter |
<sldLayoutIdLst/> |
SlideLayoutIdList |
<timing/> |
Timing |
<transition/> |
Transition |
<txStyles/> |
TextStyles |
ISO/IEC 29500 の仕様に記載されている以下の表は、<sldMaster/> 要素の属性です。
| 属性 | 説明 |
|---|---|
| preserve (スライド マスターを保存) | スライド レイアウトに従うすべてのスライドが削除されたときに、対応するスライド レイアウトが削除されるかどうかを指定します。 この属性が指定されていない場合は、生成するアプリケーションで false の値を想定する必要があります。 これは、プレゼンテーション内でスライドが関連付けられていない場合は、スライドは実際には削除されることを意味します。この属性に使用できる値は、W3C XML スキーマ Boolean データ型によって定義されます。 |
XML SDK SlideMaster クラスを開く
Open XML SDKSlideMaster クラスは、PresentationML ドキュメントの Open XML ファイル形式スキーマで定義されている <sldMaster/> 要素を表します。 PresentationML ドキュメント内の個々の<sldMaster/>要素を操作するには、SlideMaster クラスを使用します。
<sldMaster/> 要素の子要素を表すクラス、したがって一般的に SlideMaster クラスに関連付けられているクラスを次の一覧に示します。
ColorMapOverride クラス
ColorMapOverride クラスは、<clrMapOvr/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<clrMapOvr/>要素について説明します。
この要素は、<ClrMap/> 要素内で設定されている配色を変更するメカニズムを提供します。
<masterClrMapping/> 子要素が存在する場合は、マスターによって定義される配色が使用されます。
<overrideClrMapping/> 子要素が存在する場合は、親ノート スライド、プレゼンテーションのスライド、またはスライドのレイアウトに固有の新しい配色が定義されます。
CommonSlideData クラス
CommonSlideData クラスは、<cSld/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<cSld/>要素について説明します。
この要素は、すべてのスライドの種類に関連する、スライド情報の種類のコンテナーを指定します。 すべてのスライドは、スライドの種類に依存しないプロパティの共通セットを共有します。特定のスライドのこれらのプロパティの説明は、スライドの <cSld/> コンテナー内に格納されます。 親要素によって示されるスライドの種類に固有のスライド データは、別の場所に保存されます。
<cSld/> の実際のデータには、特定の親スライドだけが記述されています。保存されているのは、すべてのスライドに共通する情報の種類だけです。
ExtensionListWithModification クラス
ExtensionListWithModification クラスは、<extLst/>element に対応します。
ISO/IEC 29500 仕様の次の情報では、<extLst/>要素について説明します。
要素タイプ <ext/> のすべての将来的な拡張が定義された、修正可能な拡張リストを指定します。 拡張リストは、対応する将来的な拡張と共に、PresentationML フレームワークの格納能力を拡張するために使用されます。 これにより、さまざまな新たな種類のデータをこのフレームワークにネイティブに格納できます。
注:
この extLst 要素を使用すると、生成元アプリケーションではこの拡張プロパティが変更されたかどうかを格納できます。
HeaderFooter クラス
HeaderFooter クラスは、<hf/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<hf/>要素について説明します。
この要素は、スライドのヘッダーおよびフッター情報を指定します。 ヘッダーおよびフッターは、日時、スライド番号、ユーザー設定のヘッダーおよびフッター テキストなど、すべてのスライドおよびスライドの種類で一貫している必要がある、テキストのプレースホルダーで構成されています。
SlideLayoutIdList クラス
SlideLayoutIdList クラスは、<sldLayoutIdLst/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<sldLayoutIdLst/>要素について説明します。
この要素は、スライド レイアウト識別リストの存在を指定します。 この一覧はスライド マスターに含まれており、スライド マスター ファイル内で使用されているレイアウトを決定するために使用されます。 スライド レイアウトの一覧内の各レイアウトには、プレゼンテーション ドキュメントと使用されている特定のマスター スライドの両方で一意に識別される独自の識別番号とリレーションシップ識別子があります。
Timing クラス
Timing クラスは、<timing/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<timing/>要素について説明します。
この要素は、対応するスライド内ですべてのアニメーションおよび時間指定イベントを処理するためのタイミング情報を指定します。 この情報は、<timing/> 要素内の時間ノードによって追跡されます。 時間ノードの仕様とその定義方法の詳細は、PresentationML フレームワークのアニメーション セクションで確認できます。
Transition クラス
Transition クラスは、<transition/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<transition/>要素について説明します。
この要素は、1 つ前のスライドから現在のスライドに切り替えるときに使用する画面切り替えを指定するものです。 つまり、切り替え情報は切り替え完了後に表示されるスライドに格納されます。
TextStyles クラス
TextStyles クラスは、<txStyles/> 要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<txStyles/>要素について説明します。
この要素は、スライド マスター内のテキスト スタイルを指定します。 この要素内には、タイトル テキスト、本文テキスト、その他のスライド テキストのスタイル情報も含まれます。 この要素は、スライド マスター内でのみ使用するため、対応するプレゼンテーション スライドのテキスト スタイルを設定します。
マスター スライドのタイトル テキストを指定する場合を考えてみましょう。
<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>
前の例では、タイトル テキストは、プレゼンテーション内のすべての関連スライドに対して上記の書式設定に従って設定されています。
SlideMaster クラスの使用
次の Open XML SDK コード サンプルに示すように、 SlideMaster クラスのすべてのインスタンスは、PresentationML プレゼンテーション ファイル パッケージの必要な部分の 1 つであるスライド マスター パーツを表す SlideMasterPart クラスのインスタンスに関連付けられます。 各 SlideMaster クラス インスタンスは、 SlideLayout クラスと Slide クラスのインスタンスにも関連付けられている必要があります。このインスタンスは、 SlideLayoutPart クラスと SlidePart クラスで表される、同様の名前の必要なプレゼンテーション パーツに関連付けられます。
したがって、<sldMaster/>要素を表す SlideMaster クラスは、<sldMaster/> 要素の子要素を表す一連の他のクラスにも関連付けられます。 次のコード サンプルに示すように、これらのクラスの中には、 CommonSlideData クラス、 ColorMap クラス、 ShapeTree クラス、 Shape クラスがあります。
Open XML SDK コード例
記事「方法: ファイル名を指定してプレゼンテーション ドキュメントを作成する」の次のメソッドは、新しいスライド マスター パーツを既存のプレゼンテーションに追加し、新しいスライド マスター パーツに Open XML SDK SlideMaster クラスのインスタンスを作成します。
SlideMaster クラス コンストラクターは、CommonSlideData クラスとColorMap、SlideLayoutIdList、および TextStyles クラスのインスタンスを作成します。
CommonSlideData クラス コンストラクターは、ShapeTree クラスのインスタンスを作成します。そのコンストラクターによって、NonVisualGroupShapeProperties クラスのインスタンス、GroupShapeProperties クラスのインスタンス、Shape クラスのインスタンスなどの追加のクラス インスタンスが作成されます。
コード内の 文字 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;
}