Pythonでプレゼンテーションをロードする方法

Pythonでプレゼンテーションをロードする方法

Aspose.Slides FOSS for Python は、任意の .pptx ファイルを開き、その内容を検査し、PPTX に戻して保存するか、データを抽出することができます。このガイドでは、ファイルのオープン、スライドの反復処理、シェイプテキストの読み取り、そして保存のラウンドトリップについて説明します。

ステップバイステップ ガイド

ステップ 1: パッケージをインストール

pip install aspose-slides-foss

ステップ 2: 既存のプレゼンテーションを開く

slides.Presentation() にファイルパスを渡します。コンテキストマネージャを使用してクリーンアップを確実に行います。

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation("input.pptx") as prs:
    print(f"Slide count: {len(prs.slides)}")
    prs.save("output.pptx", SaveFormat.PPTX)

ソースファイル内の不明なXMLパーツはそのまま保持されます:ライブラリはまだ理解できないコンテンツを削除しません。


ステップ 3: スライドを検査

すべてのスライドを反復し、インデックスを出力する:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for i, slide in enumerate(prs.slides):
        shape_count = len(slide.shapes)
        print(f"Slide {i}: {shape_count} shapes")

ステップ 4: シェイプ テキストを読み取る

シェイプを反復処理し、TextFrame を持つシェイプからテキストを読み取ります:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text_frame") and shape.text_frame is not None:
                text = shape.text_frame.text
                if text.strip():
                    print(f"  Shape text: {text!r}")

ステップ 5: ドキュメント プロパティの読み取り

prs.document_properties からコア文書プロパティにアクセス:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    props = prs.document_properties
    print(f"Title:   {props.title}")
    print(f"Author:  {props.author}")
    print(f"Subject: {props.subject}")

ステップ 6: ラウンドトリップ保存

プレゼンテーションを検査または変更した後、PPTX に戻して保存します:

prs.save("output.pptx", SaveFormat.PPTX)

別のパスに保存すると新しいファイルが作成されます。同じパスに保存すると元のファイルが上書きされます。


一般的な問題と対処法

FileNotFoundError

作業ディレクトリに対して .pptx ファイルへのパスが正しいか確認してください。堅牢なパス構築には pathlib.Path を使用してください:

from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
    ...

Exception: File format is not supported

このライブラリは .pptx(Office Open XML)のみをサポートしています。レガシー .ppt(バイナリ PowerPoint 97–2003)ファイルはサポートされていません。

Shapes には text_frame 属性がありません

一部のシェイプ(Connectors、PictureFrames、GroupShapes)にはtext_frameがありません。テキストにアクセスする前にhasattr(shape, "text_frame") and shape.text_frame is not Noneでガードしてください。


よくある質問

ロードすると、すべての元のコンテンツが保持されますか?

はい。未知のXMLパーツはラウンドトリップ保存時にそのまま保持されます。ライブラリは、まだ理解できないXMLコンテンツを削除しません。

パスワードで保護された PPTX を読み込むことはできますか?

このエディションでは、パスワード保護(暗号化)されたプレゼンテーションはサポートされていません。

埋め込み画像を抽出できますか?

画像コレクションにアクセスします: prs.imagesImageCollection を返します。各画像には、生の画像データを読み取るための content_typebytes プロパティがあります。

インメモリ ストリームからの読み込みはサポートされていますか?

現在の API では io.BytesIO から直接ロードすることは公開されていません。まずバイトを一時ファイルに書き込んでください:

import tempfile, os
import aspose.slides_foss as slides

with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
    tmp.write(pptx_bytes)
    tmp_path = tmp.name

try:
    with slides.Presentation(tmp_path) as prs:
        print(f"Slides: {len(prs.slides)}")
finally:
    os.unlink(tmp_path)

参照

 日本語