Pythonでプレゼンテーションを開く
概要
ゼロからPowerPointプレゼンテーションを作成するだけでなく、Aspose.Slidesは既存のプレゼンテーションを開くことも可能です。プレゼンテーションを読み込んだ後、その情報を取得したり、スライドの内容を編集したり、新しいスライドを追加したり、既存のスライドを削除したり、その他さまざまな操作が行えます。
プレゼンテーションを開く
既存のプレゼンテーションを開くには、Presentation クラスのインスタンスを作成し、コンストラクターにファイルパスを渡します。
以下のPython例は、プレゼンテーションを開いてスライド数を取得する方法を示しています。
import aspose.slides as slides
# Presentation クラスのインスタンスを作成し、コンストラクタにファイルパスを渡します。
with slides.Presentation("sample.pptx") as presentation:
# プレゼンテーションのスライド総数を出力します。
print(presentation.slides.length)
パスワード保護されたプレゼンテーションを開く
パスワード保護されたプレゼンテーションを開く必要がある場合は、LoadOptions クラスの password プロパティにパスワードを渡して復号し、読み込みます。以下のPythonコードはこの操作を示しています。
import aspose.slides as slides
load_options = slides.LoadOptions()
load_options.password = "YOUR_PASSWORD"
with slides.Presentation("sample.pptx", load_options) as presentation:
# 復号化されたプレゼンテーションで操作を実行します。
大規模プレゼンテーションを開く
Aspose.Slidesは、大規模なプレゼンテーションの読み込みを支援するオプションを提供します。特に、LoadOptions クラスの blob_management_options プロパティが役立ちます。
このPythonコードは、例えば 2 GB の大規模プレゼンテーションを読み込む方法を示しています。
import aspose.slides as slides
import os
file_path = "LargePresentation.pptx"
load_options = slides.LoadOptions()
# KeepLocked 動作を選択します — プレゼンテーション ファイルはその存続期間中ロックされたままになります
# プレゼンテーション インスタンスですが、メモリに読み込む必要も一時ファイルにコピーする必要もありません。
load_options.blob_management_options.presentation_locking_behavior = slides.PresentationLockingBehavior.KEEP_LOCKED
load_options.blob_management_options.is_temporary_files_allowed = True
load_options.blob_management_options.max_blobs_bytes_in_memory = 10 * 1024 * 1024 # 10 MB
with slides.Presentation(file_path, load_options) as presentation:
# 大規模なプレゼンテーションが読み込まれ、使用可能です。メモリ使用量は低く抑えられます。
# プレゼンテーションを変更します。
presentation.slides[0].name = "Large presentation"
# プレゼンテーションを別のファイルに保存します。この操作中もメモリ使用量は低く保たれます。
presentation.save("LargePresentation-copy.pptx", slides.export.SaveFormat.PPTX)
# これを行わないでください!プレゼンテーション オブジェクトが破棄されるまでファイルがロックされているため、I/O 例外がスローされます。
os.remove(file_path)
# ここで実行しても問題ありません。ソース ファイルはプレゼンテーション オブジェクトによってロックされていません。
os.remove(file_path)
Info
ストリームを使用する際のいくつかの制限を回避するために、Aspose.Slides はストリームの内容をコピーすることがあります。ストリームから大規模なプレゼンテーションを読み込むと、プレゼンテーションがコピーされ、読み込みが遅くなる可能性があります。したがって、大規模なプレゼンテーションを読み込む必要がある場合は、ストリームではなくプレゼンテーションのファイルパスを使用することを強く推奨します。
動画、音声、高解像度画像などの大きなオブジェクトを含むプレゼンテーションを作成する場合は、BLOB management を使用してメモリ使用量を削減できます。
外部リソースの制御
Aspose.Slides は外部リソースを管理できる IResourceLoadingCallback インターフェイスを提供します。以下のPythonコードは IResourceLoadingCallback インターフェイスの使用方法を示しています。
# [TODO[not_supported_yet]: .NET インターフェイスの python 実装]
埋め込みバイナリオブジェクトなしでプレゼンテーションを読み込む
PowerPoint プレゼンテーションには次の種類の埋め込みバイナリオブジェクトが含まれることがあります。
- VBA プロジェクト(Presentation.vba_project でアクセス可能);
- OLE オブジェクトの埋め込みデータ(OleEmbeddedDataInfo.embedded_file_data でアクセス可能);
- ActiveX コントロールのバイナリデータ(Control.active_x_control_binary でアクセス可能)。
LoadOptions.delete_embedded_binary_objects プロパティを使用すると、埋め込みバイナリオブジェクトを含まないプレゼンテーションを読み込むことができます。
このプロパティは、潜在的に悪意のあるバイナリコンテンツを除去するのに有用です。以下のPythonコードは、埋め込みバイナリコンテンツを一切含まないプレゼンテーションを読み込む方法を示しています。
import aspose.slides as slides
load_options = slides.LoadOptions()
load_options.delete_embedded_binary_objects = True
with slides.Presentation("malware.ppt", load_options) as presentation:
# プレゼンテーションに対して操作を実行します。
FAQ
ファイルが破損していて開けないことをどのように判断できますか?
読み込み中に解析/形式検証例外がスローされます。この種のエラーは、無効な ZIP 構造や破損した PowerPoint レコードに言及することが多いです。
開く際に必要なフォントが欠如している場合はどうなりますか?
ファイルは開かれますが、後の rendering/export 時にフォントが代替される可能性があります。フォント置換の構成 や 必要なフォントの追加 を実行環境に設定してください。
開く際の埋め込みメディア(動画/音声)はどうなりますか?
メディアはプレゼンテーションリソースとして利用可能になります。外部パスで参照されているメディアの場合、そのパスが環境でアクセス可能であることを確認してください。そうでない場合、rendering/export 時にメディアが省略されることがあります。