Python で PowerPoint スライドを PNG に変換
概要
この記事では、Aspose.Slides for Python via Java を使用してプレゼンテーションスライドを PNG 画像に変換する方法を説明します。PPT、PPTX、ODP などの形式のプレゼンテーションを読み込み、各スライドをレンダリングし、個別の PNG 画像として保存できます。
以下の例では、デフォルトのスケールでのレンダリング、スケールの拡大、ピクセル単位で出力サイズを指定する方法、およびグラデーション描画スタイルの選択を示します。
PowerPoint を PNG に変換
プレゼンテーションは Presentation クラスで読み込み、Presentation.getSlides コレクションを介してスライドにアクセスします。例では、パラメータなしで Slide.getImage を使用して各スライドをサムネイルとしてレンダリングします。その後、IImage.save を ImageFormat.Png とともに呼び出し、レンダリングされた各スライドを PNG 画像として保存します。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
presentation = Presentation("presentation.pptx")
try:
for index, slide in enumerate(presentation.getSlides()):
image = slide.getImage()
try:
image.save(f"slide_{index}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Note
パラメータなしの Slide.getImage オーバーロードはスケール 0.2 でレンダリングします。たとえば、720 × 540 ポイントのスライドは 144 × 108 ピクセルのサムネイルを生成します。出力サイズを制御するには、以下に示すスケール係数を使用したオーバーロードまたは明示的な画像サイズを使用してください。カスタム寸法で PowerPoint を PNG に変換
水平および垂直のスケール係数を Slide.getImage に渡して、レンダリングサイズを制御します。この例では両方の係数が 2 で、720 × 540 ポイントのスライドは 1440 × 1080 ピクセルの画像を生成します。スケール係数を等しくすると、スライドのアスペクト比が維持されます。各レンダリング画像は PNG 形式で保存されます。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
presentation = Presentation("presentation.pptx")
try:
scale_x = 2.0
scale_y = scale_x
for index, slide in enumerate(presentation.getSlides()):
image = slide.getImage(scale_x, scale_y)
try:
image.save(f"slide_{index}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
カスタムサイズで PowerPoint を PNG に変換
ピクセル単位で出力サイズを指定するには、スケール係数の代わりにサイズを Slide.getImage に渡します。この例では、すべてのスライドを 960 × 720 ピクセルでレンダリングし、結果を PNG 形式で保存します。画像が伸びるのを防ぐため、スライドのアスペクト比に合わせたサイズを選択してください。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
from java.awt import Dimension
presentation = Presentation("presentation.pptx")
try:
image_size = Dimension(960, 720)
for index, slide in enumerate(presentation.getSlides()):
image = slide.getImage(image_size)
try:
image.save(f"slide_{index}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
グラデーション描画スタイルの選択
スライドにグラデーション塗りが含まれているが、エクスポートされた PNG の遷移が PowerPoint で見えるものよりも明るくなる、あるいは異なる場合があります。そのような場合、RenderingOptions が継承する SaveOptions.setGradientStyle メソッドを使用して、グラデーションの描画方法を選択できます。
gradient‑styles.pptx をダウンロードし、アプリケーションの作業ディレクトリに配置します。最初のスライドには 2 つの線形グラデーションがあり、上部はシアンからオレンジ、下部は青から黄へと変化します。各グラデーションは 0% と 100% の 2 つのストップを持ちます。
以下の例では、このプレゼンテーションを読み込み、Slide.getImage を使用して同じ最初のスライドを両モードでレンダリングします。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import GradientStyle, ImageFormat, Presentation, RenderingOptions
presentation = Presentation("gradient-styles.pptx")
try:
slide = presentation.getSlides().get_Item(0)
gradient_styles = (GradientStyle.Default, GradientStyle.PowerPointUI)
for style in gradient_styles:
options = RenderingOptions()
options.setGradientStyle(style)
style_name = "Default" if style == GradientStyle.Default else "PowerPointUI"
image = slide.getImage(options, 1.0, 1.0)
try:
image.save(f"gradient-{style_name}.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
以下の画像は同じスライドの出力を示し、各画像に両方のグラデーションが含まれています。
| Default | PowerPointUI |
|---|---|
![]() |
![]() |
この例では、Default は中間色が明るくなり、PowerPointUI は中間色が暗くなります。差異はグラデーションの色とストップに依存します。
Default を選択すると、標準の Aspose.Slides の出力が要件に合致します。PowerPoint の外観と一致させることが優先であれば PowerPointUI を試してください。両方の出力を目的の結果と比較し、どちらのモードが常に優れているというわけではありません。
よくある質問
スライド全体ではなく、チャートや画像などの特定のシェイプをエクスポートするにはどうすればよいですか?
Aspose.Slides は 個々のシェイプ用サムネイルの生成 をサポートしており、シェイプを PNG 画像としてレンダリングできます。
サーバーでの並列変換はサポートされていますか?
はい。各スレッドまたはプロセスごとに別々のプレゼンテーション インスタンスを使用してください;スレッド間で単一インスタンスを共有しないでください。
PNG へのエクスポート時の評価版の制限は何ですか?
評価モードでは、出力画像に透かしが追加され、その他の制限 がライセンスが適用されるまで適用されます。

