如何在Java中加入PDF書籤和大綱

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

IronPDF 的 Java 程式庫可讓您使用BookmarkManager類別以程式設計方式為 PDF 文件添加書籤和大綱,支援單層和多層書籤結構以及可自訂的導覽點。

快速入門:在 Java 中加入 PDF 書籤

  1. 安裝 IronPDF Java 庫並設定您的許可證金鑰
  2. 使用PdfDocument.fromFile()載入您的 PDF 文件
  3. 使用pdf.getBookmark()取得BookmarkManager
  4. 使用addBookMarkAtEnd("Title", pageNumber)加入書籤
  5. 使用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 -->
<!-- ![Output showing add outline & bookmarks example results in IronPDF](/static-assets/images/TODO/add-outline-bookmarks-example-code_output.webp) -->
<!-- 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"));
    }
}
JAVA

您可以在這裡看到包含我們新的書籤樹狀結構的 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());
        }
    }
}
JAVA

如何在指定索引位置插入書籤?

透過檢索到的書籤,您可以在文件中的特定索引位置新增書籤。 此功能有助於在現有 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"));
    }
}
JAVA

如果將兩個書籤稱相同的 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 文件。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

準備好開始了嗎?
版本: 2025.12 剛剛發布