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. BookmarkManagerを取得する
  4. addBookMarkAtEnd("Title", pageNumber)を使用してブックマークを追加する
  5. pdf.saveAs()でPDFを保存する
 :title=Quickstart
//: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("Chapter 1", 0);
pdf.saveAs(Path.of("bookmarked.pdf"));
 :title=Quickstart
//: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("Chapter 1", 0);
pdf.saveAs(Path.of("bookmarked.pdf"));
JAVA

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

IronPDFはJavaアプリケーションでのPDF操作を簡素化します。 ブックマークAPIは、PDFファイルにカスタムブックマークを作成するための簡単なメソッドを提供します。 このライブラリはJavaアプリケーションと統合され、ブックマーク以外にも様々なPDF操作機能をサポートします。例えば、PDFの統合フォームの作成、およびウォーターマークの追加などが可能です。

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

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

開発および運用での使用には有効なライセンスキーが必要です。 アプリケーションの開始時にライセンスキーを設定し、IronPDFメソッドを呼び出す前に行ってください。 ライセンスオプションに関する情報は、ライセンスガイドを訪問してください。

ヒントIronPDFのすべてのページインデックスはゼロベースの番号を使用します。 ドキュメントのページ1はインデックス0、ページ2はインデックス1と続きます。

PDFにアウトラインとブックマークを追加する方法

以下の例では、アウトラインとブックマークの作成を実演するためにサンプルPDFを使用します。 このプロセスは、既存のPDF文書を読み込み、IronPDFのBookmarkManagerを使用して文書全体にナビゲーションポイントを追加することを含みます。

ブックマークの単一レイヤーを追加するにはどうすればよいですか?

フラットなブックマークリストは、レポート、製品マニュアル、またはそれ自体で独立しているセクションを持つスライドデッキのような、明確で階層的でない構造を持つドキュメントに適しています。 BookmarkManagerオブジェクトを取得します。

addBookMarkAtStartメソッドは、ブックマークコレクションの終わりまたは始まりにエントリを追加します。 これらのメソッドにより、ドキュメントの構造に合わせてブックマークを整理する柔軟性が得られます。 各エントリは表示タイトルとゼロベースのページインデックスを受け取ります。

//: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"));
    }
}
//: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"));
    }
}
JAVA

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

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

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

insertBookmarkメソッドは、ブックマーク名、ターゲットページインデックス、親のブックマーク名、および先行兄弟のブックマーク名の4つのパラメータを受け取ります。 親ブックマーク名を渡すことで、その下に子エントリを作成します。 兄弟パラメータを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によって作成されたブックマークのツリー構造を示しています。 アウトラインパネルを展開して、各子エントリが親の下にどのようにネストされるかを確認してください。 このレイヤードアプローチは、章、サブチャプター、付録があるレポートに適しています。


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

私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

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

Milan Jovanovic

Microsoft MVP

ケーススタディを見る
Icon Quote related to ブックマークの複数のレイヤーを作成するにはどうすればよいですか?

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

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

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る
Icon Quote related to ブックマークの複数のレイヤーを作成するにはどうすればよいですか?

IronSuiteは私たちの業務において重要な役割を果たしています。これらは、フロアプランの作成や在庫管理の改善を含め、ビジネス全体の効率を向上させるツールです。

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

David Jones

リードソフトウェアエンジニア、Agorus Build

ケーススタディを見る

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

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

リスト内の位置で特定のブックマークにアクセスするには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があり、新しいコンテンツが下流で追加される場合に特に役立ちます。

addNextBookmarkを呼び出します。 新しいエントリを1つのレベル下に配置するためにaddChildBookmarkを使用し、選択されたブックマークの下に入れ子にします。 両方のメソッドは、タイトルの文字列とゼロベースのページインデックスを受け入れます。

//: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をマージすると、結果のブックマークリストは予測外に動作する場合があります。 クリーンなアウトラインを維持するために、名前が競合するブックマークをマージ前にリネームしてください。

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.6 リリースされたばかり
Still Scrolling Icon

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

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