PHP で PowerPoint スライドを PNG に変換

概要

この記事では、Aspose.Slides for PHP via Java を使用してプレゼンテーションスライドを PNG 画像に変換する方法を説明します。PPT、PPTX、ODP などの形式のプレゼンテーションを読み込み、各スライドをレンダリングし、個別の PNG 画像として保存できます。

以下の例では、デフォルトスケールでのレンダリング、スケールの拡大、出力サイズをピクセル単位で指定する方法、およびグラデーション描画スタイルの選択を示しています。

PowerPoint を PNG に変換

Presentation クラスでプレゼンテーションをロードし、Presentation::getSlides コレクションからスライドにアクセスします。この例では、パラメーターなしで Slide::getImage を呼び出してサムネイルを作成し、IImage::save に ImageFormat::Png を指定して各スライドを PNG 画像として保存します。

use aspose\slides\ImageFormat;
use aspose\slides\Presentation;

$presentation = new Presentation("presentation.pptx");
try {
    $slideCount = java_values($presentation->getSlides()->size());
    for ($index = 0; $index < $slideCount; $index++) {
        $slide = $presentation->getSlides()->get_Item($index);
        $image = $slide->getImage();
        try {
            $image->save("slide_" . $index . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

PowerPoint を PNG に変換(カスタム寸法)

Slide::getImage に水平および垂直のスケール係数を渡してレンダリング寸法を制御します。この例では両方の係数が 2 で、720 × 540 ポイントのスライドは 1440 × 1080 ピクセルの画像になります。等しいスケール係数はスライドのアスペクト比を保持します。各画像は IImage::save で PNG 形式で保存されます。

use aspose\slides\ImageFormat;
use aspose\slides\Presentation;

$presentation = new Presentation("presentation.pptx");
try {
    $scaleX = 2.0;
    $scaleY = $scaleX;

    $slideCount = java_values($presentation->getSlides()->size());
    for ($index = 0; $index < $slideCount; $index++) {
        $slide = $presentation->getSlides()->get_Item($index);
        $image = $slide->getImage($scaleX, $scaleY);
        try {
            $image->save("slide_" . $index . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

PowerPoint を PNG に変換(カスタムサイズ)

ピクセル単位で出力サイズを指定する場合は、スケール係数の代わりにサイズを Slide::getImage に渡します。この例ではすべてのスライドを 960 × 720 ピクセルでレンダリングし、IImage::save で結果を保存します。画像が伸びるのを防ぐため、スライドのアスペクト比に合った寸法を選択してください。

use aspose\slides\ImageFormat;
use aspose\slides\Presentation;

$presentation = new Presentation("presentation.pptx");
try {
    $imageSize = new Java("java.awt.Dimension", 960, 720);

    $slideCount = java_values($presentation->getSlides()->size());
    for ($index = 0; $index < $slideCount; $index++) {
        $slide = $presentation->getSlides()->get_Item($index);
        $image = $slide->getImage($imageSize);
        try {
            $image->save("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 を使用して同じ最初のスライドを両モードでレンダリングします。

use aspose\slides\GradientStyle;
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
use aspose\slides\RenderingOptions;

$presentation = new Presentation("gradient-styles.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $gradientStyles = [GradientStyle::Default, GradientStyle::PowerPointUI];
    foreach ($gradientStyles as $style) {
        $options = new RenderingOptions();
        $options->setGradientStyle($style);

        $styleName = $style == GradientStyle::Default ? "Default" : "PowerPointUI";
        $image = $slide->getImage($options, 1.0, 1.0);
        try {
            $image->save("gradient-" . $styleName . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}
Default PowerPointUI
デフォルトでレンダリングされたシアンからオレンジ、青から黄色へのグラデーション PowerPointUI でレンダリングされた同じグラデーション

この例では、Default は中間色が明るくなり、PowerPointUI は中間色が暗くなります。差はグラデーションの色とストップ位置に依存します。

標準の Aspose.Slides 出力が目的に合う場合は Default を選択してください。PowerPoint の外観に合わせたい場合は PowerPointUI を試してください。両方の出力を比較し、目的の結果に最も近い方を選びましょう。どちらのモードが常に優れているわけではありません。

よくある質問

特定の図形(チャートや画像など)だけをエクスポートしたい場合、スライド全体ではなくどうすればよいですか?

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

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

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

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

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