在 Java 中添加和删除 PDF 书签

使用文档大纲集合以编程方式管理书签。

添加顶级书签

当文档应仅包含一个顶级大纲条目时,请使用此示例。

  1. 打开源 PDF Document。
  2. 创建一个 OutlineItemCollection 并配置其标题、样式和操作。
  3. 将书签添加到文档大纲并保存文件。
public static void addBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection pdfOutline = new OutlineItemCollection(document.getOutlines());
        pdfOutline.setTitle("Test Outline");
        pdfOutline.setItalic(true);
        pdfOutline.setBold(true);
        pdfOutline.setAction(new GoToAction(document.getPages().get_Item(1)));

        document.getOutlines().add(pdfOutline);
        document.save(outputFile.toString());
    }
}

添加子书签

此示例创建一个父书签并在其下嵌套一个子书签。

  1. 打开源 PDF Document。
  2. 创建父书签和子书签 OutlineItemCollection 对象。
  3. 将子项添加到父项,将父项添加到大纲集合中,并保存文档。
public static void addChildBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection pdfOutline = new OutlineItemCollection(document.getOutlines());
        pdfOutline.setTitle("Parent Outline");
        pdfOutline.setItalic(true);
        pdfOutline.setBold(true);

        OutlineItemCollection pdfChildOutline = new OutlineItemCollection(document.getOutlines());
        pdfChildOutline.setTitle("Child Outline");
        pdfChildOutline.setItalic(true);
        pdfChildOutline.setBold(true);

        pdfOutline.add(pdfChildOutline);
        document.getOutlines().add(pdfOutline);
        document.save(outputFile.toString());
    }
}

删除所有书签

当需要从文档中删除整个大纲集合时,请使用此方法。

  1. 打开源 PDF Document。
  2. 删除完整的大纲集合。
  3. 保存已清理的输出文件。
public static void deleteBookmarks(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getOutlines().delete();
        document.save(outputFile.toString());
    }
}

删除特定书签

当需要删除某个已命名的书签而不清除整个大纲树时,请使用此示例。

  1. 打开源 PDF Document。
  2. 从大纲集合中按标题删除书签。
  3. 保存更新后的文档。
public static void deleteBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getOutlines().delete("Child Outline");
        document.save(outputFile.toString());
    }
}