komeの備忘録

東大院卒外資ITエンジニアの技術ブログ

C#でPowerPointに画像を挿入

C#でPowerPointシリーズ第4弾。
前回のコードを流用する。

(using PPt = Microsoft.Office.Interop.PowerPoint;)
(using Microsoft.Office.Core;)

string pptxPath = @"C\sample.pptx";
var app = new PPt.Application();
var pres = app.Presentations;
var file = pres.Open(pptxPath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

file.Slides[1].Duplicate();
file.Slides[1].MoveTo(file.Slides.Count);

// ここから
var l = /* 画像のドキュメント上での左位置 */;
var t = /* 画像のドキュメント上での上位置 */;
var w = /* 画像のドキュメント上での幅 */;
var h = /* 画像のドキュメント上での高さ */;
string photoPath = @"C\:sample.jpg";

var newPhotoShape = file.Slides[2].Shapes.AddPicture(photoPath, MsoTriState.msoFalse, MsoTriState.msoCTrue, l, t, w, h);
newPhotoShape.Name = "newphoto";
// ここまで

file.Save();
file.Close();


今回は以下のメソッドにてスライドに画像を挿入している。

var newPhotoShape = file.Slides[2].Shapes.AddPicture(photoPath, MsoTriState.msoFalse, MsoTriState.msoCTrue, l, t, w, h);


AddPictureメソッドの引数の意味は以下のとおりである。

  • 第1引数: 挿入する画像のパス(string)
  • 第2引数: 画像ファイルへのリンクをするかどうか(MsoTriState)
  • 第3引数: リンクされた画像が挿入されたドキュメントとともに保存されるかどうか。第2引数をmsoFalseにした場合、第3引数はmsoTrueにしなければならない。(MsoTriState)
  • 第4-7引数: 左位置、上位置、画像の幅、画像の高さ(float)


つまり今回は、fileで指定されたPowerPointファイルの2枚目のスライドに、photoPathで指定されたパスにある画像を左位置がl、上位置がtに幅w、高さhの値で挿入している。


なおAddPictureメソッドの次の行において画像を挿入したシェイプに名前を付けている。
こうすることで、挿入したレイヤーを後に使いやすくしている。

(C) komee.org