PowerPoint スライドを .NET で画像に変換する

はじめに

Aspose.Slides for .NET は、PowerPoint および OpenDocument のプレゼンテーションから個々のスライドを PNG、JPEG、GIF、TIFF などの画像形式でレンダリングできます。

スライドを画像に変換するには、以下の手順を実行します。

  1. Presentation クラスでプレゼンテーションを読み込みます。
  2. レンダリングしたいスライドを選択します。
  3. 必要に応じて、RenderingOptions または TiffOptions クラスでレンダリングを設定します。
  4. GetImage メソッドを呼び出します。これにより IImage オブジェクトが返されます。
  5. IImage.Save メソッドを呼び出し、ImageFormat の値で出力形式を指定します。

スライドを PNG 画像に変換する

最もシンプルな変換はデフォルトのレンダリング設定を使用します。生成された IImage オブジェクトはメモリ上で処理することも、ファイルに保存することもできます。

次の C# の例は最初のスライドをレンダリングし、PNG 画像として保存します。

using Aspose.Slides;

using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage();
image.Save("Slide_0.png", ImageFormat.Png);

カスタムサイズでスライドを画像に変換する

正確なピクセルサイズでスライドをレンダリングするには、Size 値を受け取る GetImage のオーバーロードを使用します。

次の例は 1820 × 1040 ピクセルの JPEG 画像を作成します。

using System.Drawing;
using Aspose.Slides;

var imageSize = new Size(1820, 1040);

using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage(imageSize);
image.Save("Slide_0.jpg", ImageFormat.Jpeg);

ノートとコメント付きスライドを画像に変換する

デフォルトでは、スライド画像にノートやコメントは含まれません。NotesCommentsLayoutingOptions オブジェクトを RenderingOptions.SlidesLayoutOptions プロパティに割り当てることで、ノートやコメントの表示位置を制御できます。

次の例は、スライドの下部に切り詰めたノートを、右側にコメントを配置します。

using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;

var scaleX = 2f;
var scaleY = scaleX;

var layoutOptions = new NotesCommentsLayoutingOptions
{
    NotesPosition = NotesPositions.BottomTruncated,
    CommentsPosition = CommentsPositions.Right,
    CommentsAreaWidth = 500,
    CommentsAreaColor = Color.AntiqueWhite
};

var renderingOptions = new RenderingOptions { SlidesLayoutOptions = layoutOptions };

using var presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage(renderingOptions, scaleX, scaleY);
image.Save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);

TIFF オプションを使用したスライドの画像変換

TiffOptions クラスを使用すると、レンダリングされた TIFF 画像のサイズ、解像度、その他のプロパティを制御できます。

次の例は、最初のスライドを 2160 × 2880 ピクセル、300 DPI の TIFF 画像としてレンダリングします。

using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;

var tiffOptions = new TiffOptions
{
    ImageSize = new Size(2160, 2880),
    DpiX = 300,
    DpiY = 300
};

using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];

using var image = slide.GetImage(tiffOptions);
image.Save("output.tiff", ImageFormat.Tiff);

すべてのスライドを画像に変換する

スライドコレクションを反復処理して、プレゼンテーション全体を一連の画像に変換します。特に除外しない限り、非表示スライドも含まれます。

次の例は、すべてのスライドを横方向・縦方向ともに倍率 2 の JPEG 画像としてレンダリングします。

using Aspose.Slides;

var scaleX = 2f;
var scaleY = scaleX;

using var presentation = new Presentation("Presentation.pptx");

var slideCount = presentation.Slides.Count;
for (var index = 0; index < slideCount; index++)
{
    var slide = presentation.Slides[index];
    using var image = slide.GetImage(scaleX, scaleY);
    image.Save($"Slide_{index}.jpg", ImageFormat.Jpeg);
}

拡張メタファイル出力の作成

