JavaでPDFのしおりとアウトラインを追加する方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Javaライブラリを使用すると、BookmarkManagerクラスを通じて、PDFドキュメントにブックマークやアウトラインをプログラムで追加できます。このライブラリは、カスタマイズ可能なナビゲーションポイントを備えた、単層および多層のブックマーク構造の両方をサポートしています。

クイックスタート: Java で PDF ブックマークを追加する

  1. IronPDF Javaライブラリをインストールし、ライセンスキーを設定します
  2. PdfDocument.fromFile() を使用して PDF を読み込みます
  3. BookmarkManagerpdf.getBookmark() で取得する
  4. addBookMarkAtEnd("Title", pageNumber) を使用してブックマークを追加する
  5. pdf.saveAs() を含めて PDF を保存する

```java :title=クイックスタート //:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/quickstart.java PdfDocument pdf = PdfDocument.fromFile(Path.of("document.pdf")); BookmarkManager bookmarks = pdf.getBookmark(); bookmarks.addBookMarkAtEnd("第1章", 0); pdf.saveAs(Path.of("bookmarked.pdf"));


PDFブックマークは文書の使いやすさとナビゲーションを向上させます。 アウトラインはPDF内での構造化されたナビゲーションを提供し、ユーザーが目次のように直接重要なセクションにジャンプできるようにします。 これは長い文書、レポート、または整理されたナビゲーションを必要とする多章構成のPDFを扱う時に不可欠です。

IronPDFはJavaアプリケーションでのPDF操作を簡素化します。 ブックマークAPIは、PDFファイルにカスタムブックマークを作成するための簡単なメソッドを提供します。 このライブラリはJavaアプリケーションと統合され、ブックマーク以外にも様々なPDF操作機能をサポートします。例えば、[PDFの統合](https://ironpdf.com/java/how-to/java-merge-pdf-tutorial/)、[フォームの作成](https://ironpdf.com/java/how-to/create-forms/)、および[ウォーターマークの追加](https://ironpdf.com/java/how-to/custom-watermark/)などが可能です。

<div class="hsg-featured-snippet">
    <h2>PDFブックマークとアウトラインを追加する方法</h2>
    <ol>
        <li><a href="https://ironpdf.com/java/#download-modal">JavaライブラリをインストールしてPDFにブックマークを追加します</a></li>
        <li><strong>PdfDocument</strong>クラスを使って、Javaで既存のPDFファイルをロードします</li>
        <li><strong>BookmarkManager</strong>クラスを用いてブックマークを作成・カスタマイズします</li>
        <li><code>addBookMarkAtEnd</code>を使用して、PDFの特定のページにしおりを追加します。</li>
        <li>新しいアウトラインとブックマークを含むPDFドキュメントを保存する</li>
    </ol>
</div>

## 始める前に何が必要ですか?

PDFブックマークの実装前に、IronPDFがJavaプロジェクトに設定されていることを確認してください。 このライブラリはJava 8以上を必要とし、[MavenまたはGradle](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf)で統合されます。 プロジェクトのビルドファイルにIronPDFの依存関係を追加します。詳細なセットアップ手順については、[Get Started Overview](https://ironpdf.com/java/docs/)を参照してください。

開発および運用での使用には有効なライセンスキーが必要です。 アプリケーションの開始時にライセンスキーを設定し、IronPDFメソッドを呼び出す前に行ってください。 ライセンスオプションに関する情報は、[ライセンスガイド](https://ironpdf.com/java/get-started/license-keys/)を訪問してください。

ヒントIronPDFのすべてのページインデックスはゼロベースの番号を使用します。 ドキュメントのページ1はインデックス0、ページ2はインデックス1と続きます。
## PDFにアウトラインとブックマークを追加する方法 以下の例では、アウトラインとブックマークの作成を実演するために[サンプルPDF](/static-assets/ironpdf-java/howto/bookmarks/NovelSample.pdf)を使用します。 このプロセスでは、既存のPDFドキュメントを読み込み、IronPDFの`BookmarkManager`を使用してドキュメント全体にナビゲーションポイントを追加します。 ### ブックマークの単一レイヤーを追加するにはどうすればよいですか? フラットなブックマークリストは、レポート、製品マニュアル、またはそれ自体で独立しているセクションを持つスライドデッキのような、明確で階層的でない構造を持つドキュメントに適しています。 `PdfDocument.fromFile()` を使用してファイルパスから PDF を読み込んだ後、`BookmarkManager` オブジェクトを取得して、ブックマークの追加を開始します。 `addBookMarkAtEnd` および `addBookMarkAtStart` メソッドは、それぞれブックマークコレクションの末尾または先頭にエントリを追加します。 これらのメソッドにより、ドキュメントの構造に合わせてブックマークを整理する柔軟性が得られます。 各エントリは表示タイトルとゼロベースのページインデックスを受け取ります。 ```java //:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/single-layer.java import java.io.IOException; import java.nio.file.Path; import com.ironsoftware.ironpdf.License; import com.ironsoftware.ironpdf.PdfDocument; import com.ironsoftware.ironpdf.bookmark.BookmarkManager; public class Main { public static void main(String[] args) throws IOException { // Set the license key for IronPDF License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01"); // Load the PDF file PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf")); // Get BookmarkManager object to manage bookmarks BookmarkManager bookmarks = pdf.getBookmark(); // Add bookmarks at the end of the bookmark collection bookmarks.addBookMarkAtEnd("Title Page", 0); bookmarks.addBookMarkAtEnd("Table of Contents", 1); bookmarks.addBookMarkAtEnd("Dedication Page", 2); bookmarks.addBookMarkAtEnd("First Page", 3); bookmarks.addBookMarkAtStart("Page 4", 6); // Save the modified PDF with bookmarks pdf.saveAs(Path.of("bookmarked.pdf")); } }

