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();
}
Note
パラメーターなしの Slide::getImage オーバーロードはスケール 0.2 でレンダリングします。たとえば、720 × 540 ポイントのスライドは 144 × 108 ピクセルのサムネイルになります。出力サイズを制御するには、スケール係数を使用するオーバーロードまたは以下に示す明示的な画像サイズを使用してください。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 |
|---|---|
![]() |
![]() |
この例では、Default は中間色が明るくなり、PowerPointUI は中間色が暗くなります。差はグラデーションの色とストップ位置に依存します。
標準の Aspose.Slides 出力が目的に合う場合は Default を選択してください。PowerPoint の外観に合わせたい場合は PowerPointUI を試してください。両方の出力を比較し、目的の結果に最も近い方を選びましょう。どちらのモードが常に優れているわけではありません。
よくある質問
特定の図形(チャートや画像など)だけをエクスポートしたい場合、スライド全体ではなくどうすればよいですか?
Aspose.Slides は 個々の図形のサムネイル生成 をサポートしており、図形を PNG 画像としてレンダリングできます。
サーバー上で並列変換はサポートされていますか?
はい。スレッドまたはプロセスごとに別々のプレゼンテーションインスタンスを使用してください。スレッド間で単一インスタンスを共有しない。
PNG エクスポート時の評価版の制限は何ですか?
評価版モードでは出力画像に透かしが付加され、その他の制限 が適用されます。ライセンスを適用するとこれらの制限は解除されます。

