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.images は ImageCollection を返します。各画像には、生の画像データを読み取るための content_type と bytes プロパティがあります。
インメモリ ストリームからの読み込みはサポートされていますか?
現在の 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)