リストレベルからカスタムタブストップを削除すると、Word 文書のリストレイアウトを細かく制御できます。Removing List Level Tab Stops 機能は、以前に設定されたタブストップをクリアするシンプルな ListLevel.RemoveTabStop() メソッドを追加します。本記事では、SDK のインストール、リストの作成、タブストップの削除、更新されたドキュメントの保存手順を説明します。

Word 文書でリストレベルのタブストップを削除する理由

Word のリストは、リスト番号や箇条書きとテキストを揃えるデフォルトのタブストップに依存することがよくあります。ドキュメントをプログラムで生成する際、特定の視覚的配置を実現するためにカスタムタブストップを追加することがあります。その後、ビジネス要件が変更されたり、別のレイアウト用に同じテンプレートを再利用する必要が出てくることがあります。タブストップを削除するためにドキュメントを手動で編集するのは時間がかかり、ミスが起きやすいです。ListLevel.RemoveTabStop() を使用すれば、プログラムでリストレベルをデフォルトの動作に戻すことができ、手動介入なしで生成されたドキュメント全体の一貫性を確保できます。

ListLevel API の紹介

Aspose.Words for .NET は、Word 文書を操作するための豊富なオブジェクト モデルを提供します。ListLevel クラスは、リスト内の単一レベルを表します(例として、番号付きリストの最初のレベル)。バージョン 26.7 以降、クラスには RemoveTabStop() メソッドが含まれ、該当レベルに設定されたカスタム タブ ストップをクリアします。

まず、NuGet から Aspose.Words パッケージをインストールします:

Install-Package Aspose.Words

製品の詳細は、Aspose.Words for .NET product pageでご確認いただけます。詳細なドキュメントは、Aspose.Words .NET docsで利用可能で、完全な API リファレンスはhereで参照できます。

単一リストレベルからカスタムタブストップを削除する

ステップバイステップ チュートリアル

  1. 新しい Document と DocumentBuilder を作成します。 Document オブジェクトは Word ファイルをメモリ内に保持し、DocumentBuilder はコンテンツの作成を簡素化します。
  2. デフォルトの番号付きリスト形式を適用します。 これにより、事前定義されたレベルとタブストップを持つリストが得られます。
  3. いくつかのリスト項目を書き込みます。 項目はリストの書式設定を継承します。
  4. ビルダーから現在の ListLevel を取得します。 これが先ほど作成したレベルです。
  5. ListLevelRemoveTabStop() を呼び出します。 これによりカスタムタブストップがクリアされます。
  6. ドキュメントを保存 して変更を確認します。

以下の例は、C# と Aspose.Words を使用して、リスト レベルからカスタム タブ ストップを削除する方法を示しています。

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Create a list with default formatting
builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Numbered list item 1");
builder.Writeln("Numbered list item 2");

// Get the list level and remove its tab stop
ListLevel listLevel = builder.ListFormat.ListLevel;
listLevel.RemoveTabStop();

doc.Save("Paragraph.RemoveTabStopFromListLevel.docx");

仕組み

  • builder.ListFormat.ApplyNumberDefault() は、Word で定義されたデフォルトのリストスタイルを使用して、ビルダーを番号付きリスト コンテキストに切り替えます。これにより暗黙的に新しい List オブジェクトと最初のレベル用の対応する ListLevel が作成されます。
  • builder.Writeln(...) は 2 つのリスト項目を書き込みます。ビルダーがリストモードにあるため、各呼び出しは自動的に適切なリスト番号を前置し、レベルのタブストップに基づいてテキストを揃えます。
  • builder.ListFormat.ListLevel は、現在のリストレベル(この場合はレベル 0)の書式設定を制御する ListLevel インスタンスを返します。
  • listLevel.RemoveTabStop() は、リストレベル作成時に設定されたカスタムタブストップをクリアします。この呼び出しの後、リストは Word のデフォルトタブストップを使用し、通常はレベルの左インデントに位置します。
  • doc.Save(...) はメモリ内のドキュメントを Paragraph.RemoveTabStopFromListLevel.docx という名前のファイルに書き出します。Microsoft Word または互換ビューアでファイルを開き、番号とテキストがデフォルトのタブストップで揃っていることを確認してください。

注: このコードサンプルは公式の Aspose.Words リリースノートから転載されたもので、サンドボックス環境で実行されていません。実稼働環境で使用する前に、必ずご自身の開発環境で確認してください。

ドキュメント内のすべてのリストレベルからタブストップを削除する

多くの実際のシナリオでは、ドキュメントに複数のリストが含まれ、各リストは複数のレベルを持ちます。1つのレベルだけからタブストップを削除するだけでは不十分な場合があります。以下のスニペットは、ドキュメント内のすべてのリストを反復処理し、各レベルのタブストップをクリアする方法を示しています。

// Load an existing document that contains multiple lists
Document doc = new Document("Input.docx");

