如何在 Java 中添加 PDF 书签和大纲

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

作者:Kye Stuart

在 Java 项目中加入 PDF 书签可以大大提高 PDF 的可用性和导航功能。 PDF 中的大纲为 PDF 本身提供了一种简便的导航方法,因此您可以像使用目录一样轻松地导航到文档中的关键页面。

IronPDF 是一款功能强大的 PDF 工具,让处理 PDF 文件变得轻而易举。 其书签工具为您提供了一种简明易用的方法,可为 PDF 文件创建自定义书签。

立即在您的项目中开始使用IronPDF,并享受免费试用。

第一步:
green arrow pointer

开始之前

您还需要确保您的许可证密钥设置正确,因为 IronPDF 必须获得开发许可证。

添加大纲和书签示例

在今天的示例中,我将使用以下语句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。 请自行查看大纲,了解 "插入书签 "功能如何为书签增添了新的层次。


检索书签

IronPdf 的书签工具不仅可以添加新书签,还可以检索和查看现有书签。 要浏览书签,首先使用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 文档合并在一起,可能会导致书签列表本身出现混乱