大規模な Word レポートやマニュアルを作成し、ユーザーが素早くざっと目を通す必要がある場合、ナビゲート可能な目次を生成することは不可欠です。Conholdate.Total for Java は、Java アプリケーションから直接 DOCX ファイルを操作するための強力な SDK を提供します。このステップバイステップ ガイドでは、設定、コードの説明、ベストプラクティスをカバーしながら、Java で Word 文書に目次を追加する方法を学びます。

完全な作業例:JavaでWord文書に目次を追加する

次の例は、Conholdate.Total for Java を使用して DOCX ファイルに目次を挿入する方法を示しています。

import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.BreakType;
import com.aspose.words.StyleIdentifier;

public class AddTableOfContentsExample {
    public static void main(String[] args) throws Exception {
        // Directory where the output document will be saved
        String dataDir = "output/";

// Create a new document and a builder to work with it
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

// Insert a table of contents field at the current cursor position.
        // "\o \"1-3\" \h \z \u" includes heading levels 1-3, makes entries
        // clickable hyperlinks, hides tab leaders in Web layout, and uses
        // outline levels applied to non-heading styles.
        builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");

// Start the actual document content on the second page.
        builder.insertBreak(BreakType.PAGE_BREAK);

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
        builder.writeln("Heading 1");

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
        builder.writeln("Heading 1.1");
        builder.writeln("Heading 1.2");

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
        builder.writeln("Heading 2");
        builder.writeln("Heading 3");

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
        builder.writeln("Heading 3.1");

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_3);
        builder.writeln("Heading 3.1.1");
        builder.writeln("Heading 3.1.2");
        builder.writeln("Heading 3.1.3");

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
        builder.writeln("Heading 3.2");
        builder.writeln("Heading 3.3");

// The newly inserted table of contents is initially empty.
        // It needs to be populated by updating the fields in the document.
        doc.updateFields();

doc.save(dataDir + "TableOfContents.docx");
    }
}

注意: このコード例は基本機能を示しています。プロジェクトで使用する前に、出力ディレクトリ (dataDir) を実際のファイル場所に合わせて更新し、すべての必須依存関係が正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメント を参照するか、サポートチーム にお問い合わせください。

JavaコードでWord文書に目次を追加する方法の理解

以下はサンプルコードが実行する主な手順の概要です:

  1. ドキュメントとビルダーを作成する - Document はメモリ内の Word ファイルを表し、DocumentBuilder はコンテンツやフィールドを挿入するためのメソッドを提供します。

    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);
    
  2. 目次フィールドの挿入 - insertTableOfContents はカーソル位置に目次フィールドを書き込みます。スイッチ文字列はその動作を制御します: \o "1-3" は見出しレベル 1 から 3 を含め、\h はエントリをクリック可能なハイパーリンクにし、\z は Web レイアウトビューでタブリーダーとページ番号を非表示にし、\u は段落に適用されたアウトラインレベルを使用します。

builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
  1. 新しいページでコンテンツを開始 - insertBreak(BreakType.PAGE_BREAK) は、実際のドキュメント本文を目次の後のページに配置するため、目次が独自のページを持つようになります。

    builder.insertBreak(BreakType.PAGE_BREAK);
    
  2. 見出しスタイルのコンテンツを追加 - setStyleIdentifier をビルダーの段落フォーマットに対して HEADING_1HEADING_2、または HEADING_3 に設定し、writeln を呼び出す前に適用すると、対応する組み込み見出しスタイルで段落がスタイル付けされ、TOC フィールドがエントリをスキャンします。

builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 1");

詳細な API リファレンスは、API Reference ページで利用できます。

  1. フィールドを更新して保存 - doc.updateFields() は、見出しが存在するため目次にエントリとページ番号を埋め込み、doc.save はドキュメントをディスクに書き込みます。
doc.updateFields();
doc.save(dataDir + "TableOfContents.docx");

Conholdate.Total for Java のインストールと構成

Conholdate Maven リポジトリと SDK の依存関係を pom.xml に追加します:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

最新の SDK パッケージはダウンロードページからダウンロードしてください。SDK は Java 8 以降が必要で、標準的な JVM 上で動作します。追加のランタイム コンポーネントは必要ありません。

JavaでWord目次を生成するベストプラクティス

  • 一貫した見出しスタイルを使用する - 目次は組み込みの見出しレベル(見出し 1、見出し 2、など)でスタイル付けされた段落を取得します。信頼できるエントリ生成のために、ソース文書がこれらのスタイルを使用していることを確認してください。
  • 見出しの深さを制限する - レベルが多すぎると目次が扱いにくくなります。典型的なレポートは例の \o "1-3" スイッチに示されているように、レベル 1‑3 を使用します。
  • ハイパーリンクを有効にする - \h スイッチを含めるとクリック可能なエントリが作成され、最終文書のナビゲーションが向上します。
  • 挿入後は必ず updateFields を呼び出す - 新しく挿入された目次フィールドは doc.updateFields() が実行されるまで空です。したがって、すべての見出しコンテンツが追加された後に呼び出してください。
  • 挿入後に検証する - 生成された DOCX を開き、フィールドを更新(Ctrl +A、F9)してページ numbers が正しいことを確認します。特に追加編集の後は重要です。
  • スイッチ文字列を再利用する - バッチで複数の文書を生成する場合、スイッチ文字列を一度作成し、呼び出し間で再利用してフォーマットの一貫性を保ちます。

結論

JavaでWord文書に目次を追加することは、Conholdate.Total for Java を使用すれば簡単になります。ドキュメントを作成し、適切なスイッチを指定したTOCフィールドを挿入し、見出しスタイルのコンテンツを追加し、updateFields を呼び出すことで、プロフェッショナルなレポートやマニュアルの作成を自動化できます。SDK をインストールし、ベストプラクティスの推奨事項に従い、対象環境で生成された目次をテストすることを忘れないでください。本番環境での展開にはライセンス版が必要です。価格情報はpricing pageで確認でき、temporary license pageから一時ライセンスを取得できます。

FAQs

  • JavaでWord文書に目次を追加する最も簡単な方法は何ですか? builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u") を呼び出し、見出しスタイルの段落を追加し、保存する前に doc.updateFields() を呼び出します。コード例に示すように実行してください。

  • どの見出しレベルを目次に表示させるかを制御するにはどうすればよいですか? insertTableOfContents に渡す文字列の \o スイッチ内のレベル範囲を変更します。例えば \o "1-2" と指定すると、レベル 1 と 2 のみが含まれます。

  • Wordテンプレートで後で埋め込むTOCを生成することは可能ですか? はい。動的コンテンツを埋め込む前にテンプレートファイルにTOCフィールドを挿入します。見出しが追加された後に updateFields() を呼び出すと、TOCが自動的に生成されます。

  • この SDK を使用するのにインターネット接続は必要ですか? いいえ。Conholdate.Total for Java は、サーバーまたはデスクトップ上で実行され、外部サービスへの呼び出しがないローカル ライブラリです。

続きを読む