拡張メタファイル (EMF) は、Microsoft Office や Windows メタファイルをサポートする他の Windows アプリケーションとベクターベースのグラフィックをやり取りする必要がある場合に便利です。ピクセルベースの画像とは異なり、EMF はベクタードローイング操作を保持でき、拡大縮小してもシャープさが失われません。ただし、EMF は主に Windows メタファイル対応アプリケーション向けの互換形式であり、汎用的な交換フォーマットではありません。また、ビットマップ画像や一部のエフェクトなどの複雑なスライドコンテンツは、ベクターメタファイルコンテナ内でラスタライズされた要素として格納されることがあります。

スライドを EMF にエクスポートする

ISlide.WriteAsEmf メソッドは、ISlide を EMF 形式のターゲット ストリームに書き込みます。次の例はプレゼンテーションを読み込み、最初のスライドを選択し、EMF ファイル ストリームに書き込むものです。

using System.IO;
using Aspose.Slides;

using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];

using var emfStream = File.Create("Slide_0.emf");
slide.WriteAsEmf(emfStream);

呼び出し元は ISlide.WriteAsEmf に渡したストリームの所有権を持ち、ストリームを閉じるか破棄する必要があります。Aspose.Slides はストリームの現在位置から書き込みを行い、ストリームはオープンしたままになります。

SVG 画像を EMF に変換してプレゼンテーションに追加する

ISvgImage.WriteAsEmf を使用して SVG コンテンツを EMF に変換します。生成されたバイト列は IImageCollection.AddImage でプレゼンテーションに追加でき、IShapeCollection.AddPictureFrame でスライドに配置できます。

次の例は SVG マークアップから SvgImage を作成し、メモリ内 EMF に変換し、最初のスライドにメタファイルを挿入してプレゼンテーションを保存します。

using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;

var svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
var svgImage = new SvgImage(svgContent);

using var presentation = new Presentation();
var slide = presentation.Slides[0];

using var emfStream = new MemoryStream();
svgImage.WriteAsEmf(emfStream);

emfStream.Position = 0;
var image = presentation.Images.AddImage(emfStream);
slide.Shapes.AddPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);

presentation.Save("Presentation_with_emf.pptx", SaveFormat.Pptx);

ISvgImage.WriteAsEmf は宛先ストリームの所有権を取得しません。書き込み後、ストリーム位置は生成データの末尾にあります。上記のように、同じシーク可能ストリームをリーダーに渡す前に Position を先頭にリセットしてください。ストリームはコンシューマが読み取りを完了するまで開いたままにし、使用後に破棄します。あるいは ToArray を呼び出して返されたバイト配列を IImageCollection.AddImage に渡すこともできます。ToArray は現在のストリーム位置に関係なく完全なバッファを返します。

EMF の生成は選択された Aspose.Slides for .NET ビルドがサポートするオペレーティング システム上で利用可能ですが、フォントやネイティブ グラフィックスの依存関係が利用できない場合、プラットフォーム間でレンダリング結果が異なることがあります。ソース コンテンツで使用されているフォントをインストールするか、適切な代替フォントを設定し、プラットフォーム要件 に従って Aspose.Slides パッケージを構成し、対象の EMF 消費アプリケーションで結果を検証してください。Linux や macOS のアプリケーションは、Windows メタファイルの表示・編集サポートが限定的または一貫性がないことが多いです。

カラー絵文字のレンダリング

FAQ

Aspose.Slides はアニメーション付きスライドのレンダリングをサポートしていますか?

いいえ。GetImage メソッドはスライドの静止画像を生成し、アニメーションはエクスポートされません。

非表示スライドを画像としてエクスポートできますか?

はい。非表示スライドも通常のスライドと同様にレンダリングできます。上記の例のように処理ループに含めてください。

スライド画像には影やその他のエフェクトが保持されますか?

はい。Aspose.Slides はスライド画像内で影、透明度、その他サポートされているグラフィック効果をレンダリングします。