このトピックでは、Open XML SDK for Office Presentation クラスと、Open XML ファイル形式 PresentationML スキーマとの関係について説明します。 PresentationML ドキュメントを構成するパーツと要素の全体的な構造の詳細については、「 PresentationML ドキュメントの構造」を参照してください。
PresentationML でのプレゼンテーション
ISO/IEC 29500 の仕様には、PresentationML ドキュメント内のプレゼンテーションを表す Open XML の PresentationML <presentation/> 要素について、次のように記述されています。
この要素は、プレゼンテーション全体に影響する基本的なプロパティを指定します。
例: 単一のスライド マスターと 2 つのスライドを含む次のプレゼンテーションについて考えてみましょう。 よく使用されるこれらの要素に加えて、スライドのサイズ、ノートのサイズ、および既定のテキスト スタイルなど、その他のプロパティも指定できます。
<p:presentation xmlns:a="" xmlns:r="" xmlns:p="">
<p:sldMasterIdLst>
<p:sldMasterId id="2147483648" r:id="rId1">
</p:sldMasterIdLst>
<p:sldIdLst>
<p:sldId id="256" r:id="rId3"/>
<p:sldId id="257" r:id="rId4"/>
</p:sldIdLst>
<p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
<p:notesSz cx="6858000" cy="9144000"/>
<p:defaultTextStyle>
…
</p:defaultTextStyle>
</p:presentation>
© ISO/IEC 29500: 2016
一般に、<presentation/> 要素には、プレゼンテーションに含まれるスライド マスター、スライド、および目的別スライド ショーをリストする子要素が含まれます。 また、スライドのサイズ、ノートのサイズ、既定のテキスト スタイルなど、プレゼンテーションの他のプロパティを指定する要素も含まれます。
<presentation/> 要素は、PresentationML のプレゼンテーション パーツのルート要素です。 PresentationML ドキュメントを構成するパーツと要素の全体的な構造の詳細については、「PresentationML ドキュメントの構造」を参照してください。
次の表は、プレゼンテーションとそれらに対応する Open XML SDK クラスを操作するときに使用される <presentation/> 要素の最も一般的な子要素の一部を示しています。
| PresentationML 要素 | Open XML SDK クラス |
|---|---|
<sldMasterIdLst/> |
SlideMasterIdList |
<sldMasterId/> |
SlideMasterId |
<sldIdLst/> |
SlideIdList |
<sldId/> |
SlideId |
<notesMasterIdLst/> |
NotesMasterIdList |
<handoutMasterIdLst/> |
SlideMasterIdList |
<custShowLst/> |
CustomShowList |
<sldSz/> |
SlideSize |
<notesSz/> |
<xrefDocumentFormat.OpenXml.Presentation.NotesSize> |
<defaultTextStyle/> |
DefaultTextStyle |
OPEN XML SDK プレゼンテーション クラス
Open XML SDK Presentation クラスは、PresentationML ドキュメントの Open XML ファイル形式スキーマで定義されている <presentation/> 要素を表します。 PresentationML ドキュメント内の個々の<presentation/>要素を操作するには、Presentation クラスを使用します。
Presentation クラスに一般的に関連付けられているクラスを次のセクションに示します。
SlideMasterIdList クラス
同じマスターを共有するすべてのスライドは、そのマスターから同じレイアウトを継承します。
SlideMasterIdList クラスは、<sldMasterIdList/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメント内のスライド マスター ID リストを表すために使用される Open XML PresentationML <sldMasterIdList/> 要素について次のように説明します。
この要素は、対応するプレゼンテーション内で使用できるスライド マスター スライドの ID 情報のリストを指定します。 スライド マスターは、関連するすべての子レイアウト スライドのテンプレートとして特別に設計されたスライドです。
© ISO/IEC 29500: 2016
SlideMasterId クラス
SlideMasterId クラスは、<sldMasterId/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメント内のスライド マスター ID を表すために使用される Open XML PresentationML <sldMasterId/> 要素について次のように説明します。
この要素は、対応するプレゼンテーション内で使用できるスライド マスターを指定します。 スライド マスターは、関連するすべての子レイアウト スライドのテンプレートとして特別に設計されたスライドです。
例: プレゼンテーション内のスライド マスターの次のような指定について考えてみます
<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">
…
<p:sldMasterIdLst>
<p:sldMasterId id="2147483648" r:id="rId1"/>
</p:sldMasterIdLst>
…
</p:presentation>
© ISO/IEC 29500: 2016
SlideIdList クラス
SlideIdList クラスは、<sldIdLst/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメント内のスライド ID リストを表すために使用される Open XML PresentationML <sldIdLst/>要素について次のように記述されています。
この要素は、対応するプレゼンテーション内で使用できるスライドの ID 情報のリストを指定します。 スライドには、スライド固有の図形とテキストの情報など、単一のスライドに固有の情報が含まれます。
© ISO/IEC 29500: 2016
SlideId クラス
SlideId クラスは、<sldId/> 要素に対応します。
ISO/IEC 29500 の仕様では、PresentationML ドキュメントのスライド ID を表すために使用される Open XML PresentationML <sldId/> 要素について次のように記述されています。
この要素は、対応するプレゼンテーション内で使用できるプレゼンテーションのスライドを指定します。 スライドには、スライド固有の図形とテキストの情報など、単一のスライドに固有の情報が含まれます。
例: プレゼンテーション内のスライド マスターの次のような指定について考えてみます
<p:presentation xmlns:a="" xmlns:r="" xmlns:p="" embedTrueTypeFonts="1">
…
<p:sldIdLst>
<p:sldId id="256" r:id="rId3"/>
<p:sldId id="257" r:id="rId4"/>
<p:sldId id="258" r:id="rId5"/>
<p:sldId id="259" r:id="rId6"/>
<p:sldId id="260" r:id="rId7"/>
</p:sldIdLst>
...
</p:presentation>
© ISO/IEC 29500: 2016
NotesMasterIdList クラス
NotesMasterIdList クラスは、<notesMasterIdLst/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメントのノート マスター ID リストを表すために使用される Open XML PresentationML <notesMasterIdLst/>要素について次のように記述されています。
この要素は、対応するプレゼンテーション内で使用できるノート マスター スライドの ID 情報のリストを指定します。 ノート マスターは、添付されたノートと共に印刷できるように特別に設計されたスライドです。
© ISO/IEC 29500: 2016
HandoutMasterIdList クラス
HandoutMasterIdList クラスは、<handoutMasterIdLst/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメントの配布資料マスター ID リストを表すために使用される Open XML PresentationML <handoutMasterIdLst/> 要素について次のように記述されています。
この要素は、対応するプレゼンテーション内で使用できる配布資料マスター スライドの ID 情報のリストを指定します。 配布資料マスターは、配布資料として印刷できるように特別に設計されたスライドです。
© ISO/IEC 29500: 2016
CustomShowList クラス
CustomShowList クラスは、<custShowLst/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメントのカスタム ショー リストを表すために使用される Open XML PresentationML <custShowLst/> 要素について、次のように説明します。
この要素は、対応するプレゼンテーション内で使用できるすべての目的別スライド ショーのリストを指定します。 目的別スライド ショーは、プレゼンテーションに関するスライドを任意の順序で表示できる定義済みのスライド シーケンスです。
© ISO/IEC 29500: 2016
SlideSize クラス
SlideSize クラスは、<sldSz/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメント内のプレゼンテーション スライド サイズを表すために使用される Open XML PresentationML <sldSz/> 要素について次のように説明します。
この要素は、プレゼンテーションのスライド面のサイズを指定します。 プレゼンテーションのスライド内のオブジェクトは、これらの範囲の外側に指定できますが、これは、スライドを表示または印刷するときに表示される背景面のサイズです。
例: プレゼンテーションのスライドのサイズを次のように指定してみます
<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">
…
<p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
…
</p:presentation>
© ISO/IEC 29500: 2016
NotesSize クラス
NotesSize クラスは、<notesSz/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメントのノート スライド サイズを表すために使用される Open XML PresentationML <notesSz/> 要素について次のように説明します。
この要素は、ノートと配布資料のスライドに使用するスライド面のサイズを指定します。 ノート スライド内のオブジェクトは、これらの範囲の外側に指定できますが、ノート スライドには、表示または印刷するときに、指定されたサイズの背景面が使用されます。 この要素は、アウトライン配布資料などの特殊な印刷形式がアプリケーションで選択された場合に、コンテンツを適合させる領域を指定することを目的としたものです。
例: ノート スライドのサイズを次のように指定してみます
<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">
…
<p:notesSz cx="9144000" cy="6858000"/>
…
</p:presentation>
© ISO/IEC 29500: 2016
DefaultTextStyle クラス
DefaultTextStyle クラスは、<defaultTextStyle/> 要素に対応します。
ISO/IEC 29500 仕様では、PresentationML ドキュメントの既定のテキスト スタイルを表すために使用される Open XML PresentationML <defaultTextStyle/> 要素について次のように説明します。
この要素は、プレゼンテーション内で使用する既定のテキスト スタイルを指定します。 ここで定義するテキスト スタイルは、新規で挿入するスライドがマスター スライドに関連付けられていない場合や、プレゼンテーションのスライド内のテキスト用に別途スタイル情報が指定されていない場合に参照できます。
© ISO/IEC 29500: 2016
Presentation クラスの使用
次の Open XML SDK コード例に示すように、 Presentation クラスのすべてのインスタンスは、PresentationML プレゼンテーション ファイル パッケージの必要な部分の 1 つであるプレゼンテーション パーツを表す PresentationPart クラスのインスタンスに関連付けられます。
したがって、<presentation/>要素を表す Presentation クラスは、<presentation/> 要素の子要素を表す一連の他のクラスにも関連付けられます。 次のコード例に示すように、これらのクラスの中には、 SlideMasterIdList、 SlideIdList、 SlideSize、 NotesSize、および DefaultTextStyle クラスがあります。
Open XML SDK コード例
ファイル名を指定してプレゼンテーション ドキュメントを作成する方法に関する記事の次のコード例では、Open XML SDK の PresentationDocument クラスの Create メソッドを使用して、指定した名前とファイル パスを持つ同じクラスのインスタンスを作成します。 次に、 AddPresentationPart メソッドを使用して、 PresentationPart クラスのインスタンスをドキュメント ファイルに追加します。 次に、プレゼンテーションを表す Presentation クラスのインスタンスを作成します。
PresentationPart クラス インスタンスへの参照を CreatePresentationParts プロシージャに渡します。これにより、プレゼンテーション ファイルの他の必要な部分が作成されます。
CreatePresentation プロシージャは、前に開いたPresentationDocument クラス インスタンスを閉じてクリーンアップします。
CreatePresentationParts プロシージャは、SlideMasterIdList、SlideIdList、SlideSize、NotesSize、および DefaultTextStyle クラスのインスタンスを作成し、プレゼンテーションに追加します。
static void CreatePresentation(string filepath)
{
// Create a presentation at a specified file path. The presentation document type is pptx, by default.
using (PresentationDocument presentationDoc = PresentationDocument.Create(filepath, PresentationDocumentType.Presentation))
{
PresentationPart presentationPart = presentationDoc.AddPresentationPart();
presentationPart.Presentation = new Presentation();
CreatePresentationParts(presentationPart);
}
}
static void CreatePresentationParts(PresentationPart presentationPart)
{
SlideMasterIdList slideMasterIdList1 = new SlideMasterIdList(new SlideMasterId() { Id = (UInt32Value)2147483648U, RelationshipId = "rId1" });
SlideIdList slideIdList1 = new SlideIdList(new SlideId() { Id = (UInt32Value)256U, RelationshipId = "rId2" });
SlideSize slideSize1 = new SlideSize() { Cx = 9144000, Cy = 6858000, Type = SlideSizeValues.Screen4x3 };
NotesSize notesSize1 = new NotesSize() { Cx = 6858000, Cy = 9144000 };
DefaultTextStyle defaultTextStyle1 = new DefaultTextStyle();
presentationPart.Presentation.Append(slideMasterIdList1, slideIdList1, slideSize1, notesSize1, defaultTextStyle1);
SlidePart slidePart1;
SlideLayoutPart slideLayoutPart1;
SlideMasterPart slideMasterPart1;
ThemePart themePart1;
slidePart1 = CreateSlidePart(presentationPart);
slideLayoutPart1 = CreateSlideLayoutPart(slidePart1);
string slideLayoutPart1RelId = slidePart1.GetIdOfPart(slideLayoutPart1);
slideMasterPart1 = CreateSlideMasterPart(slideLayoutPart1);
themePart1 = CreateTheme(slideMasterPart1);
slideMasterPart1.AddPart(slideLayoutPart1, "rId1");
presentationPart.AddPart(slideMasterPart1, "rId1");
presentationPart.AddPart(themePart1, "rId5");
}
結果の PresentationML
この Open XML SDK コードを実行すると、コード内で参照している PresentationML ドキュメントに次の XML が書き込まれます。
<?xml version="1.0" encoding="utf-8" ?>
<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
<p:sldMasterIdLst>
<p:sldMasterId id="2147483648" r:id="rId1" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
</p:sldMasterIdLst>
<p:sldIdLst>
<p:sldId id="256" r:id="rId2" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
</p:sldIdLst>
<p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
<p:notesSz cx="6858000" cy="9144000"/>
<p:defaultTextStyle/>
</p:presentation>
関連項目
方法: ファイル名を指定してプレゼンテーション ドキュメントを作成する