0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでPowerPointプレゼンテーションからすべてのハイパーリンクを削除する

Posted at

特定のPPT使用シナリオ、たとえばスライドの印刷が必要な場合やハイパーリンクが無効になった場合、プレゼンテーション内のハイパーリンクが妨げとなることがあります。このような状況では、PowerPointプレゼンテーション内のハイパーリンクを削除して、プレゼンテーションの一貫性と専門性を確保する必要があります。Pythonを使用することで、このタスクを効率的に一括処理し、自動化されたワークフローを実現できます。本記事では、Pythonを使用してPowerPointプレゼンテーション内のすべてのハイパーリンクを削除する方法をご紹介します。

本記事で使用する方法は、Spire.Presentation for Pythonを使用します。PyPIからインストールできます:pip install Spire.Presentation

無料ライセンスを申請する

PythonでPowerPointプレゼンテーションのすべてのハイパーリンクを削除する方法

プレゼンテーション内では、ハイパーリンクは自動シェイプ、表、画像、およびシェイプ内のテキストなど、さまざまなシェイプに追加できます。そのため、ハイパーリンクを削除する際には、シェイプおよびシェイプ内のテキストにハイパーリンクが含まれているかを確認し、含まれている場合はそれを削除する必要があります。以下に詳細な手順を示します:

  1. 必要なリソースをインポートします。
  2. Presentationオブジェクトを作成し、Presentation.LoadFromFile()メソッドを使用してPowerPointプレゼンテーションを読み込みます。
  3. プレゼンテーション内のスライドをループし、各スライド内のシェイプをループします。
    • シェイプにハイパーリンクがあるかどうかを確認し、ある場合はIShape.ClickプロパティをIShape.Click.get_NoAction()メソッドの結果に設定してハイパーリンクを削除します。
    • シェイプがIAutoShapeオブジェクトであるかどうかを確認し、そうであればシェイプ内の段落および段落内のテキストフラグメントをループします。各テキストフラグメントにハイパーリンクがあるかどうかを確認し、ある場合はTextRange.ClickActionNoneに設定してハイパーリンクを削除します。
    • シェイプがITableオブジェクトであるかどうかを確認し、そうであれば各セル、セル内の段落、および段落内のテキストフラグメントをループします。テキストフラグメントにハイパーリンクが含まれているかを確認し、含まれているハイパーリンクを削除します。
  4. Presentation.SaveToFile()メソッドを使用してプレゼンテーションを保存します。
  5. リソースを解放します。

コード例

from spire.presentation import Presentation, IAutoShape, ITable, FileFormat

# Presentationクラスのインスタンスを作成し、PowerPointプレゼンテーションをロードする
presentation = Presentation()
presentation.LoadFromFile("Sample.pptx")

# プレゼンテーション内のスライドを繰り返し処理する
for slide in presentation.Slides:
    # スライド内のシェイプを繰り返し処理する
    for shape in slide.Shapes:
        # シェイプがハイパーリンクを持っているかどうかを確認する
        if shape.Click is not None:
            # ハイパーリンクを削除する
            shape.Click = shape.Click.get_NoAction()
        # シェイプがIAutoShapeオブジェクトであるかどうかを確認する
        if isinstance(shape, IAutoShape):
            autoShape = IAutoShape(shape)
            # AutoShape内の段落を繰り返し処理する
            for para in autoShape.TextFrame.Paragraphs:
                # 段落内のテキスト範囲を繰り返し処理する
                for textRange in para.TextRanges:
                    # テキスト範囲がハイパーリンクを持っているかどうかを確認する
                    if textRange.ClickAction is not None:
                        # ハイパーリンクを削除する
                        textRange.ClickAction = None
        # シェイプがITableオブジェクトであるかどうかを確認する
        if isinstance(shape, ITable):
            table = ITable(shape)
            # テーブル内の行を繰り返し処理する
            for row in table.TableRows:
                # 行内のセルを繰り返し処理する
                for cell in row:
                    # セル内の段落を繰り返し処理する
                    for para in cell.TextFrame.Paragraphs:
                        # 段落内のテキスト範囲を繰り返し処理する
                        for textRange in para.TextRanges:
                            # テキスト範囲がハイパーリンクを持っているかどうかを確認する
                            if textRange.ClickAction is not None:
                                # ハイパーリンクを削除する
                                textRange.ClickAction = None

# プレゼンテーションを保存する
presentation.SaveToFile("output/RemovePresentationHyperlinks.pptx", FileFormat.Pptx2019)
presentation.Dispose()

本記事では、Pythonを使用してPowerPointプレゼンテーション内のすべてのハイパーリンクを削除する方法を示しました。

さらに多くのPowerPointプレゼンテーション処理のテクニックについては、Spire.Presentation for Pythonのチュートリアルをご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?