JavaでPDFのしおりとアウトラインを追加する方法
IronPDF for Javaライブラリを使用して、BookmarkManagerクラスを介してPDF文書にブックマークおよびアウトラインをプログラム的に追加できます。単一レイヤーおよび複数レイヤーのブックマーク構造の両方をカスタマイズ可能なナビゲーションポイントとともにサポートします。
クイックスタート: Java で PDF ブックマークを追加する
- IronPDF Javaライブラリをインストールし、ライセンスキーを設定します
PdfDocument.fromFile()を使用してPDFを読み込むBookmarkManagerを取得するaddBookMarkAtEnd("Title", pageNumber)を使用してブックマークを追加する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"));
PDFブックマークは文書の使いやすさとナビゲーションを向上させます。 アウトラインはPDF内での構造化されたナビゲーションを提供し、ユーザーが目次のように直接重要なセクションにジャンプできるようにします。 これは長い文書、レポート、または整理されたナビゲーションを必要とする多章構成のPDFを扱う時に不可欠です。
IronPDFはJavaアプリケーションでのPDF操作を簡素化します。 ブックマークAPIは、PDFファイルにカスタムブックマークを作成するための簡単なメソッドを提供します。 このライブラリはJavaアプリケーションと統合され、ブックマーク以外にも様々なPDF操作機能をサポートします。例えば、PDFの統合、フォームの作成、およびウォーターマークの追加などが可能です。
PDFブックマークとアウトラインを追加する方法
- JavaライブラリをインストールしてPDFにブックマークを追加します
- PdfDocumentクラスを使って、Javaで既存のPDFファイルをロードします
- BookmarkManagerクラスを用いてブックマークを作成・カスタマイズします
addBookMarkAtEndを使用して、PDFの特定のページにしおりを追加します。- 新しいアウトラインとブックマークを含むPDFドキュメントを保存する
始める前に何が必要ですか?
PDFブックマークの実装前に、IronPDFがJavaプロジェクトに設定されていることを確認してください。 このライブラリはJava 8以上を必要とし、MavenまたはGradleで統合されます。 プロジェクトのビルドファイルにIronPDFの依存関係を追加します。詳細なセットアップ手順については、Get Started Overviewを参照してください。
開発および運用での使用には有効なライセンスキーが必要です。 アプリケーションの開始時にライセンスキーを設定し、IronPDFメソッドを呼び出す前に行ってください。 ライセンスオプションに関する情報は、ライセンスガイドを訪問してください。
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"));
}
}
上の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"));
}
}
上記のPDFは、insertBookmarkによって作成されたブックマークのツリー構造を示しています。 アウトラインパネルを展開して、各子エントリが親の下にどのようにネストされるかを確認してください。 このレイヤードアプローチは、章、サブチャプター、付録があるレポートに適しています。
既存のしおりを 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());
}
}
}
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"));
}
}
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) でその下に新しいエントリをネストします。


