C#でPowerPointファイルを画像として保存する
Microsoft PowerPoint 11.0 Object Library を利用すると、PowerPointファイルの各スライドを画像として保存することが比較的容易に実現できます。画像形式としては、bmp, png jpg, gif, tif, wmf などが使えるようです。画像サイズも指定できます。なお、メタファイル(wmf)形式を指定するとベクトルデータとして出力が可能です。ただし、ファイルの画像サイズは無視されるようです。
サンプルコードは以下のような感じになります。エラー処理はあまりまじめにやっていないので、適宜追加してください。
using System;
using System.IO;
using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
namespace ppt2img
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 4)
{
Console.WriteLine("PowerPointファイルを画像に変換します");
Console.WriteLine();
Console.WriteLine("ppt2img [PowerPointファイル] [画像形式] [幅] [高さ]");
Console.WriteLine("例) ppt2img test.ppt png 640 480");
return;
}
// 引数を読み込む
string filename = Path.GetFullPath(args[0]);
string filetype = args[1];
int width = Convert.ToInt32(args[2]);
int height = Convert.ToInt32(args[3]);
// PowerPointファイルを開く
ApplicationClass app = new ApplicationClass();
Presentation ppt = app.Presentations.Open(filename,
MsoTriState.msoFalse,
MsoTriState.msoFalse,
MsoTriState.msoFalse);
// スライド枚数を取得
int slides = ppt.Slides.Count;
// 保存先作成
string outputPath = Directory.GetCurrentDirectory() + @"output";
Directory.CreateDirectory(outputPath);
// 画像として出力
for (int i = 1; i <= slides; i++)
{
string outputName = outputPath + "p"
+i.ToString().PadLeft(5,'0') + "." + filetype;
ppt.Slides[i].Export(outputName, filetype, width, height);
}
// 後処理
ppt.Close();
}
}
}
PowerPoint 2003 での動作を確認していますが、他のバージョンでの動作は未確認です。
サンプルのダウンロード (Visual C# 2008 Express, サンプルの実行には .NET Framework 2.0, 3.0, 3.5 のいずれかが必要です)
(2008/06/30) ppt2img v1.0
サンプルコードは以下のような感じになります。エラー処理はあまりまじめにやっていないので、適宜追加してください。
using System;
using System.IO;
using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
namespace ppt2img
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 4)
{
Console.WriteLine("PowerPointファイルを画像に変換します");
Console.WriteLine();
Console.WriteLine("ppt2img [PowerPointファイル] [画像形式] [幅] [高さ]");
Console.WriteLine("例) ppt2img test.ppt png 640 480");
return;
}
// 引数を読み込む
string filename = Path.GetFullPath(args[0]);
string filetype = args[1];
int width = Convert.ToInt32(args[2]);
int height = Convert.ToInt32(args[3]);
// PowerPointファイルを開く
ApplicationClass app = new ApplicationClass();
Presentation ppt = app.Presentations.Open(filename,
MsoTriState.msoFalse,
MsoTriState.msoFalse,
MsoTriState.msoFalse);
// スライド枚数を取得
int slides = ppt.Slides.Count;
// 保存先作成
string outputPath = Directory.GetCurrentDirectory() + @"output";
Directory.CreateDirectory(outputPath);
// 画像として出力
for (int i = 1; i <= slides; i++)
{
string outputName = outputPath + "p"
+i.ToString().PadLeft(5,'0') + "." + filetype;
ppt.Slides[i].Export(outputName, filetype, width, height);
}
// 後処理
ppt.Close();
}
}
}
PowerPoint 2003 での動作を確認していますが、他のバージョンでの動作は未確認です。
サンプルのダウンロード (Visual C# 2008 Express, サンプルの実行には .NET Framework 2.0, 3.0, 3.5 のいずれかが必要です)
(2008/06/30) ppt2img v1.0
TOP PAGE △