ノート スライドを操作する

このトピックでは、Open XML SDK for Office NotesSlide クラスと、Open XML ファイル形式 PresentationML スキーマとの関係について説明します。


PresentationML 内のノート スライド

ISO/IEC 29500 の仕様には、PresentationML ドキュメント内のノート スライドを表す Open XML PresentationML の <notes> 要素のことが次のように説明されています。

この要素は、ノート スライドが存在することと共に、対応するデータを指定します。 ノート スライドには、すべての共通スライド要素と、ノート要素に固有の追加プロパティが含まれます。

: 次の PresentationML ノート スライドについて考えます。

<p:notes>  
    <p:cSld>  
        …  
    </p:cSld>  
    …  
</p:notes>

上の例で notes 要素は、ノート スライドとそのすべての部分の存在を指定しています。 cSld 要素に注目してください。これは、任意のスライド タイプに出現可能な一般的要素を指定します。そして、このノート スライドのための一般的でない付加的なプロパティは、任意の要素で指定されます。

© ISO/IEC29500: 2008.

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

次の表は、ノート スライドを操作するときに使用される notes> 要素の子要素<と、それらに対応する Open XML SDK クラスの一覧です。

PresentationML 要素 Open XML SDK クラス
<clrMapOvr> ColorMapOverride
<cSld> CommonSlideData
<extLst> ExtensionListWithModification

ISO/IEC 29500 の仕様に記載されている以下の表は、<notes> 要素の属性を示しています。

属性 説明
showMasterPhAnim (マスター プレースホルダー アニメーションの表示) マスター スライドからプレースホルダーにアニメーションを表示するかどうかを指定します。
この属性に指定できる値は、W3C XML スキーマの boolean データ型で定義されます。
showMasterSp (マスター図形の表示) マスター スライド上の図形をスライドに表示するかどうかを指定します。
この属性で使用できる値は、W3C XML スキーマの boolean データ型で定義されています。

© ISO/IEC29500: 2008.


OPEN XML SDK NotesSlide クラス

Open XML SDK の NotesSlide クラスは、Open XML ファイル形式のスキーマで規定されている PresentationML ドキュメント用の <noted> 要素を表します。 NotesSlide クラスを使用して、PresentationML ドキュメント内の個々の <notes> 要素を操作します。

<notes> 要素の子要素を表すため、NotesSlide クラスに一般に関連付けられるクラスを、次に示します。

ColorMapOverride クラス

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

この要素は、<ClrMap> 要素内に一覧表示される配色を上書きするメカニズムを提供します。 <masterClrMapping> 子要素が存在する場合、マスターによって定義された配色を使用します。 <overrideClrMapping> 子要素が存在する場合、親ノート スライド、プレゼンテーション スライド、スライドのレイアウトなどに特定の新しい配色を定義します。

© ISO/IEC29500: 2008.

CommonSlideData クラス

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

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

<cSld> 内の実際のデータは、特定の親スライドだけを記述します。ここにはすべてのスライドに共通の情報のタイプだけが格納されます。

© ISO/IEC29500: 2008.

ExtensionListWithModification クラス

ExtensionListWithModification クラスは、<extLst> 要素に対応します。 ISO/IEC 29500 の仕様に記載されている次の情報は、<extLst> 要素について説明しています。

この要素は、要素の種類 <ext> の将来の拡張機能すべてが定義されている、修正機能を備えた拡張情報リストを指定します。 拡張情報リストおよび対応する将来の拡張機能を使用して、PresentationML フレームワークのストレージ機能を拡張します。 これにより、さまざまな新たな種類のデータをこのフレームワークにネイティブに格納できます。

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

© ISO/IEC29500: 2008.


NotesSlide クラスを操作する

以下の Open XML SDK コード例に示すように、NotesSlide クラスのインスタンスは NotesSlidePart クラスのインスタンスに関連付けられます。これは、ノート スライド パーツを表すものです。これは、PresentationML プレゼンテーション ファイル パッケージのパーツの 1 つであり、プレゼンテーション ファイル内の各ノート スライドに必須のパーツです。 また、各 NotesSlide クラス インスタンスは、NotesMaster クラスのインスタンスに関連付けられる場合もあります。そしてそれは、NotesMasterPart クラスによって表される類似の名前のプレゼンテーション パーツに関連付けられています。

そのため、<notes> 要素を表す NotesSlide クラスは、<notes> 要素の子要素を表す一連の他のクラスと関連付けられています。 次のコード例に示されているように、これらのクラスには、CommonSlideData クラスと ColorMapOverride クラスが含まれます。 ShapeTree クラスと Shape クラスは、CommonSlideData クラスに関連付けられています。


Open XML SDK コード例

次のメソッドは、新しいノート スライド パーツを既存のプレゼンテーションに追加し、新しいノート スライド パーツに Open XML SDKNotesSlide クラスのインスタンスを作成します。 NotesSlide クラスのコンストラクターは、CommonSlideData クラスおよび ColorMap クラスのインスタンスを作成します。 CommonSlideData クラス コンストラクターは、ShapeTree クラスのインスタンスを作成しますが、そのクラスのコンストラクターは、さらに次に示すクラスのインスタンスを作成します。NonVisualGroupShapeProperties クラスのインスタンス、GroupShapeProperties クラスのインスタンス、Shape クラスのインスタンス。

コード内の文字 P が表す名前空間は DocumentFormat.OpenXml.Presentation 名前空間です。

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

static NotesSlidePart CreateNotesSlidePart(SlidePart slidePart1)
{
    NotesSlidePart notesSlidePart1 = slidePart1.AddNewPart<NotesSlidePart>("rId6");
    NotesSlide notesSlide = new NotesSlide(
    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()));
    notesSlidePart1.NotesSlide = notesSlide;
    return notesSlidePart1;
}

生成された PresentationML

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

    <?xml version="1.0" encoding="utf-8"?>
    <p:notes xmlns:p="https://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="https://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="https://schemas.openxmlformats.org/drawingml/2006/main" />
              </p:cNvSpPr>
              <p:nvPr>
                <p:ph />
              </p:nvPr>
            </p:nvSpPr>
            <p:spPr />
            <p:txBody>
              <a:bodyPr xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:lstStyle xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:p xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main">
                <a:endParaRPr />
              </a:p>
            </p:txBody>
          </p:sp>
        </p:spTree>
      </p:cSld>
      <p:clrMapOvr>
        <a:masterClrMapping xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
      </p:clrMapOvr>
    </p:notes>

関連項目

Open XML SDK for Office について

[方法] ファイル名を指定してプレゼンテーションを作成する

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

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

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