上のPDFビューアーを使用して、ほとんどのブラウザの左上隅にある目次を確認し、追加されたすべてのブックマークを表示してください。 このフラットなブックマーク構造は、シンプルな組織ニーズを持つ文書に対する簡単なナビゲーションを提供します。

ブックマークの複数のレイヤーを作成するにはどうすればよいですか?

ネストされたブックマークは、技術文書や研究報告、または章だけでなくその章内のサブセクションにも移動する必要がある複数章の文書に最適です。 前のセクションで作成したフラットなブックマークをそのまま使用し、insertBookmark を使用して新しいレイヤーにエントリを追加してください。

insertBookmark メソッドは、ブックマーク名、ターゲットページのインデックス、親ブックマーク名、および直前の兄弟ブックマーク名の 4 つのパラメータを受け取ります。 親ブックマーク名を渡すことで、その下に子エントリを作成します。 sibling パラメータを null に設定すると、新しいエントリはその親の最初の子として配置されます。

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/multi-layer.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file
        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

        // Get BookmarkManager object
        BookmarkManager bookmarks = pdf.getBookmark();

        // Add top-level bookmarks at the end
        bookmarks.addBookMarkAtEnd("Title Page", 0);
        bookmarks.addBookMarkAtEnd("Table of Contents", 1);
        bookmarks.addBookMarkAtEnd("Dedication", 2);

        // Insert second-layer bookmarks as children of existing entries
        bookmarks.insertBookmark("First Page", 3, "Table of Contents", null);
        bookmarks.insertBookmark("Second Page", 4, "Table of Contents", "First Page");
        bookmarks.insertBookmark("End of Sample", 7, "Title Page", null);
        bookmarks.insertBookmark("Fourth page", 6, "Table of Contents", "Second Page");

        // Save the modified PDF with nested bookmarks
        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/multi-layer.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file
        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

        // Get BookmarkManager object
        BookmarkManager bookmarks = pdf.getBookmark();

        // Add top-level bookmarks at the end
        bookmarks.addBookMarkAtEnd("Title Page", 0);
        bookmarks.addBookMarkAtEnd("Table of Contents", 1);
        bookmarks.addBookMarkAtEnd("Dedication", 2);

        // Insert second-layer bookmarks as children of existing entries
        bookmarks.insertBookmark("First Page", 3, "Table of Contents", null);
        bookmarks.insertBookmark("Second Page", 4, "Table of Contents", "First Page");
        bookmarks.insertBookmark("End of Sample", 7, "Title Page", null);
        bookmarks.insertBookmark("Fourth page", 6, "Table of Contents", "Second Page");

        // Save the modified PDF with nested bookmarks
        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
JAVA

上記のPDFは、insertBookmarkによって作成されたブックマークのツリー構造を示しています。 アウトラインパネルを展開して、各子エントリが親の下にどのようにネストされるかを確認してください。 このレイヤードアプローチは、章、サブチャプター、付録があるレポートに適しています。


既存のしおりを PDF から取得するには?

