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()

カスタム寸法で 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 は中間色が明るくなり、PowerPointUI は中間色が暗くなります。差異はグラデーションの色とストップに依存します。

Default を選択すると、標準の Aspose.Slides の出力が要件に合致します。PowerPoint の外観と一致させることが優先であれば PowerPointUI を試してください。両方の出力を目的の結果と比較し、どちらのモードが常に優れているというわけではありません。

よくある質問

スライド全体ではなく、チャートや画像などの特定のシェイプをエクスポートするにはどうすればよいですか?

Aspose.Slides は 個々のシェイプ用サムネイルの生成 をサポートしており、シェイプを PNG 画像としてレンダリングできます。

サーバーでの並列変換はサポートされていますか?

はい。各スレッドまたはプロセスごとに別々のプレゼンテーション インスタンスを使用してください;スレッド間で単一インスタンスを共有しないでください。

PNG へのエクスポート時の評価版の制限は何ですか?

評価モードでは、出力画像に透かしが追加され、その他の制限 がライセンスが適用されるまで適用されます。