コメントを操作する
このトピックでは、Open XML SDK for Office Comment クラスと、Open XML ファイル形式 PresentationML スキーマとの関係について説明します。 PresentationML ドキュメントを構成するパーツと要素の全体的な構造の詳細については、「PresentationML ドキュメントの構造」を参照してください。
PresentationML 内のコメント
ISO/IEC 29500 仕様には、Open XML PresentationML フレームワークの Comments セクションについて次のように書かれています。
コメントはスライドに付加されるテキスト注釈で、その主な目的はプレゼンテーションの読み手にプレゼンテーション作成者へのフィードバックを提供することを可能にすることです。 各コメントは書式設定されていないテキスト文字列およびその作成者に関する情報を含み、スライド上の特定の位置に付加されます。 コメントはプレゼンテーションの編集中は見ることができますが、スライド ショーには表示されません。 表示アプリケーションは、コメントをいつ表示するか、およびコメントの見た目を決定します。
ISO/IEC 29500 仕様には、Open XML PresentationML の <cm/>
要素 (PresentationML ドキュメントでコメントを表すために使用する要素) について次のように書かれています。
この要素は、スライドに付加される単一のコメントを指定します。 これはコメントのテキスト、スライド上でのコメントの位置、および作成者に関する属性と日付を含みます。
例:
<p:cm authorId="0" dt="2006-08-28T17:26:44.129" idx="1">
<p:pos x="10" y="10"/>
<p:text\>Add diagram to clarify.</p:text>
</p:cm>
次の表は、コメントを操作するときに使用される <cm/>
要素の子要素と、それらに対応する Open XML SDK クラスの一覧です。
PresentationML 要素 | Open XML SDK クラス |
---|---|
<extLst/> |
ExtensionListWithModification |
<pos/> |
Position |
<text/> |
Text |
ISO/IEC 29500 の仕様に記載されている以下の表は、<cm/>
要素の属性です。
属性 | 説明 |
---|---|
authorId | コメントの作成者を示します。これは、ドキュメントのコメント作成者リストに含まれる作成者の ID を参照します。 この属性に使用できる値は、W3C XML スキーマ unsignedInt データ型によって定義されます。 |
dt | このコメントが最後に変更された日付と時刻を示します。 この属性に使用できる値は、W3C XML スキーマ datetime データ型によって定義されます。 |
idx | このドキュメントのこの作成者による全コメントのリスト内において一意である、このコメントの識別子を示します。 各作成者がドキュメント内に作成した最初のコメントにインデックス 1 が付与されます。 注: インデックスはコメント作成者に対してのみ一意であるため、ドキュメントには、異なる作成者によって作成された同じインデックスを持つ複数のコメントを含めることができます。 この属性に指定できる値は、ST_Index 単純型によって定義されます (§19.7.3)。 |
OPEN XML SDK コメント クラス
OXML SDK Comment
クラスは、PresentationML ドキュメントの Open XML ファイル形式スキーマで定義されている <cm/>
要素を表します。 PresentationML ドキュメント内の個々の<cm/>
要素を操作するには、Comment
クラスを使用します。
<cm/>
要素の子要素を表すクラス、したがって一般的に Comment
クラスに関連付けられているクラスを次の一覧に示します。
ExtensionListWithModification クラス
ExtensionListWithModification
クラスは、<extLst/>
element に対応します。
ISO/IEC 29500 仕様の次の情報では、<extLst/>
要素について説明します。
要素タイプ <ext/>
のすべての将来的な拡張が定義された、修正可能な拡張リストを指定します。 拡張リストは、対応する将来的な拡張と共に、PresentationML フレームワークの格納能力を拡張するために使用されます。 これにより、さまざまな新たな種類のデータをこのフレームワークにネイティブに格納できます。
注:
この extLst
要素を使用すると、生成するアプリケーションは、この拡張プロパティが変更されたかどうかを格納できます。 メモの終了
Position クラス
Position
クラスは、<pos/>
element に対応します。
ISO/IEC 29500 仕様の次の情報では、<pos/>
要素について説明します。
この要素は、スライド面上のコメントの配置に関する位置情報を指定します。 生成元アプリケーションの LTR バージョンでは、この位置情報はコメント領域の左上隅を指します。 生成元アプリケーションの RTL バージョンでは、この位置情報はコメント領域の右上隅を指します。
[メモ: スライド面上のアンカー位置は、レイアウトの種類が "右から左" または "左から右" に変更されても移動しません。 つまり、アンカー位置はどの言語バージョンを使用する場合も固定です。 メモの終わり]
[メモ: コメントにはサイズや書式の指定はないため、コメントを表示するために使用されるこの UI ウィジェットはコメントの長さによってサイズが変わり、コメント領域の右下隅の位置は表示元アプリケーションでコメントの表示用に選択された設定によって決定されます。 メモの終わり]
[例: <p:pos x="1426" y="660"/> 例の終わり]
Text クラス
Text
クラスは、<text/>
要素に対応します。
ISO/IEC 29500 仕様の次の情報では、<text/>
要素について説明します。
この要素は、コメントの内容を指定します。 これは、作成者がスライドに付けた注釈テキストです。
この要素に使用できる値は、W3C XML スキーマ string
データ型によって定義されます。
Comment クラスの操作
コメントはスライドに付加されるテキスト注釈で、その主な目的はプレゼンテーションの読み手にプレゼンテーション作成者へのフィードバックを提供することを可能にすることです。 各コメントは書式設定されていないテキスト文字列およびその作成者に関する情報を含み、スライド上の特定の位置に付加されます。 コメントはプレゼンテーションの編集中は見ることができますが、スライド ショーには表示されません。 表示アプリケーションは、コメントをいつ表示するか、およびコメントの見た目を決定します。
次の Open XML SDK コード サンプルに示すように、 Comment
クラスのすべてのインスタンスは、スライド コメント パーツ、PresentationML プレゼンテーション ファイル パッケージの部分の 1 つ、およびコメントを含むプレゼンテーション ファイル内の各スライドに必要な部分を表す、 SlideCommentsPart クラスのインスタンスに関連付けられます。 各 Comment
クラス インスタンスは、 CommentAuthor クラスのインスタンスにも関連付けられます。このインスタンスは、 CommentAuthorsPart クラスによって表される同様の名前のプレゼンテーション パーツに関連付けられます。 プレゼンテーションのコメント作成者は、 CommentAuthorList クラスで表されるコメント作成者リストで指定され、各スライドのコメントは、そのスライドのコメント リストに一覧表示され、 CommentList クラスによって表されます。
したがって、<cm/>
要素を表す Comment
クラスは、<cm/>
要素の子要素を表す他のクラスにも関連付けられます。 次のコード サンプルに示すように、これらのクラスの中には、スライドに対するコメントの位置を指定する Position
クラスと、コメントのテキスト コンテンツを指定する Text
クラスがあります。
Open XML SDK コード例
記事「 方法: プレゼンテーションのスライドにコメントを追加する 」の次のコード セグメントは、プレゼンテーション内の既存のスライドに新しいコメント パーツを追加し (スライドにコメントがまだ含まれていない場合)、スライド コメント パーツに Open XML SDK Comment
クラスのインスタンスを作成します。 また、 CommentList
クラスのインスタンスを作成してコメント パーツにコメント リストを追加します。まだ存在しない場合は、コメントに ID を割り当て、 Comment
クラスのインスタンスを作成してコメント リストにコメントを追加し、必要な属性値を割り当てます。 さらに、新しいComment
クラス インスタンスに関連付けられている Position
クラスとText
クラスのインスタンスを作成します。 完全なコード サンプルについては、前に示した記事を参照してください。