PDFからブックマークデータを読み取ることは、ナビゲーション構造全体を再構築することなく文書を更新する必要がある場合の前提条件です。 IronPDFでは、ブックマークの追加に使用されるのと同じBookmarkManagerインターフェースを通じて、この機能を利用できます。 getBookmarks()を呼び出してすべてのトップレベルブックマークを取得します。

get(index) を使用すると、リスト内の位置によって特定のブックマークにアクセスできます。getText() メソッドはブックマークの表示ラベルを返し、getPageIndex() は対象となるゼロベースのページ番号を返します。 getBookmarks()によって返されるフラットリストには、子ブックマークは含まれません; 各親ブックマークの getChildren() メソッドを通じてアクセスできます。

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/retrieve-bookmarks.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file with bookmarks
        PdfDocument pdf = PdfDocument.fromFile(Path.of("bookmarked.pdf"));

        // Retrieve the bookmark manager
        BookmarkManager bookmarks = pdf.getBookmark();

        // Retrieve list of all bookmarks (includes child bookmarks)
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Access a specific bookmark by zero-based index
        Bookmark bookmark = bookmarkList.get(2);

        // Print bookmark details
        System.out.println("Bookmark Title: " + bookmark.getText());
        System.out.println("Page Number: " + bookmark.getPageIndex());

        // Check if bookmark has children
        if (bookmark.getChildren() != null && !bookmark.getChildren().isEmpty()) {
            System.out.println("Number of child bookmarks: " + bookmark.getChildren().size());
        }
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/retrieve-bookmarks.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF file with bookmarks
        PdfDocument pdf = PdfDocument.fromFile(Path.of("bookmarked.pdf"));

        // Retrieve the bookmark manager
        BookmarkManager bookmarks = pdf.getBookmark();

        // Retrieve list of all bookmarks (includes child bookmarks)
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Access a specific bookmark by zero-based index
        Bookmark bookmark = bookmarkList.get(2);

        // Print bookmark details
        System.out.println("Bookmark Title: " + bookmark.getText());
        System.out.println("Page Number: " + bookmark.getPageIndex());

        // Check if bookmark has children
        if (bookmark.getChildren() != null && !bookmark.getChildren().isEmpty()) {
            System.out.println("Number of child bookmarks: " + bookmark.getChildren().size());
        }
    }
}
JAVA

ご注意getBookmarks() メソッドは、最上位のブックマークのみを含むフラットなリストを返します。 ブックマークツリー全体を走査するには、ネストされたエントリを持つ各ブックマークに対して getChildren() を再帰的に呼び出してください。)}]

この取得パターンは、配布前の既存のPDFのナビゲーション構造を監査する際や、必要なセクションが公開前に正しくブックマークされていることを確認する必要のあるツールを作成する際に便利です。


特定のインデックスにブックマークを挿入するにはどうすればよいですか?

特定の位置でブックマークを挿入することで、アウトライン全体を最初から再構築することなく、新しいセクションを追加して既存のPDFを段階的に更新できます。 これは、パイプラインで生成または修正されるPDFがあり、新しいコンテンツが下流で追加される場合に特に役立ちます。

getBookmarks() を使用してフラットなブックマークリストを取得し、リストのインデックスで対象のブックマークを選択した後、addNextBookmark を呼び出して、その直後に新しいブックマークを挿入します。 addChildBookmark を使用すると、選択したブックマークの下に、さらに1階層深い位置に新しいエントリを追加できます。 両方のメソッドは、タイトルの文字列とゼロベースのページインデックスを受け入れます。

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/insert-at-index.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF modified in the multi-layer example
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

        // Get the BookmarkManager
        BookmarkManager bookmarks = pdf.getBookmark();

        // Retrieve the flat bookmark list
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Select a bookmark at a specific index
        Bookmark bookmark = bookmarkList.get(5);

        // Insert a new bookmark after the selected entry
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add a child bookmark under the selected entry
        bookmark.addChildBookmark("Section 1", 7);

        // Save the updated PDF
        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/bookmarks/insert-at-index.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.Bookmark;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the PDF modified in the multi-layer example
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

        // Get the BookmarkManager
        BookmarkManager bookmarks = pdf.getBookmark();

        // Retrieve the flat bookmark list
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        // Select a bookmark at a specific index
        Bookmark bookmark = bookmarkList.get(5);

        // Insert a new bookmark after the selected entry
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add a child bookmark under the selected entry
        bookmark.addChildBookmark("Section 1", 7);

        // Save the updated PDF
        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
JAVA

