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
コメント
全くの素人の質問で恐縮です。
「PPTスライドを画像として保存」したくてここに行き着きました。
サンプルをダウンロードして「exe」を実行したのですが、2~3行のスクリプトが表示されて終わってしまいます。
画像も作成されていません。
readme.txtには、「動作には Microsoft Office PowerPoint 2003 が必要です」と書かれていますが、それ以外に何か必要でしょうか。例えば、開発環境とかが必要でしょうか。
素人の質問で恐縮です。
アドバイス等いただければありがたいのですが。
horimari
「PPTスライドを画像として保存」したくてここに行き着きました。
サンプルをダウンロードして「exe」を実行したのですが、2~3行のスクリプトが表示されて終わってしまいます。
画像も作成されていません。
readme.txtには、「動作には Microsoft Office PowerPoint 2003 が必要です」と書かれていますが、それ以外に何か必要でしょうか。例えば、開発環境とかが必要でしょうか。
素人の質問で恐縮です。
アドバイス等いただければありがたいのですが。
horimari
| horimari | EMAIL | URL | 10/05/23 16:07 | f33nNMdY |
コメントする
この記事のトラックバックURL
http://tmp.junkbox.info/tb.php/47
トラックバック
TOP PAGE △