Добавление и удаление закладок PDF в Java

Используйте коллекцию оглавления документа для программного управления закладками.

Добавление закладки верхнего уровня

Используйте этот пример, когда документ должен содержать единственную запись оглавления верхнего уровня.

  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 в объекте Документ.
  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());
    }
}