ご注意同じ名前のブックマークを共有する2つのPDFをマージすると、結果のブックマークリストは予測外に動作する場合があります。 クリーンなアウトラインを維持するために、名前が競合するブックマークをマージ前にリネームしてください。)}]

addNextBookmark メソッドは、新しいエントリを選択したブックマークの兄弟として、リスト内のその直後に挿入します。addChildBookmark メソッドは、新しいエントリを選択したブックマークの1つ下の階層に配置します。 両方のメソッドは、タイトルの文字列とゼロベースのページインデックスを受け入れます。

JavaでPDFブックマークの次のステップは何ですか?

PDFブックマークは、複雑な文書をスクロールせずに直接ナビゲーション経路をユーザーに提供します。 IronPDFのBookmarkManagerは、フラットなエントリリストの追加、多階層のアウトラインの構築、既存エントリの取得、特定の位置への挿入など、ブックマーク操作の全範囲を処理します。

ドキュメント構造やナビゲーション機能を引き続き扱うために、以下の関連リソースを探索してください:

  • JavaでPDFを分割:それぞれ独自のブックマーク構造を持った小さく自分を構成する文書を作成します
  • JavaでPDFを印刷:ナビゲーションが保存された状態でブックマーク付きの文書をプリンターに送信します
  • Java PDFチュートリアル:一般的なPDFワークフローの完全なエンドツーエンドの例
  • Javaで注釈をPDFに追加:特定のページ位置にコメントやマークアップを添付します
  • IronPDF for Javaの例:IronPDF Java APIの完全なコードサンプルをコピー貼り付け

無料トライアルを開始して、ブックマークやアウトライン、他のナビゲーション機能をJavaのPDFワークフローに追加します。 生産用途のライセンスを購入するには、ライセンスオプションを表示してください。

よくある質問

JavaでPDF文書にしおりを追加するには?

PDF を PdfDocument.fromFile() を使ってロードし、 pdf.getBookmark() を呼び出して BookmarkManager を取得します。 addBookMarkAtEnd("Title", pageIndex) を使用して、表示名とゼロベースのページ番号で各ブックマークを追加し、 pdf.saveAs() で保存します。

Java で PDF ブックマークを追加するための前提条件は何ですか?

Java 8 以上が必要で、Maven または Gradle 依存関係として IronPDF ライブラリを追加し、すべての IronPDF 呼び出しの前に License.setLicenseKey() で有効なライセンスキーを設定してください。他に必要なツールやフレームワークはありません。

PDFに複数レベルのしおり階層を作成できますか?

はい。まず addBookMarkAtEnd でトップレベルのブックマークを追加し、次に insertBookmark(name, pageIndex, parentName, siblingName) を呼び出して、親ブックマークの下に子エントリーをネストします。新しいエントリーを最初の子として配置するには、兄弟名に null を渡します。

addBookMarkAtEnd と insertBookmark の違いは何ですか?

addBookMarkAtEnd はブックマークリストの最後に新しいトップレベルエントリを追加します。insertBookmark は、階層内の特定の位置にブックマークを配置するため、親ブックマーク名とオプションの先行兄弟を指定して、ネストされたアウトラインを可能にします。

Java で PDF から既存のブックマークを読み取るにはどうすればよいですか?

pdf.getBookmark().getBookmarks() を呼び出して、トップレベルのブックマークのフラットリストを取得します。list.get(index) を使用して個々のエントリにインデックスでアクセスします。タイトルには bookmark.getText() を、ゼロベースのページ番号には bookmark.getPageIndex() を使用します。子ブックマークには bookmark.getChildren() を使ってアクセスできます。

特定の既存のブックマークの後にブックマークを挿入するにはどうすればよいですか?

getBookmarks() を使用してブックマークリストを取得し、インデックスでターゲットエントリーを選択した後、 bookmark.addNextBookmark("Title", pageIndex) を使用してすぐ後に兄弟を挿入するか、 bookmark.addChildBookmark("Title", pageIndex) でその下に新しいエントリをネストします。

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得し、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに惹かれ、コンピューティングを神秘的かつアクセス可能なものとし、創造性と問題解決のための完璧な媒体と考えていました。

Iron Softwareでは、新しいものを創造することと、複雑なコンセプトをより理解しやすくすることを楽しんでいます。Resident Developerの一人として、次世代に専門知識を共有するために、学生を教えることにも志願しました。

Darriusにとって、その仕事は価値があり、実際の影響があるため、満足感があります。

準備はできましたか?
バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか?
サンプルを実行するHTML が PDF に変換されるのを確認します。