Получение, обновление и развертывание PDF‑закладок в Java

Aspose.PDF for Java предоставляет закладки как через модель оглавления документа, так и через фасад PdfBookmarkEditor.

Получение свойств закладки

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

  1. Откройте исходный PDF в объекте Document.
  2. Переберите коллекцию оглавлений.
  3. Прочитайте и выведите названия закладок, стили и значения цвета.
public static void getBookmarks(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (int i = 1; i <= document.getOutlines().size(); i++) {
            OutlineItemCollection outlineItem = document.getOutlines().get_Item(i);
            System.out.println(outlineItem.getTitle());
            System.out.println(outlineItem.getItalic());
            System.out.println(outlineItem.getBold());
            System.out.println(outlineItem.getColor());
        }
    }
}

Получение номеров страниц закладок

В этом примере используется PdfBookmarkEditor для извлечения заголовки закладок, уровни, номера страниц и действия.

  1. Привяжите исходный PDF к PdfBookmarkEditor.
  2. Извлеките коллекцию закладок и пройдитесь по ней.
  3. Выведите уровень, заголовок, номер страницы и информацию о действии для каждой закладки.
public static void getBookmarkPageNumber(Path inputFile) {
    PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor();
    try {
        bookmarkEditor.bindPdf(inputFile.toString());
        for (Bookmark bookmark : bookmarkEditor.extractBookmarks()) {
            String levelSeparator = "";
            for (int i = 0; i < bookmark.getLevel(); i++) {
                levelSeparator += "----";
            }

            System.out.println(levelSeparator + " Title: " + bookmark.getTitle());
            System.out.println(levelSeparator + " Page Number: " + bookmark.getPageNumber());
            System.out.println(levelSeparator + " Page Action: " + bookmark.getAction());
        }
    } finally {
        bookmarkEditor.close();
    }
}

Получение дочерних закладок

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

  1. Откройте исходный PDF в объекте Document.
  2. Пройдите по элементам верхнего уровня и выведите их свойства.
  3. Обнаружьте дочерние закладки, затем пройдите по ним и выведите их свойства.
public static void getChildBookmarks(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (int i = 1; i <= document.getOutlines().size(); i++) {
            OutlineItemCollection outlineItem = document.getOutlines().get_Item(i);
            System.out.println(outlineItem.getTitle());
            System.out.println(outlineItem.getItalic());
            System.out.println(outlineItem.getBold());
            System.out.println(outlineItem.getColor());
            int count = outlineItem.size();
            if (count > 0) {
                System.out.println("Child Bookmarks");
                for (int j = 1; j <= outlineItem.size(); j++) {
                    OutlineItemCollection childOutlineItem = outlineItem.get_Item(j);
                    System.out.println(childOutlineItem.getTitle());
                    System.out.println(childOutlineItem.getItalic());
                    System.out.println(childOutlineItem.getBold());
                    System.out.println(childOutlineItem.getColor());
                }
            }
        }
    }
}

Обновление закладок

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

  1. Откройте исходный PDF в объекте Document.
  2. Получите доступ к целевому элементу оглавления и его дочерней закладке.
  3. Обновите свойства закладки и сохраните документ.
public static void updateBookmarks(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection outline = document.getOutlines().get_Item(1);
        OutlineItemCollection childOutline = outline.get_Item(1);
        childOutline.setTitle("Updated Outline");
        childOutline.setItalic(true);
        childOutline.setBold(true);

        document.save(outputFile.toString());
    }
}

Развертывание закладок по умолчанию

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

  1. Откройте исходный PDF в объекте Document.
  2. Установите режим страницы на использование оглавления и пометьте каждый элемент оглавления как открытый.
  3. Сохраните обновлённый документ.
public static void expandedBookmarks(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.setPageMode(PageMode.UseOutlines);
        for (int i = 1; i <= document.getOutlines().size(); i++) {
            OutlineItemCollection item = document.getOutlines().get_Item(i);
            item.setOpen(true);
        }
        document.save(outputFile.toString());
    }
}