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