次の方法で共有


プレゼンテーション スライドを操作する

このトピックでは、Open XML SDK for Office Slide クラスと、Open XML ファイル形式 PresentationML スキーマとの関係について説明します。 PresentationML ドキュメントを構成するパーツと要素の全体的な構造の詳細については、「 PresentationML ドキュメントの構造」を参照してください。


PresentationML でのプレゼンテーション スライド

ISO/IEC 29500 仕様で、Open XML PresentationML の PresentationML ドキュメントの配布資料マスター スライドを表すための <sld/> 要素は、次のように記述されています。

この要素は、スライド リスト内の特定のスライドを指定するものです。 スライド リストは、スライドの順序を指定するために使われます。

例: 次の目的別スライド ショーでスライドの順序を考察してください。

<p:custShowLst>  
    <p:custShow name="Custom Show 1" id="0">  
        <p:sldLst>  
            <p:sld r:id="rId4"/>  
            <p:sld r:id="rId3"/>  
            <p:sld r:id="rId2"/>  
            <p:sld r:id="rId5"/>  
        </p:sldLst>  
    </p:custShow>  
</p:custShowLst>

上の例で、スライドを表示する順序は、スライド 4 の後、3、2、そして最後が 5 となります。

© ISO/IEC 29500: 2016

<sld/> 要素は PresentationML スライド パーツのルート要素です。 PresentationML ドキュメントを構成するパーツや要素の全体構造の詳細については、「PresentationML ドキュメントの構造」を参照してください。

次の表は、プレゼンテーション スライドを操作するときに使用される <sld/> 要素の子要素と、それらに対応する Open XML SDK クラスの一覧です。

PresentationML 要素 Open XML SDK クラス
<clrMapOvr /> ColorMapOverride
<cSld /> CommonSlideData
<extLst /> ExtensionListWithModification
<timing /> Timing
<transition /> Transition

XML SDK スライド クラスを開く

Open XML SDK Slide クラスは、PresentationML ドキュメントの Open XML ファイル形式スキーマで定義されている <sld/> 要素を表します。 PresentationML ドキュメント内の個々の<sld/>要素を操作するには、Slide オブジェクトを使用します。

Slide クラスに一般的に関連付けられているクラスを次のセクションに示します。

ColorMapOverride クラス

ColorMapOverride クラスは、<clrMapOvr/> 要素に対応します。 ISO/IEC 29500 仕様の次の情報では、<clrMapOvr/>要素について説明します。

この要素は、<ClrMap/> 要素内で設定されている配色を変更するメカニズムを提供します。 <masterClrMapping/> 子要素が存在する場合は、マスターによって定義される配色が使用されます。 <overrideClrMapping/> 子要素が存在する場合は、親ノート スライド、プレゼンテーションのスライド、またはスライドのレイアウトに固有の新しい配色が定義されます。

© ISO/IEC 29500: 2016

CommonSlideData クラス

CommonSlideData クラスは、<cSld/> 要素に対応します。 ISO/IEC 29500 仕様の次の情報では、<cSld/>要素について説明します。

この要素は、すべてのスライドの種類に関連する、スライド情報の種類のコンテナーを指定します。 すべてのスライドは、スライドの種類に依存しないプロパティの共通セットを共有します。特定のスライドのこれらのプロパティの説明は、スライドの <cSld/> コンテナー内に格納されます。 親要素によって示されるスライドの種類に固有のスライド データは、別の場所に保存されます。

<cSld/> の実際のデータには、特定の親スライドだけが記述されています。保存されているのは、すべてのスライドに共通する情報の種類だけです。

© ISO/IEC 29500: 2016

ExtensionListWithModification クラス

ExtensionListWithModification クラスは、<extLst/> 要素に対応します。 以下の情報を参照してください。

ISO/IEC 29500

specification では、 <extLst/> 要素が導入されています。

要素タイプ <ext/> のすべての将来的な拡張が定義された、修正可能な拡張リストを指定します。 拡張リストは、対応する将来的な拡張と共に、PresentationML フレームワークの格納能力を拡張するために使用されます。 これにより、さまざまな新たな種類のデータをこのフレームワークにネイティブに格納できます。

[注: この extLst 要素を使用すると、生成するアプリケーションは、この拡張プロパティが変更されたかどうかを格納できます。 注の終了]

