Получить, обновить и развернуть закладки 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)