// Iterate through every list in the document
foreach (List list in doc.Lists)
{
    // Each list can have multiple levels (0‑8). Iterate them.
    foreach (ListLevel level in list.ListLevels)
    {
        // Remove any custom tab stop for this level
        level.RemoveTabStop();
    }
}

// Save the updated document
doc.Save("Output_NoTabStops.docx");

コードの説明

  • new Document("Input.docx") は、複数のリストを含む可能性のある既存の Word ファイルを読み込みます。
  • doc.Lists は、ドキュメント内の各個別リストを表す List オブジェクトのコレクションを返します。
  • list.ListLevels は、そのリストに対して利用可能な 9 つのレベル(0‑8)へのアクセスを提供します。レベルが使用されていなくても、コレクションにはデフォルトの書式設定を持つ ListLevel インスタンスが含まれています。
  • 内部ループ内で、level.RemoveTabStop() が各レベルに対して呼び出され、ドキュメント内のどこにもカスタム タブ ストップが残らないことが保証されます。
  • 最後に、doc.Save("Output_NoTabStops.docx") は、クリーンアップされたドキュメントを書き出します。

このアプローチは、生成されたレポートのバッチ全体で統一されたリストレイアウトを強制する必要がある場合や、外部ソースから受け取った文書を正規化する場合に特に有用です。

プログラムでタブストップを追加し、次に削除

一時的なレイアウトのためにカスタムタブストップを追加し、いくつかの操作を実行し、そしてデフォルトに戻す必要がある場合があります。SDKでは ListLevel.TabStops.Add(double position) を使用してタブストップを追加できます。 一時的な書式設定が完了したら、RemoveTabStop() を呼び出してクリーンアップできます。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Temporarily aligned item 1");

// Add a custom tab stop at 72 points (1 inch)
ListLevel level = builder.ListFormat.ListLevel;
level.TabStops.Add(72);

builder.Writeln("Item with custom tab stop");

// Later, remove the custom tab stop
level.RemoveTabStop();

builder.Writeln("Item after removing tab stop");

doc.Save("TempTabStopDemo.docx");

コードの説明

  • ドキュメントを作成し、番号付きリストを適用した後、最初の項目を書き込みます。
  • level.TabStops.Add(72) は 72 ポイント(正確に 1 インチ)にカスタム タブ ストップを挿入します。続くリスト項目はその位置にテキストを揃えます。
  • 一時的な書式設定が不要になったら、level.RemoveTabStop() がカスタム タブ ストップをクリアし、以降の項目はデフォルトの配置に戻ります。
  • 最後の Writeln は削除の効果を示しています。

このパターンは、たとえば特定のページレイアウトのためにリスト内の見出しを揃えるといった、一度だけの調整が必要な場合に便利で、ドキュメントの残りをクリーンに保つことができます。

無料ライセンスを取得

Aspose は評価用の透かしを除去し、開発およびテスト用にフル API アクセスを提供する一時的な無料ライセンスを提供しています。以下の Aspose の一時的なライセンスページ からリクエストできます。

無料の追加リソース

結論

このチュートリアルでは、Aspose.Words 26.7で導入された新しい ListLevel.RemoveTabStop() メソッドの使用方法を取り上げました。カスタムタブストップをクリアすることで、リストの配置を再び制御でき、ドキュメントテンプレートを簡素化し、生成された Word ファイル全体で一貫した書式設定を確保できます。例では、単一のリストレベルの削除、ドキュメント全体にわたる一括削除、そして一時的なタブストップ調整のパターンを示しました。これらのテクニックを .NET アプリケーションに組み込むことで、Word の自動化がより堅牢になり、保守が容易になります。

よくある質問

  1. ListLevel.RemoveTabStop() が実際に何を削除するのか?
    このメソッドは、リストレベルに対して定義されたカスタムタブストップをすべてクリアし、ドキュメントのスタイルで定義されたデフォルトのタブストップを使用するようにレベルを元に戻します。

  2. タブストップを削除した後に Save() を呼び出す必要がありますか?
    はい。変更はメモリ上で行われるため、更新されたリスト書式設定をファイルに永続化するには Document.Save() を呼び出す必要があります。

  3. 単一のドキュメント内のすべてのリストレベルからタブストップを削除できますか?
    もちろんです。ドキュメント内の各 List を反復処理し、さらに各 ListLevel を反復処理して、必要に応じて RemoveTabStop() を呼び出すことができます。

  4. RemoveTabStop() は箇条書きリストだけでなく番号付きリストでもサポートされていますか?
    はい。このメソッドは、箇条書き、番号、または多層形式を表すかどうかに関係なく、任意の ListLevel で機能します。

  5. カスタム タブ ストップを削除すると、既存のリスト項目のインデントに影響しますか?
    タブ ストップの位置だけが変更されます。リストレベルの左インデントで定義された全体のインデントは変更されず、リスト項目は視覚的な階層を維持します。

  6. ListLevel.RemoveTabStop() を使用するには有料ライセンスが必要ですか?
    この API は無料の一時ライセンスで利用できますが、本番環境で使用する場合は Aspose からフルライセンスを取得する必要があります。

続きを読む