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
グラフで見る動画投稿の傾向 - アイドルマスター編
グラフで見る動画投稿の傾向 - VOCALOID編
ニコニコ動画に投稿された動画の数を、タグ別・日別で集計してみました。投稿の傾向は、必ずしも、動画ランキングの傾向とは一致していないようです。また、世間では、VOCALOIDに関するさまざまな話題がありましたが、その影響が投稿数にはあまり反映されていないように見えます。
データの見方ですが、
・縦軸: 1日あたりの投稿数(1ピクセル=1投稿)
・横軸: 2007/6/9を0とする経過日数(1ピクセル=1日)
水色の縞々の背景は、日曜日始まりの1週間分をあらわしています。また、各グラフの下部の数字は月をあらわしています。データの収集は、30秒に1リクエスト程度のゆっくりしたペースで行ったので、1日程度のずれがあります。
more ...
データの見方ですが、
・縦軸: 1日あたりの投稿数(1ピクセル=1投稿)
・横軸: 2007/6/9を0とする経過日数(1ピクセル=1日)
水色の縞々の背景は、日曜日始まりの1週間分をあらわしています。また、各グラフの下部の数字は月をあらわしています。データの収集は、30秒に1リクエスト程度のゆっくりしたペースで行ったので、1日程度のずれがあります。
more ...
TOP PAGE △