如何在Java中加入PDF書籤和大綱
IronPDF 的 Java 程式庫可讓您使用BookmarkManager類別以程式設計方式為 PDF 文件添加書籤和大綱,支援單層和多層書籤結構以及可自訂的導覽點。
快速入門:在 Java 中加入 PDF 書籤
- 安裝 IronPDF Java 庫並設定您的許可證金鑰
- 使用
PdfDocument.fromFile()載入您的 PDF 文件 - 使用
pdf.getBookmark()取得BookmarkManager - 使用
addBookMarkAtEnd("Title", pageNumber)加入書籤 - 使用
pdf.saveAs()儲存 PDF 文件
```java :title=快速入門 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 操作。 它的書籤功能提供了在 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>Utilize the <strong>`PdfDocument`</strong> class to load an existing PDF file in Java</li>
<li>Create and customize the bookmarks with the <strong>`BookmarkManager`</strong> class</li>
<li>Use `addBookMarkAtEnd` to add bookmarks to specific pages of the PDF</li>
<li>儲存包含新大綱和書籤的PDF文件。</li>
</ol>
</div>
## 開始之前我需要準備什麼?
在實作 PDF 書籤功能之前,請確保已在 Java 專案中正確配置 IronPDF。 該程式庫需要 Java 8 或更高版本,並且可以使用 Maven 或 Gradle 輕鬆整合。 您需要將 IronPDF 依賴項新增至專案的建置檔案。有關詳細的設定說明,請參閱"[入門概述"](https://ironpdf.com/java/docs/) 。
您還必須確保您的許可證金鑰配置正確,因為 IronPDF 需要許可證才能進行開發。 有關許可選項和實施的全面信息,請訪問[許可指南](https://ironpdf.com/java/get-started/license-keys/)。 在使用 IronPDF 的任何功能之前,請在應用程式啟動時設定許可證密鑰。
## 如何在PDF中加入大綱和書籤?
在這個範例中,我將使用這個[範例 PDF](/static-assets/ironpdf-java/howto/bookmarks/NovelSample.pdf)來套用輪廓和書籤。 該過程包括載入現有的 PDF 文檔,並利用 IronPDF 的`BookmarkManager`在整個文檔中新增導覽點。
### 如何加入單層書籤?
<!-- TODO: Add image here -->
<!--  -->
<!-- Description: Screenshot showing code execution output or results -->
使用[`PdfDocument`](https://ironpdf.com/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html)類別從指定檔案路徑載入此 PDF 後,擷取[`BookmarkManager`](https://ironpdf.com/java/object-reference/api/com/ironsoftware/ironpdf/bookmark/BookmarkManager.html)物件以開始新增書籤。 您可以使用`addBookMarkAtEnd`和`addBookMarkAtStart`方法將書籤加入書籤集合的開頭或結尾。 這些方法可以根據文檔結構靈活地組織書籤。
請記住,所有頁面索引都遵循從零開始的索引規則。
```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方法在新圖層上新增書籤。 第一個參數指定書籤稱,第二個參數指定書籤連結到的頁面。 若要建立新圖層,請使用此方法的第三個參數將新書籤設為現有書籤的"子書籤"。 這種層級結構適用於包含章節、小節和子節的文件。
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 bookmarks at the end
bookmarks.addBookMarkAtEnd("Title Page", 0);
bookmarks.addBookMarkAtEnd("Table of Contents", 1);
bookmarks.addBookMarkAtEnd("Dedication", 2);
// Insert second layer bookmarks
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 multiple layer bookmarks
pdf.saveAs(Path.of("multiLayer.pdf"));
}
}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 bookmarks at the end
bookmarks.addBookMarkAtEnd("Title Page", 0);
bookmarks.addBookMarkAtEnd("Table of Contents", 1);
bookmarks.addBookMarkAtEnd("Dedication", 2);
// Insert second layer bookmarks
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 multiple layer bookmarks
pdf.saveAs(Path.of("multiLayer.pdf"));
}
}您可以在這裡看到包含我們新的書籤樹狀結構的 PDF 檔案。 查看大綱,了解insertBookmark功能如何新增了一個新的書籤層。 這種多層方法適用於技術文件、學術論文或任何需要詳細導航結構的文件。
如何從PDF文件中恢復已有的書籤?
IronPDF 的書籤工具不僅可以新增新的書籤,還可以擷取並檢視現有的書籤。 在修改現有 PDF 檔案或分析其結構時,此功能至關重要。 要瀏覽書籤,請先使用PdfDocument.fromFile方法載入 PDF。 然後存取BookmarkManager物件並使用getBookmarks方法檢索所有書籤,包括子書籤。 最後,可以使用get方法根據書籤在清單中的索引檢索書籤。此功能允許以程式設計方式檢查和操作現有的 PDF 導航結構。
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
List<Bookmark> bookmarkList = bookmarks.getBookmarks();
// Retrieve a specific bookmark by its 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());
}
}
}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
List<Bookmark> bookmarkList = bookmarks.getBookmarks();
// Retrieve a specific bookmark by its 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());
}
}
}如何在指定索引位置插入書籤?
透過檢索到的書籤,您可以在文件中的特定索引位置新增書籤。 此功能有助於在現有 PDF 中新增章節或重新組織文件結構。 要實現這一點,請選擇目標書籤,然後使用addNextBookmark方法在其後新增書籤。 例如,從"新增多層書籤"部分取得 PDF 文件,並在"第三頁"書籤之後加上書籤。 您也可以使用addChildBookmark方法新增子書籤作為更深層的書籤,從而精確控製文件的導覽層次結構。
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 we modified earlier
PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));
// Get the BookmarkManager
BookmarkManager bookmarks = pdf.getBookmark();
// Retrieve the list of bookmarks
List<Bookmark> bookmarkList = bookmarks.getBookmarks();
// Retrieve a specific bookmark by its index
Bookmark bookmark = bookmarkList.get(5);
// Add a new bookmark after the specified bookmark
bookmark.addNextBookmark("Fourth Page", 6);
// Add another layer to 'Third page' bookmark
bookmark.addChildBookmark("Section 1", 7);
// Save the modified PDF
pdf.saveAs(Path.of("specificIndex.pdf"));
}
}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 we modified earlier
PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));
// Get the BookmarkManager
BookmarkManager bookmarks = pdf.getBookmark();
// Retrieve the list of bookmarks
List<Bookmark> bookmarkList = bookmarks.getBookmarks();
// Retrieve a specific bookmark by its index
Bookmark bookmark = bookmarkList.get(5);
// Add a new bookmark after the specified bookmark
bookmark.addNextBookmark("Fourth Page", 6);
// Add another layer to 'Third page' bookmark
bookmark.addChildBookmark("Section 1", 7);
// Save the modified PDF
pdf.saveAs(Path.of("specificIndex.pdf"));
}
}如果將兩個書籤稱相同的 PDF 文件合併在一起,可能會破壞書籤清單本身。
在複雜的 PDF 工作流程中使用書籤時,可以考慮探索 IronPDF 的其他功能,例如拆分 PDF以建立具有自己書籤結構的較小文檔,或列印帶有完整書籤導航的 PDF 。 如需更高級的範例和完整的程式碼演示,請查看我們範例部分的書籤程式碼範例。
常見問題解答
如何在 Java 的 PDF 文件中加入書籤?
您可以使用 IronPDF 的 BookmarkManager 類別為 PDF 文件新增書籤。首先,使用 PdfDocument.fromFile() 載入您的 PDF,然後用 pdf.getBookmark() 存取 BookmarkManager,並使用 addBookMarkAtEnd() 方法指定書籤標題和頁碼來新增書籤。
以程式化方式新增 PDF 書籤的先決條件是什麼?
要使用 IronPDF 添加 PDF 書籤,您需要 Java 8 或更高版本、透過 Maven 或 Gradle 整合的 IronPDF 函式庫,以及在應用程式中配置的有效授權金鑰。該函式庫支援單層和多層書籤結構。
我可以在 PDF 中建立多層次的書籤階層嗎?
是的,IronPDF 支持创建单层和多层书签结构。您可以使用 BookmarkManager 類別創建具有父書籤和子書籤的分層導覽,以組織複雜的 PDF 文件。
PDF 書籤和大綱的目的是什麼?
PDF 書籤和大綱透過提供結構化的導覽,大幅改善文件的可用性。它們允許使用者直接跳到關鍵部分,如目錄,這對於冗長的文件、報告或多章 PDF 尤為有用。IronPDF 可以輕鬆地以程式化的方式實現這些導覽功能。
除了書籤之外,還有哪些 PDF 操作功能?
除了新增書籤之外,IronPDF 還提供全面的 PDF 處理功能,包括合併 PDF、建立表單、新增水印,以及其他各種文件處理功能。這些功能可與 Java 應用程式無縫整合,以進行完整的 PDF 管理。
添加書籤後如何儲存 PDF?
使用 IronPDF 的 BookmarkManager 添加書籤之後,在您的 PdfDocument 物件上呼叫 saveAs() 方法,指定您要保存書籤 PDF 的輸出文件路徑,即可保存修改後的 PDF 文件。






