Pythonでプレゼンテーションを保存する方法
Aspose.Slides FOSS for Python saves presentations exclusively to .pptx フォーマットを使用して prs.save(path, SaveFormat.PPTX). このガイドでは、正しい保存パターン、別のパスへの保存、そして一般的な保存関連エラーについて説明します。.
ステップバイステップ ガイド
ステップ 1: パッケージをインストールする
pip install aspose-slides-fossステップ 2: プレゼンテーションを開くまたは作成する
常にコンテキストマネージャを使用してください。save 呼び出しは、内部の with ブロック。.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
# Create new
with slides.Presentation() as prs:
prs.save("new.pptx", SaveFormat.PPTX)
# Open existing
with slides.Presentation("input.pptx") as prs:
prs.save("output.pptx", SaveFormat.PPTX)ステップ 3: 終了時に保存 with ブロック
配置してください save() 呼び出しを、内部の最後のステートメントとして with ブロック内で、すべての変更が完了した後に。.
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0]
shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
shape.add_text_frame("Hello, World!")
prs.save("output.pptx", SaveFormat.PPTX)ステップ 4: 別のパスに保存する
元のファイルを変更せずに新しいファイルを作成するために、別の出力パスを指定してください:
with slides.Presentation("template.pptx") as prs:
# modify ...
prs.save("customized.pptx", SaveFormat.PPTX)この template.pptx ファイルは変更されません; customized.pptx が作成されます(既に存在する場合は上書きされます)。.
ステップ 5: 出力を確認する
の後で with ブロックが終了すると、ファイルは完成し閉じられます。存在するか確認してください:
import os
from pathlib import Path
output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")サポートされている保存形式
| 形式 | Enum 値 | サポート済み |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | はい |
| N/A | いいえ | |
| HTML | N/A | いいえ |
| SVG | N/A | いいえ |
| PNG / JPEG | N/A | いいえ |
| ODP (OpenDocument) | N/A | いいえ |
PPTX のみがサポートされています。他の形式で保存しようとすると、 NotImplementedError またはサポートされていない形式エラーが発生します。.
一般的な問題と対策
PermissionError: [Errno 13] Permission denied
出力ファイルが別のアプリケーションで開かれています(例: PowerPoint がファイルを開いている)。保存する前に、他のアプリケーションでファイルを閉じてください。.
ファイルは作成されましたが、空または破損しているように見えます
確実に prs.save() は内部で呼び出されます with ブロック内で、ブロックの後ではありません。その後 with ブロックが終了すると、 Presentation オブジェクトは破棄され、以降の呼び出しは黙って失敗するか、エラーが発生します。.
NotImplementedError 保存時に
これは、PPTX 以外の保存形式を指定した場合や、保存時にサポートされていない機能(チャートやアニメーションなど)を使用した場合に発生します。.
よくある質問
開いたのと同じファイルに保存できますか??
はい。同じパスに保存すると元のファイルが上書きされます:
with slides.Presentation("deck.pptx") as prs:
# modify ...
prs.save("deck.pptx", SaveFormat.PPTX) # overwrites originalファイルではなくバイトバッファに保存できますか??
はい。渡す io.BytesIO オブジェクトを直接 prs.save() — 任意の BinaryIO 宛先:
import io
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
buf = io.BytesIO()
with slides.Presentation() as prs:
# ... modify presentation ...
prs.save(buf, SaveFormat.PPTX)
pptx_bytes = buf.getvalue()保存時に変更していないコンテンツは保持されますか??
はい。元のファイルに含まれる未知の XML パーツはそのまま保持されます。ライブラリはドキュメントモデルで理解できる部分だけをシリアライズし、認識できない XML はそのまま通過させます。.