配布資料マスター スライドを操作する

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

PresentationML の配布資料マスター スライド

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

この要素は、配布資料マスター スライドのインスタンスを指定するものです。 配布資料マスター スライド内には、配布資料スライド内のすべてのオブジェクトおよびオブジェクトに対応する書式設定を記述するすべての要素が含まれます。 配布資料マスター スライド内の cSld 要素は、図形および図形に添付されるテキスト本体などの、一般的な要素を指定します。 配布資料マスター スライド内には他のプロパティもありますが、cSld で handoutMaster スライドの本来の目的はほぼ達成されます。

© ISO/IEC29500: 2008.

次の表は、配布資料マスター <スライドを操作するときに使用される handoutMaster> 要素の子要素と、それに対応する Open XML SDK クラスの一覧です。

PresentationML 要素 Open XML SDK クラス
<clrMap> ColorMap
<cSld> CommonSlideData
<extLst> ExtensionListWithModification
<hf> HeaderFooter

OPEN XML SDK HandoutMaster クラス

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

HandoutMaster クラスに一般的に関連しているクラスについて、以下のセクションに示します。

ColorMap クラス

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

この要素は、配色定義を別の配色定義に変換するマッピング レイヤーを指定するものです。 各属性は、このマスター内で参照できる色の名前を表し、その値がテーマ内の対応する色になります。

: スライド マスターに適用される次の色マッピングを考察してください。

<p:clrMap bg1="dk1" tx1="lt1" bg2="dk2" tx2="lt2" accent1="accent1"  
accent2="accent2" accent3="accent3" accent4="accent4"
accent5="accent5"  
accent6="accent6" hlink="hlink" folHlink="folHlink"/>

CommonSlideData クラス

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

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

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

ExtensionListWithModification クラス

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

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

注:

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

HeaderFooter クラス

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

この要素は、スライドのヘッダーおよびフッター情報を指定します。 ヘッダーおよびフッターは、日時、スライド番号、ユーザー設定のヘッダーおよびフッター テキストなど、すべてのスライドおよびスライドの種類で一貫している必要がある、テキストのプレースホルダーで構成されています。

HandoutMaster クラスの使用

以下の Open XML SDK コード例に示すように、HandoutMaster クラスのインスタンスは HandoutMasterPart クラスのインスタンスに関連付けられます。これは、配布資料マスター パーツを表すものです。このパーツは、PresentationML プレゼンテーション ファイル パッケージのパーツの 1 つであり、配布資料が含まれるプレゼンテーション ファイルに必須のパーツです。

そのため、<handoutMaster> 要素を表す HandoutMaster クラスは、<handoutMaster> 要素の子要素を表す一連の他のクラスと関連付けられています。 これらのクラスには、次のコード サンプルに示すように、CommonSlideData クラス、ColorMapクラス、ShapeTree クラス、Shape クラスが含まれます。

Open XML SDK コード例

次のメソッドは、新しい配布資料マスター パーツを既存のプレゼンテーションに追加し、新しい配布資料マスター パーツに Open XML SDKHandoutMaster クラスのインスタンスを作成します。 HandoutMaster クラスのコンストラクターは、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 D = DocumentFormat.OpenXml.Drawing;
using P = DocumentFormat.OpenXml.Presentation;

static HandoutMasterPart CreateHandoutMasterPart(PresentationPart presentationPart)
{
    HandoutMasterPart handoutMasterPart1 = presentationPart.AddNewPart<HandoutMasterPart>("rId3");
    handoutMasterPart1.HandoutMaster = new HandoutMaster(
                    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 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
                            });

    return handoutMasterPart1;
}