Python で PDF ブックマークを取得、更新、および展開する方法

ブックマークを取得

ザの 文書 オブジェクトの アウトラインコレクション コレクションには、PDF ファイルのすべてのブックマークが含まれます。この記事では、PDF ファイルからブックマークを取得する方法と、特定のブックマークがどのページにあるかを取得する方法について説明します。

ブックマークを取得するには、ループ処理を行います アウトラインコレクション コレクションを作成し、OutlineItemコレクションの各ブックマークを取得します。は アウトラインアイテムコレクション ブックマークのすべての属性にアクセスできます。次のコードスニペットは、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)

ブックマークのページ番号の取得

ブックマークを追加したら、Bookmark オブジェクトに関連付けられている保存先の PageNumber を取得することで、そのブックマークがどのページにあるかを確認できます。

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 ドキュメントから子ブックマークを取得

ブックマークは、親子で階層構造に整理できます。すべてのブックマークを取得するには、Document オブジェクトの Outlines コレクションをループ処理します。ただし、子ブックマークも取得するには、それぞれのすべてのブックマークをループ処理してください。 アウトラインアイテムコレクション 最初のループで取得したオブジェクト。以下のコードスニペットは、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 ファイル内のブックマークを更新するには、まず、ブックマークのインデックスを指定して、Document オブジェクトの OutlineColletion コレクションから特定のブックマークを取得します。ブックマークをに取得したら アウトラインアイテムコレクション オブジェクトの場合、そのプロパティを更新し、更新された 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 オブジェクトに保持されます アウトラインアイテムコレクション コレクション自体は アウトラインコレクション コレクション。ただし、PDF ファイルを表示する場合、すべてのブックマークを展開する必要がある場合があります。

この要件を満たすために、各アウトライン/ブックマークアイテムのオープンステータスを「オープン」に設定できます。次のコードスニペットは、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)

関連ブックマークトピック