Получить, обновить и развернуть закладки PDF в Python

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

Эта Document объекта OutlineCollection Коллекция содержит все закладки PDF‑файла. Эта статья объясняет, как получить закладки из PDF‑файла и как определить, на какой странице находится конкретная закладка.

Чтобы получить закладки, пройдите цикл по OutlineCollection коллекции и получите каждую закладку в OutlineItemCollection. OutlineItemCollection предоставляет доступ ко всем атрибутам закладок. В следующем фрагменте кода показано, как получить закладки из PDF‑файла.

from os import path
import sys
import aspose.pdf as ap

def get_bookmarks(input_pdf):
    document = ap.Document(input_pdf)
    for i in range(len(document.outlines)):
        outline_item = document.outlines[i + 1]
        print(outline_item.title)
        print(outline_item.italic)
        print(outline_item.bold)
        print(outline_item.color)

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

После того как вы добавили закладку, вы можете узнать, на какой странице она находится, получив номер страницы назначения (PageNumber), связанный с объектом Bookmark.

from os import path
import sys
import aspose.pdf as ap

def get_bookmark_page_number(input_pdf):
    # Create PdfBookmarkEditor
    bookmark_editor = ap.facades.PdfBookmarkEditor()
    # Open PDF file
    bookmark_editor.bind_pdf(input_pdf)
    # Extract bookmarks
    bookmarks = bookmark_editor.extract_bookmarks()
    for bookmark in bookmarks:
        str_level_separator = ""
        for i in range(bookmark.level):
            str_level_separator += "----"

        print(str_level_separator, "Title:", bookmark.title)
        print(str_level_separator, "Page Number:", bookmark.page_number)
        print(str_level_separator, "Page Action:", bookmark.action)

Получение дочерние закладки из PDF‑документа

Закладки могут быть организованы в иерархическую структуру с родителями и дочерними элементами. Чтобы получить все закладки, пройдите в цикле коллекцию Outlines объекта Document. Однако, чтобы также получить дочерние закладки, также пройдите в цикле все закладки в каждом OutlineItemCollection объект, полученный в первом цикле. Следующие фрагменты кода показывают, как получить дочерние закладки из PDF‑документа.

from os import path
import sys
import aspose.pdf as ap

def get_child_bookmarks(input_pdf):
    document = ap.Document(input_pdf)
    for i in range(len(document.outlines)):
        outline_item = document.outlines[i + 1]
        print(outline_item.title)
        print(outline_item.italic)
        print(outline_item.bold)
        print(outline_item.color)
        count = len(outline_item)
        if count > 0:
            print("Child Bookmarks")
            # There are child bookmarks then loop through that as well
            for j in range(len(outline_item)):
                child_outline_item = outline_item[j + 1]
                print(child_outline_item.title)
                print(child_outline_item.italic)
                print(child_outline_item.bold)
                print(child_outline_item.color)

Обновить закладки в PDF-документе

Чтобы обновить закладку в PDF файле, сначала получите конкретную закладку из коллекции OutlineColletion объекта Document, указав индекс закладки. Как только вы получили закладку в OutlineItemCollection объект, вы можете обновить его свойства, а затем сохранить обновлённый PDF файл, используя метод Save. Ниже приведены фрагменты кода, показывающие, как обновлять закладки в PDF документе.

from os import path
import sys
import aspose.pdf as ap

def update_bookmarks(input_pdf, output_pdf):
    # Open document
    document = ap.Document(input_pdf)

    # Get a bookmark object
    outline = document.outlines[1]

    # Get child bookmark object
    child_outline = outline[1]
    child_outline.title = "Updated Outline"
    child_outline.italic = True
    child_outline.bold = True

    # Save output
    document.save(output_pdf)

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

Закладки хранятся в объекте Document OutlineItemCollection коллекция, сама в OutlineCollection collection. Однако нам может потребоваться, чтобы все закладки были развернуты при просмотре PDF‑файла.

Чтобы выполнить это требование, мы можем установить статус открытости для каждого элемента оглавления/закладки как Open. Следующий фрагмент кода показывает, как установить статус открытости для каждой закладки как развернутый в PDF‑документе.

from os import path
import sys
import aspose.pdf as ap

def expanded_bookmarks(input_pdf, output_pdf):
    document = ap.Document(input_pdf)
    document.page_mode = ap.PageMode.USE_OUTLINES
    for i in range(len(document.outlines)):
        item = document.outlines[i + 1]
        item.open = True
    document.save(output_pdf)

Связанные темы закладок