ビルディングブロック
ビルディングブロック
このガイドでは、.NET 用の Aspose.Words FOSS を使用して、ドキュメントの用語集ドキュメントに格納されている再利用可能なコンテンツビルディングブロックの読み取りと変更方法を示します。ライブラリは、Document.GlossaryDocument と BuildingBlock/BuildingBlockCollection オブジェクトモデルを通じて、AutoText エントリ、表紙ページ、ヘッダー、フッター、および同様の事前定義コンテンツを提供します。
用語集ドキュメント
すべての Document は GlossaryDocument を保持します — Document.GlossaryDocument でアクセス可能 — これはビルディングブロックを保持する DocumentBase のサブクラスです。その BuildingBlocks プロパティは BuildingBlockCollection を返し、FirstBuildingBlock/LastBuildingBlock がリストの末端への迅速なアクセスを提供します。GetBuildingBlock(gallery, category, name) を使用して特定のビルディングブロックを検索し、その BuildingBlockGallery、カテゴリ文字列、名前を組み合わせて一致させます。
ビルディングブロック構造
BuildingBlock は CompositeNode であり、したがって独自のコンテンツツリー — Sections(SectionCollection)、FirstSection、LastSection — を保持します。これは Document がセクションを保持するのと同じ方式です。そのメタデータプロパティはそれを識別・分類します:Name、Guid、Description、Category、Gallery(BuildingBlockGallery — AutoText、CoverPage、Headers、Footers、Tables、Watermarks、および多数の事前定義ギャラリー)、Type(BuildingBlockType)、および Behavior(BuildingBlockBehavior(Content、Paragraph、または Page のいずれか))で、挿入時にその内容がドキュメントにどのようにマージされるかを制御します。
ビルディングブロックコレクションの管理
BuildingBlockCollection は完全なコレクション編集をサポートします: Add(node)、Insert(index, node)、Remove(node)、RemoveAt(index)、Clear()、Contains(node)、および IndexOf(node)、さらに読み取り用に ToArray() と GetEnumerator() があります。NodeCollection であるため、ビルディングブロックはドキュメントツリーの他の部分と同じノード API を使用して構築、クローン、移動できます。
プレースホルダーテキスト ビルディングブロック
構造化ドキュメントタグは、ビルディングブロックをプレースホルダーコンテンツとして参照できます: StructuredDocumentTag.Placeholder と StructuredDocumentTagRangeStart.Placeholder は、タグが空のときに表示される BuildingBlock を、共有された IStructuredDocumentTag.Placeholder プロパティを介して返します。
ヒントとベストプラクティス
GetBuildingBlock(gallery, category, name)の 3 つの引数を注意深く合わせてください — 同じ名前が異なるギャラリーやカテゴリに存在する可能性があります。- 名前だけで全てのビルディングブロックを走査するのではなく、
BuildingBlockGalleryを使用して探している再利用可能コンテンツの種類(AutoText、CoverPage、Tables、Watermarksなど)をフィルタリングします。 BuildingBlockBehaviorは、挿入されたコンテンツが周囲のドキュメントとどのようにマージされるか(Content、Paragraph、またはPage)を決定します — ビルディングブロックが期待通りに挿入されると想定する前に、これを確認してください。BuildingBlockはCompositeNodeであるため、内容を構築または編集する際は他のノードサブツリーと同様に扱ってください —AppendChild、InsertAfter、および類似のノードメソッドがすべて適用されます。
よくある問題
| 問題 | 原因 | 修正 |
|---|---|---|
GetBuildingBlock() は何も返さない | ギャラリー、カテゴリ、または名前が既存のビルディングブロックと完全に一致しません | GlossaryDocument.BuildingBlocks を列挙して、正確な Gallery/Category/Name の組み合わせを見つけます |
| 挿入されたビルディングブロックのコンテンツが予期せずにマージされます | Behavior (Content/Paragraph/Page) は考慮されていません | 挿入する前にBuildingBlock.Behaviorを確認し、どのようにマージされるかを理解してください |
| 構造化ドキュメントタグのプレースホルダーが期待されるコンテンツを表示しません | Placeholderは想定していたものとは異なるBuildingBlockを指しています | 実際に参照されているビルディングブロックを確認するためにStructuredDocumentTag.Placeholderを読んでください |
FAQ
ビルディングブロックはドキュメントのどこに保存されていますか?
ドキュメントのGlossaryDocumentにあり、Document.GlossaryDocumentからアクセスでき、BuildingBlocksプロパティがBuildingBlockCollectionです。
特定のビルディングブロック(例えばAutoTextエントリ)をどのように見つけますか?
一致するBuildingBlockGallery、カテゴリ、名前を指定してGlossaryDocument.GetBuildingBlock(gallery, category, name)を呼び出します。
プログラムから新しいビルディングブロックを追加できますか?
はい — BuildingBlockCollectionはNodeCollectionであるため、Add(node)とInsert(index, node)をサポートしています。
BuildingBlockBehavior は何を制御しますか?
ビルディングブロックが挿入されたとき、その内容がドキュメントにどのように統合されるか — Content として、全体の Paragraph、または全体の Page のいずれかです。
ビルディングブロックは構造化ドキュメントタグのプレースホルダーテキストとどのように関連していますか?
StructuredDocumentTag.Placeholder (and StructuredDocumentTagRangeStart.Placeholder) は、空の場合に SDT のプレースホルダーコンテンツを提供する BuildingBlock を返します。
API Reference の概要
| クラス / メソッド | 説明 |
|---|---|
Document.GlossaryDocument | すべてのビルディングブロックを保持するドキュメントのGlossaryDocument |
GlossaryDocument.BuildingBlocks | すべてのビルディングブロックのBuildingBlockCollection |
GlossaryDocument.GetBuildingBlock() | ギャラリー、カテゴリ、名前でビルディングブロックを検索 |
BuildingBlock | CompositeNodeは、Name、Gallery、Category、Behavior、Type、Sectionsを備えたもの |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | ビルディングブロックを分類する列挙型 |
StructuredDocumentTag.Placeholder | SDT のプレースホルダーコンテンツとして使用される BuildingBlock |