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

查克尼思·賓
查克尼思·賓
2024年9月18日
已更新 2024年12月15日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

在您的 Java 專案中包含 PDF 書籤可以顯著提升您的 PDF 的可用性和導航性。 PDF 中的大綱提供了一種簡便的導航方法,使您可以像使用目錄一樣輕鬆導航到文檔中的關鍵頁面。

IronPDF 是一款強大的 PDF 工具,使處理 PDF 檔案變得輕而易舉。 其書籤工具為您提供一種簡潔且易於使用的方法,用於為 PDF 文件創建自定義書籤。

立即在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

在開始之前

您還需要確保正確設置授權密鑰,因為IronPDF必須獲得開發許可。

添加大綱和書籤範例

在今天的範例中,我將使用這個範例 PDF來應用大綱和書籤。

添加單層書籤

使用PdfDocument類從指定的文件路徑加載此PDF後,我們可以通過檢索BookmarkManager對象開始向文檔添加書籤。 您可以使用 addBookMarkAtEndaddBookMarkAtStart 方法將書籤添加到書籤集合的開頭或結尾。

提示
請記住,所有頁面索引均採用零為基礎的索引。

import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

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

        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

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

        // Add bookmarks
        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);

        pdf.saveAs(Path.of("bookmarked.pdf"));
    }
}
JAVA

通過上面的 PDF 檢視器,您可以檢查位於大多數瀏覽器左上角的目錄,以查看我們添加的所有書籤。

新增多層書籤

在此示例中,我們將開始新增書籤,就像我們在建立單層書籤時所做的一樣。 接下來,我們將使用 insertBookmark 方法在新層上新增一個書籤,並使用方法的第一個參數給它命名。 第二個參數指定新書籤鏈接到的頁面。 要創建一個新層,我們將新書籤設為現有書籤的“子項”,這是通過該方法的第三個參數完成的。

import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.bookmark.BookmarkManager;

public class Main {
    public static void main(String[] args) throws IOException {
        PdfDocument pdf = PdfDocument.fromFile(Path.of("NovelSample.pdf"));

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

        // Add bookmarks
        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");

        pdf.saveAs(Path.of("multiLayer.pdf"));
    }
}
JAVA

在這裡,您可以看到我們新的書籤樹狀結構的 PDF。 查看大綱,看看insertBookmark功能如何新增了一層新的書籤。


檢索書籤

IronPDF 的書籤工具不僅可以新增書籤,還可以檢索和查看現有的書籤。 要瀏覽書籤,首先使用 PdfDocument.fromFile 方法載入 PDF。 然後,訪問BookmarkManager物件,並使用getBookmarks方法檢索所有書籤,包括子書籤。 最後,使用 get 方法以索引從列表中檢索書籤。

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 {
        PdfDocument pdf = PdfDocument.fromFile(Path.of("bookmarked.pdf"));

        BookmarkManager bookmarks = pdf.getBookmark();

        // Retrieve bookmarks list
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();
        Bookmark bookmark = bookmarkList.get(2);
    }
}
JAVA

在特定索引插入書籤

透過檢索的書籤,您可以選擇在文件中的特定索引處新增書籤。 要執行此操作,選擇目標書籤,然後使用addNextBookmark方法在其後新增一個新的書籤。 例如,我們從「新增多層書籤」部分中提取 PDF,然後在「第三頁」書籤後新增一個書籤。 您也可以使用addChildBookmark方法添加作為更深層次的子書籤。

import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
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 {
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multiLayer.pdf"));

        BookmarkManager bookmarks = pdf.getBookmark();
        List<Bookmark> bookmarkList = bookmarks.getBookmarks();

        Bookmark bookmark = bookmarkList.get(5);
        bookmark.addNextBookmark("Fourth Page", 6);

        // Add another layer to 'Third page' bookmark
        bookmark.AddChildBookmark("Section 1", 7);

        pdf.saveAs(Path.of("specificIndex.pdf"));
    }
}
JAVA

請注意
如果合併兩個 PDF 文件,而它們的書籤名稱相同,這可能會導致書籤列表本身出現混亂。

查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。