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

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

由 Kye Stuart 撰寫

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

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

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

第一步:
green arrow pointer

在開始之前

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

添加大綱和書籤範例

對於今天的示例,我將使用這個範例 PDF套用大綱和書籤。

添加單層書籤

從指定的文件路徑載入此 PDF 之後,使用PdfDocument類別後,我們可以透過檢索開始將書籤添加到文件中。書籤管理器物件。 您可以使用 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 檢視器,您可以檢查位於大多數瀏覽器左上角的目錄,以查看我們添加的所有書籤。

新增多層書籤

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

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 的書籤工具不僅可以新增書籤,還可以檢索和查看現有的書籤。 若要瀏覽書籤,首先使用以下方式加載 PDF:PdfDocument.fromFile方法。 然後,訪問 BookmarkManager 對象並使用取得書籤檢索所有書籤(包括子書籤)的方法。 最後,使用 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

在特定索引插入書籤

透過檢索的書籤,您可以選擇在文件中的特定索引處新增書籤。 要做到這一點,請選擇目標書籤並使用新增下一個書籤在其後新增書籤的方法。 例如,我們從「添加多層書籤」部分提取 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 文件,而它們的書籤名稱相同,這可能會導致書籤列表本身出現混亂。