解説 †ディレクトリ「/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
実行結果 † |