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

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

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

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


    import aspose.pdf as ap

    # Открыть документ
    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)

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

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


    import aspose.pdf as ap

    # Создание PdfBookmarkEditor
    bookmarkEditor = ap.facades.PdfBookmarkEditor()
    # Открыть PDF файл
    bookmarkEditor.bind_pdf(input_pdf)
    # Извлечь закладки
    bookmarks = bookmarkEditor.extract_bookmarks()
    for bookmark in bookmarks:
        str_level_seprator = ""
        for i in range(bookmark.level):
            str_level_seprator += "----"

        print(str_level_seprator, "Название:", bookmark.title)
        print(str_level_seprator, "Номер страницы:", bookmark.page_number)
        print(str_level_seprator, "Действие страницы:", bookmark.action)

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

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


    import aspose.pdf as ap

    # Открыть документ
    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("Дочерние закладки")
            # Есть дочерние закладки, пройти циклом по ним
            for j in range(len(outline_item)):
                child_outline_item = outline_item[i + 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-документе.


    import aspose.pdf as ap

    # Открыть документ
    document = ap.Document(input_pdf)

    # Получить объект закладки
    outline = document.outlines[1]

    # Получить дочерний объект закладки
    child_outline = outline[1]
    child_outline.title = "Обновленная закладка"
    child_outline.italic = True
    child_outline.bold = True

    # Сохранить результат
    document.save(output_pdf)

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

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

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


    import aspose.pdf as ap

    # Открыть документ
    document = ap.Document(input_pdf)

    # Установить режим просмотра страницы, например, показывать миниатюры, полноэкранный режим, показывать панель вложений
    document.page_mode = ap.PageMode.USE_OUTLINES
    # Пройтись по каждому элементу контуров в коллекции контуров PDF файла
    for i in range(len(document.outlines)):
        item = document.outlines[i + 1]
        # Установить статус открытия для элемента контура
        item.open = True

    # Сохранить результат
    document.save(output_pdf)