如何在 Java 中添加 PDF 書籤和大綱
在您的 Java 專案中包含 PDF 書籤可以顯著提升您的 PDF 的可用性和導航性。 PDF 中的大綱提供了一種簡便的導航方法,使您可以像使用目錄一樣輕鬆導航到文檔中的關鍵頁面。
IronPDF 是一款強大的 PDF 工具,使處理 PDF 檔案變得輕而易舉。 其書籤工具為您提供一種簡潔且易於使用的方法,用於為 PDF 文件創建自定義書籤。
如何新增 PDF 書籤和大綱
- 安裝 Java 函式庫以在 PDF 中新增書籤
- 利用 PdfDocument 類別在 Java 中載入現有的 PDF 檔案
- 使用BookmarkManager類別創建和自定義書籤
- 使用
addBookMarkAtEnd
將書籤添加到 PDF 的特定頁面 - 保存包含新大綱和書籤的 PDF 文件
立即在您的專案中使用IronPDF,並享受免費試用。
在開始之前
您還需要確保正確設置授權密鑰,因為IronPDF必須獲得開發許可。
添加大綱和書籤範例
在今天的範例中,我將使用這個範例 PDF來應用大綱和書籤。
添加單層書籤
使用PdfDocument類從指定的文件路徑加載此PDF後,我們可以通過檢索BookmarkManager對象開始向文檔添加書籤。 您可以使用 addBookMarkAtEnd
和 addBookMarkAtStart
方法將書籤添加到書籤集合的開頭或結尾。
提示
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"));
}
}
通過上面的 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"));
}
}
在這裡,您可以看到我們新的書籤樹狀結構的 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);
}
}
在特定索引插入書籤
透過檢索的書籤,您可以選擇在文件中的特定索引處新增書籤。 要執行此操作,選擇目標書籤,然後使用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"));
}
}