解説 †ディレクトリ「/data/picture/2015」にある「*.jpg」にマッチする画像ごとにPowerPointのページを作って片っ端から画像を張り付けていくプログラムです。 PowerPointのページタイトルは連番を振ってます。 何に使っているかは秘密です... ポイントはページサイズをcmからピクセル(pixel)に変換しているところです。 Win32OLEではPowerPointのサイズとか画像の位置をpixelで扱っているのですが、アプリだとcmで扱っているのでppc (pixel per cm)の単位を出して変換してます。 参考にしたのは。 https://davis.gfd-dennou.org/rubygadgets/ja/?(Tips)+PowerPoint+%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%BC%AB%C6%B0%C0%B8%C0%AE とVBAPPT9.CHM。 追記 (2015/02/09) †PHPでも結構簡単にWIN32OLEを使えることが判明。PHPでディレクトリにある画像を片っ端からPowerPointに貼り付け ソースコード †require 'win32ole' def getAbsolutePath(path) fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.GetAbsolutePathname(path) end pp = WIN32OLE.new("PowerPoint.Application") pp.Visible = true slides = pp.Presentations.add width = slides.pageSetup.slideWidth height = slides.pageSetup.slideHeight ppc = width / 25.4 i = 1 j = 1 Dir.chdir("/data/picture/2015/") Dir.glob("*.jpg") do |f| slide = slides.Slides.Add(i, 11) slideShape = slide.Shapes title = sprintf("2014-%03d", j) slideShape.Title.TextFrame.TextRange.Text = title img = getAbsolutePath(f) picture = slideShape.AddPicture(img, false, true, 10, 10) picture.LockAspectRatio = true picture.left = 0.79 * ppc picture.top = 4.12 * ppc picture.width = 23.81 * ppc i = i + 1 if i % 2 == 1 then j = j + 1 end end 実行結果 † |