© ISO/IEC 29500: 2016

Timing クラス

Timing クラスは、<timing/> 要素に対応します。 ISO/IEC 29500 仕様の次の情報では、<timing/>要素について説明します。

この要素は、対応するスライド内ですべてのアニメーションおよび時間指定イベントを処理するためのタイミング情報を指定します。 この情報は、<timing/> 要素内の時間ノードによって追跡されます。 時間ノードの仕様とその定義方法の詳細は、PresentationML フレームワークのアニメーション セクションで確認できます。

© ISO/IEC 29500: 2016

Transition クラス

Transition クラスは、<transition/> 要素に対応します。 ISO/IEC 29500 仕様の次の情報では、<transition/>要素について説明します。

この要素は、1 つ前のスライドから現在のスライドに切り替えるときに使用する画面切り替えを指定するものです。 つまり、切り替え情報は切り替え完了後に表示されるスライドに格納されます。

© ISO/IEC 29500: 2016


Slide クラスの使用

次の Open XML SDK コード例に示すように、 Slide クラスのすべてのインスタンスは、PresentationML プレゼンテーション ファイル パッケージの必要な部分の 1 つであるスライド パーツを表す SlidePart クラスのインスタンスに関連付けられます。 Slide クラスの各インスタンスは、SlideLayout クラスとSlideMaster クラスのインスタンスにも関連付けられている必要があります。これは、SlideLayoutPart クラスとSlideMasterPart クラスで表される、同様の名前の必要なプレゼンテーション パーツに関連付けられます。

したがって、<sld/>要素を表す Slide クラスは、<sld/> 要素の子要素を表す一連の他のクラスにも関連付けられます。 次のコード例に示すように、これらのクラスの中には、 CommonSlideData クラス、 ColorMapOverride クラス、 ShapeTree クラス、および Shape クラスがあります。


Open XML SDK コード例

記事「 方法: ファイル名を指定してプレゼンテーション ドキュメントを作成する」 の次のメソッドは、既存のプレゼンテーションに新しいスライド パーツを追加し、新しいスライド パーツに Open XML SDK Slide クラスのインスタンスを作成します。 Slide クラス コンストラクターは、CommonSlideData クラスと ColorMapOverride クラスのインスタンスを作成します。 CommonSlideData クラス コンストラクターは、ShapeTree クラスのインスタンスを作成します。そのコンストラクターによって、NonVisualGroupShapeProperties クラスのインスタンス、GroupShapeProperties クラス、Shape クラスの追加のクラス インスタンスが作成されます。

新しいスライドを表現するのに必要な最小限の XML 要素を作成するために、これらのクラス インスタンスと、<sld/> 要素の子要素を表すクラスのインスタンスが必要になります。

コード内の 文字 P で表される名前空間は、 名前空間です。

static SlidePart CreateSlidePart(PresentationPart presentationPart)
{
    SlidePart slidePart1 = presentationPart.AddNewPart<SlidePart>("rId2");
    slidePart1.Slide = new Slide(
            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 1" },
                            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() { Language = "en-US" }))))),
            new ColorMapOverride(new MasterColorMapping()));
    return slidePart1;
}

図形ツリーに別の図形を追加するため、スライドに、次のコードを含む追加のパラメーターを ShapeTree コンストラクターに渡して、2 つ目のShape オブジェクトをインスタンス化します。

new P.Shape(
    new P.NonVisualShapeProperties(
        new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "Title 1" },
        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() { Language = "en-US" }))))),

生成される PresentationML

このメソッドの Open XML SDK コードを実行すると、コード内で参照されている PresentationML ドキュメント ファイルに次の XML コードが書き込まれます。

    <?xml version="1.0" encoding="utf-8" ?> 
    <p:sld 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="Title 1" /> 
              <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 lang="en-US" /> 
          </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:sld>

関連項目

Open XML SDK for Office について

[方法] プレゼンテーションに新しいスライドを挿入する

[方法] プレゼンテーションからスライドを削除する

[方法] プレゼンテーション ドキュメント内のスライドの数を取得する

[方法] プレゼンテーションにテーマを適用する

方法: ファイル名を指定してプレゼンテーション ドキュメントを作成する