Python via Java でプレゼンテーションを保存
概要
プレゼンテーションを作成するか、既存のプレゼンテーションを開く後、Presentation.save メソッドを使用して結果を書き込みます。Aspose.Slides for Python via Java は、PowerPoint、OpenDocument、PDF などの形式でプレゼンテーションをファイルまたはストリームに保存できます。以下のセクションでは、標準的な保存操作と PPTX 出力に利用できるオプションについて説明します。
ファイルへのプレゼンテーション保存
プレゼンテーションをファイルに保存するには、出力パスと SaveFormat の値を Presentation.save メソッドに渡します。format の値は、Aspose.Slides が作成するファイルの種類を決定します。
以下の例はプレゼンテーションを作成し、PPTX ファイルとして保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
# ここでプレゼンテーションのコンテンツを追加または変更します。
presentation.save("Output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
元の形式でプレゼンテーションを保存
ファイルとストリームの検出例、作成されたプレゼンテーションの動作、ソース形式と出力形式の区別については、元のプレゼンテーション形式の判定 を参照してください。
バッチ処理アプリケーションでは、入力形式が事前に分からないことがあります。ファイルを読み込んだ後、Presentation.getSourceFormat メソッドで元の形式を取得します。取得した SourceFormat の値を SlideUtil.toSaveFormat に渡して対応する SaveFormat を取得し、Presentation.save で変更後のプレゼンテーションを書き込みます。
以下の完全な例は、入力ディレクトリ内のすべてのファイルを処理し、タイトルを更新して、読み込んだ形式のまま出力ディレクトリに保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SlideUtil
from pathlib import Path
IllegalArgumentException = jpype.JClass("java.lang.IllegalArgumentException")
input_directory = Path("Input")
output_directory = Path("Output")
try:
output_directory.mkdir(parents=True, exist_ok=True)
except OSError:
print("Cannot create the output directory.")
if input_directory.is_dir() and output_directory.is_dir():
for input_file in input_directory.iterdir():
if input_file.is_file():
try:
presentation = Presentation(str(input_file))
try:
save_format = SlideUtil.toSaveFormat(presentation.getSourceFormat())
presentation.getDocumentProperties().setTitle("Processed by the batch application")
output_file = output_directory / input_file.name
presentation.save(str(output_file), save_format)
finally:
presentation.dispose()
except IllegalArgumentException as exception:
print(f"Cannot map the source format of '{input_file}': {exception}")
except Exception as exception:
print(f"Cannot process '{input_file}': {exception}")
SlideUtil.toSaveFormat は PPT、PPTX、ODP、PPTM、PPSX、PPSM、POTX、POTM、PPS、POT、OTP、FODP、PowerPoint XML を対応するプレゼンテーション保存形式にマッピングします。これはプレゼンテーションのソース形式のみを対象とし、PDF、HTML、TIFF、画像などのエクスポート形式を選択する目的では使用できません。サポートされていない、または無効な SourceFormat の値を渡すと、IllegalArgumentException がスローされます。
レガシーな PPT、PPS、POT ファイルは同じバイナリコンテナを使用します。このようなプレゼンテーションを拡張子なしのストリームから読み込むと、PPS や POT ファイルが PPT と識別されることがあります。これらのレガシーサブタイプを保持する必要がある場合は、元のファイル名または形式メタデータを別途保持し、出力ファイル名と形式の選択時に使用してください。
ストリームへのプレゼンテーション保存
最終的なファイルパスに依存せずにプレゼンテーションを書き込むには、書き込み可能なストリームと SaveFormat の値を Presentation.save メソッドに渡します。この方法は、Web サービスから出力を返す必要がある場合、データベースに保存する場合、またはメモリ内で処理する場合に有用です。
以下の例は新しいプレゼンテーションをファイルストリームに保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
FileOutputStream = jpype.JClass("java.io.FileOutputStream")
presentation = Presentation()
try:
output_stream = FileOutputStream("Output.pptx")
try:
presentation.save(output_stream, SaveFormat.Pptx)
finally:
output_stream.close()
finally:
presentation.dispose()
事前定義されたビュータイプでプレゼンテーションを保存
PowerPoint が保存されたプレゼンテーションを開くときの初期ビューを指定できます。ViewProperties.setLastView メソッドに ViewType の値を渡してから保存してください。
以下の例はスライドマスタビューを初期ビューとして設定します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, ViewType
presentation = Presentation()
try:
presentation.getViewProperties().setLastView(ViewType.SlideMasterView)
presentation.save("SlideMasterView.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Strict Office Open XML 形式でプレゼンテーションを保存
Strict プロファイルの Office Open XML に準拠した PPTX ファイルを作成するには、PptxOptions インスタンスを作成し、その setConformance メソッドに Conformance.Iso29500_2008_Strict を渡します。その後、オプションを Presentation.save メソッドに渡します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Conformance, PptxOptions, Presentation, SaveFormat
options = PptxOptions()
options.setConformance(Conformance.Iso29500_2008_Strict)
presentation = Presentation()
try:
presentation.save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options)
finally:
presentation.dispose()
Zip64 モードで Office Open XML 形式に保存
標準的な ZIP アーカイブは各エントリの圧縮および非圧縮サイズ、アーカイブ全体のサイズ、エントリ数に制限があります。PPTX ファイルは ZIP アーカイブであるため、非常に大きなプレゼンテーションはこれらの制限を超えることがあります。ZIP64 拡張は適用可能なサイズおよびエントリ数の制限を引き上げます。
PptxOptions.setZip64Mode メソッドで Aspose.Slides が ZIP64 拡張を書き込むかどうかを制御します。
- IfNecessary はプレゼンテーションが標準 ZIP 制限を超えたときにのみ ZIP64 を使用します。これはデフォルトモードです。
- Never は ZIP64 拡張を無効にします。
- Always は常に ZIP64 拡張を書き込みます。
以下の例は出力プレゼンテーションに対して常に ZIP64 拡張を有効にします。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PptxOptions, Presentation, SaveFormat, Zip64Mode
presentation = Presentation("Sample.pptx")
try:
options = PptxOptions()
options.setZip64Mode(Zip64Mode.Always)
presentation.save("OutputZip64.pptx", SaveFormat.Pptx, options)
finally:
presentation.dispose()
圧縮レベルを指定して Office Open XML 形式に保存
PPTX 出力では、PptxOptions.setCompressionLevel メソッドを使用して保存速度とファイルサイズのバランスを調整できます。CompressionLevel クラスは以下の値を提供します。
- None は圧縮せずにデータを保存します。
- Level1 は最速の圧縮で、圧縮後のファイルが最大になります。
- Level2 から Level5 は、保存速度よりも小さな出力を徐々に優先します。
- Level6 は保存速度とファイルサイズのバランスを取ります。これがデフォルトレベルです。
- Level7 と Level8 は、さらに小さな出力を優先します。
- Level9 は最強の圧縮を提供し、処理時間が最もかかります。
以下の例は圧縮なしでプレゼンテーションを保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import CompressionLevel, PptxOptions, Presentation, SaveFormat
presentation = Presentation("Sample.pptx")
try:
options = PptxOptions()
options.setCompressionLevel(CompressionLevel.None_)
presentation.save("OutputNoCompression.pptx", SaveFormat.Pptx, options)
finally:
presentation.dispose()
以下の例は最大圧縮レベルで保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import CompressionLevel, PptxOptions, Presentation, SaveFormat
presentation = Presentation("Sample.pptx")
try:
options = PptxOptions()
options.setCompressionLevel(CompressionLevel.Level9)
presentation.save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options)
finally:
presentation.dispose()
サムネイルを更新せずにプレゼンテーションを保存
プレゼンテーションを PPTX 形式で保存する際、PptxOptions.setRefreshThumbnail メソッドでドキュメントサムネイルの動作を制御できます。
Trueは保存時にサムネイルを再生成します。これがデフォルト値です。Falseは既存のサムネイルを保持します。プレゼンテーションにサムネイルがない場合、Aspose.Slides はサムネイルを生成しません。
以下の例はサムネイルを更新せずにプレゼンテーションを保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PptxOptions, Presentation, SaveFormat
presentation = Presentation("Sample.pptx")
try:
options = PptxOptions()
options.setRefreshThumbnail(False)
presentation.save("Output.pptx", SaveFormat.Pptx, options)
finally:
presentation.dispose()
Note
サムネイルの再生成を無効にすると、PPTX ファイルの保存に要する時間を短縮できます。保存進行状況をパーセンテージでレポート
保存操作の進行状況を監視するには、jpype.JProxy を通じて Python の進行ハンドラを登録し、SaveOptions.setProgressCallback メソッドに渡します。Aspose.Slides はエクスポート中にハンドラの reporting メソッドを呼び出して進行値を通知します。
以下の例は PDF エクスポートの進行状況をコンソールに報告します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfOptions, Presentation, SaveFormat
class ExportProgressHandler:
def reporting(self, progress_value):
progress = int(progress_value)
print(f"{progress}% of the file has been converted.")
handler = ExportProgressHandler()
callback = jpype.JProxy("com.aspose.slides.IProgressCallback", inst=handler)
options = PdfOptions()
options.setProgressCallback(callback)
presentation = Presentation("Sample.pptx")
try:
presentation.save("Output.pdf", SaveFormat.Pdf, options)
finally:
presentation.dispose()
Note
Aspose は Aspose.Slides API を使用した無料の PowerPoint Splitter を提供しています。これにより、プレゼンテーションから選択したスライドを個別の PPT または PPTX ファイルとして保存できます。FAQ
Aspose.Slides はインクリメンタル保存(“高速保存”)をサポートしていますか?
いいえ。各保存操作は変更された部分だけを更新するのではなく、完全な出力ファイルを書き出します。
複数のスレッドから同じ Presentation インスタンスを保存できますか?
いいえ。Presentation インスタンスはスレッド安全ではありません。インスタンスへのアクセスと保存は、同時に 1 つのスレッドからのみ行ってください。
保存時にハイパーリンクや外部リンクされたファイルはどうなりますか?
ハイパーリンク はプレゼンテーション内に残ります。Aspose.Slides は外部リンクされたファイルをコピーしないため、保存されたプレゼンテーションは引き続きそれらの場所にアクセスできる必要があります。
作者、タイトル、会社、作成日などのドキュメントメタデータを保存できますか?
はい。保存前に適切なドキュメントプロパティ を設定すれば、Aspose.Slides がそれらを出力ファイルに書き込みます。